Convertir imágenes a hexadecimal para MicroPython

Ayer me cruce con un problema que quizás Uds ya les ocurrió; necesitaba crear un carácter personalizado para mostrarlo en el display LCD de 2×16.

Resulta que estoy trabajando con MicroPython. utilizando una librería para mostrar texto en el display, la librería se llama python_lcd. Para poder mostrar caracteres personalizados con esta librería es necesario primero construir un array de 8 hexadecimales, cada uno representa que puntos de las lineas horizontales estarán encendidas y apagadas. Luego se lleva a memoria este array, de manera que este disponible para su uso en el display; y por ultimo se lo muestra en pantalla indicando la dirección donde esta almacenado.

Existe una pagina en internet que permite dibujar manualmente los caracteres y luego devuelve el array necesario para mostrarlo en el display http://javl.github.io/image2cpp/; la había utilizado anteriormente y es muy útil si debemos dibujar un solo carácter. Quiero tratar de dibujar un imagen utilizando todos los caracteres del display, o en lo posible mas de uno.

El script que arme toma una imagen, lo recomendable es alimentarlo con una imagen de baja resolución y que sea blanco y negro, de manera de tener mejores resultados; recordemos que la resolución de cada carácter es de 8 lineas por 5 columnas.

El primer paso es entender que necesitamos para dibujar un carácter en el display, la librería nos pide un array de hex para mostrarlo; para construir este array, primero debemos identificar que puntos del carácter estarán encendidos por cada linea:

Luego debemos convertir estos bytes en hexadecimal y tenemos nuestro array para usarlo.

El script

El script utiliza opencv para leer la imagen que le proporcionamos, en caso de ser necesario, la redimensiona al tamaño proporcional de las columnas y filas que vamos a utilizar. Si es una imagen muy grande, es posible que se pierdan todos los detalles y tengamos una mancha en el display; por lo que vuelvo a recomendar utilizar imágenes de muy baja resolución.

Luego recorre las columnas de cada fila evaluando si se debe activar o no ese punto; y genera el array en hex.

Termina construyendo un archivo de salida, que contiene todos los caracteres y una segunda linea por cada carácter, que lo ubica en memoria.

Es necesario tener en cuenta que el script recorre las imágenes (al menos en esta primer versión) en el siguiente orden:

Por lo que si queremos dibujar en el display, seria necesario realizar, suponiendo que los caracteres se guarden en memoria siguiendo el nro. de la retícula:

lcd.putchar(chr(0)) #mostramos el carácter de la retícula 0
lcd.putchar(chr(2)) #mostramos el 2do carácter
lcd.move_to(0,1) #pasamos a la segunda linea
lcd.putchar(chr(1)) #mostramos el carácter de la retícula 1
lcd.putchar(chr(3)) #mostramos el ultimo carácter.

El script pueden descargarlo desde github

Programación de las teclas del HotKeys v1

Una vez que tenemos armado el circuito del hotkeys y montado dentro de su gabinete, sera momento de cargar el programa para que realice las acciones que deseamos.

Para ello sera necesario tener instalado Arduino IDE, se lo puede descargar desde aqui. Es importante aceptar la instalación de los drivers de Arduino. Iniciamos el IDE, por defecto tendremos los bloques de código setup() y loop() para que comencemos a programar; borramos todo dejando en blanco el contenido.

Luego tenemos que ir a la url del repositorio y al archivo llamado demo.ino. Copiamos todo el contenido del archivo, y lo pegamos dentro del IDE.

Debemos seleccionar en el IDE el tipo de placa que tenemos conectada, para ello vamos al menu Herramientas – Placa y seleccionamos Arduino Leonardo.



Luego de tener seleccionada la placa, debemos indicarle cual es el puerto que vamos a utilizar para programar:

Guardamos el archivo, para el ejemplo utilizaremos el nombre demo y lo cargamos al Arduino con el botón de la barra de menú “Subir”.

Luego que este completo el proceso, ocurrira que al presionar cada tecla escribira una leyenda: “Boton 1”, “Boton 2”, etc. Si queremos que ejecute un combinacion de teclas por ejemplo Ctrol + i para el Boton 1, debemos reemplazar:

Keyboard.begin();
Keyboard.print(“Boton 1”);
Keyboard.releaseAll();

Por lo siguiente, siempre dentro del bloque del IF:

Keyboard.begin();
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press(‘i’);
delay(100);
Keyboard.releaseAll();

Es importante al final del bloque de código utilizar Keyboard.releaseAll() para que el Arduino libere todas las teclas, de lo contrario la pc interpretará que aún se encuentran presionadas.

Si deseamos utilizar alguna otra tecla podemos ver cual es la constante que debemos ingresar aqui: https://www.arduino.cc/reference/en/language/functions/usb/keyboard/keyboardmodifiers/

Si deseamos que se presionen varias teclas, simplemente repetimos la secuencia:

Keyboard.begin();
Keyboard.press(‘i’);
Keyboard.releaseAll();
Keyboard.press(‘i’);
Keyboard.releaseAll();
Keyboard.press(‘i’);
Keyboard.releaseAll();

De esa manera se presionara tres veces la tecla i.

Instalando MicroPython en NodeMcu ESP8266

Para instalar MicroPython en NodeMcu solo tenemos que seguir unos sencillos pasos (si todo funciona bien):

  1. Instalar una herramienta llamada esptool, que vamos a utilizar para cargar el firmware.
    Se instala realizando: pip install esptool
  2. Luego de tener instalada la herramienta, debemos borrar el firmware actual, una vez que lo hagamos ya no podremos cargar programas utilizando el IDE de Arduino.
    Necesitamos saber cual es el puerto al que se encuentra conectado el NodeMcu, para eso les recomiendo que entren en el administrador de dispositivos.
    Desde la terminal corremos, en mi caso COM14 es el puerto que tomo el dispositivo:esptool –com COM14 erase_flash
  3. Descargamos la ultima versión del firmware desde http://micropython.org/download#esp8266 , y volvemos a utilizar la herramienta esptool para cargar el firmware. En mi experiencia, tuve mejores resultados utilizando una velocidad de transmision de 115200 y usando el parametro –verify para que valide que el firmware fue subido correctamente:esptool port COM14 baud 115200 write_flash flash_size=detect 0 esp8266-20180511-v1.9.4.bin –verify

    Una vez realizado esto ya tenemos cargado el firmware.

Armado HotKeys v1.0

Muchas Gracias por adquirir HotKeys v1, esperamos que le sea de utilidad y se divierta armando el kit.

Los componentes que recibirá en el kit son:

Para ensamblar el kit se deben seguir los siguientes pasos:

1. Doble las patas de las resistencias de manera que queden en 90° y ubiquelas en las posiciones R1, R2, R3 y R4; luego doble los contactos  de las resistencias de manera que no se caigan, como se muestra en la foto

Con un alicate remueva el excedente de los contactos de las resistencias.

2. En caso que no el Arduino Pro Micro no tenga soldado los contactos es necesario soldarlos. Luego se lo ubica con el puerto usb hacia el lado externo del pcb, como se muestra en la foto:

Recomendamos soldar pines opuestos del Arduino de forma que quede firme, y una vez que este en su lugar, soldar el resto de los pines. Con un alicate remueva el excedente de los pines del Arduino.

3. Ubique las teclas mecánicas sobre el pcb, hay una sola forma de colocarlas por lo que no tendrá inconvenientes. Ayudese por el gabinete impreso para mantener en su lugar las teclas hasta que se encuentren soldadas.

Con un alicate remueva el excedente de los contactos de las teclas.

4. Todos los leds deben ir con la pata mas larga hacia el lado del Arduino. Se ubican por sobre las teclas, en los dos orificios centrales de forma que atraviesen las teclas y el pcb, luego al igual que las resistencias se deben doblar los contactos para evitar que se caigan.

5. Lo ubicamos dentro del gabinete, prestando atención a los pines plásticos

6. Antes de colocar las keycaps, y debido a que el teclado esta pensado para ocupar el minimo espacio disponible, es necesario limar un poco uno de los bordes para que puedan entrar adecuadamente. Recomendamos utilizar una lija fina.

 

7. Una vez que este ensamblado el kit lucira similar a la imagen

8. Debemos cargar el sketch de ejemplo, para ello se tiene que descargar desde el repositorio https://github.com/gsampallo/hotkeysV1

Será necesario el Arduino IDE instalado, y en el mismo instalar la libreria Arduino HID Project, para instalarla desde el Arduino IDE debe ir a Programa – Incluir Libreria – Gestionar Libreria, busque HID Project e instale la librería.

Luego se debe seleccionar en el Arduino IDE la placa adecuada, para ello desde el menu Herramientas – Placas, seleccione Arduino Leonardo. Conecte el Arduino a la pc y seleccione el puerto COM correspondiente al Arduino.

Recomendamos ver primer el sketch llamado Demo.

 

 

 

 

 

 

 

AlarmaDoor V2

Hace poco se publico la segunda versión de nuestro pcb AlarmaDoor, con importante cambios respecto a la versión anterior, hacemos un pequeño repaso sobre los cambios:

  • Se redujo el tamaño del pcb
  • La fuente de alimentación ahora es externa y el regulador filtra mejor.
  • Se agrego un jumper que permite seleccionar el tipo de señal a recibir en uno de los sensores.

Estos cambios junto con la versión del firmware hacen que la nueva versión de AlarmaDoor tenga múltiples usos y aplicaciones. En breve publicare algunos ejemplos.

Programar Attiny85 con Arduino Uno

Me interese en este micro buscando una manera de lograr que algunos proyectos sean fisicamente más pequeños, al no necesitar todos los puertos del Arduino UNO o del Nano, era una buena idea utilizarlo.

El primer paso consiste en cargar el sketch Arduino ISP en nuestro Arduino Uno para que quede listo para programar el Attiny. Para ello abrimos el IDE, vamos a Archivos – Ejemplos – ArduinoISP – ArduinoISP, y lo subimos.

Luego conectamos Attiny de la siguiente manera:

Contando el pin 1 desde el que tiene la marca:

Attiny85 Pin 1  -> Arduino Pin 10
Attiny85 Pin 4  -> Arduino GND
Attiny85 Pin 5  -> Arduino Pin 11
Attiny85 Pin 6  -> Arduino Pin 12
Attiny85 Pin 7  -> Arduino Pin 13
Attiny85 Pin 8  -> Arduino 5v VCC

Finalmente colocamos un capacitor de 10uf del pin RESET del Arduino al GND, tomando en cuenta la polaridad del capacitor.

En el Arduino IDE, debemos cargar la URL en el gestor de tarjetas:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Vamos a Herramientas – Placa – Gestor de tarjetas, buscamos Attiny e instalamos el paquete correspondiente.

Luego seleccionamos la tarjeta Attiny85, microprocesador Attiny85, 8 mhz interno, y el puerto correspondiente al que este conectado el Arduino UNO.

Finalmente podemos cargar el sketch. Hay que tener en cuenta que Attiny85 no tiene todos los pins de los que dispone un Arduino UNO o un Nano, con lo cual recomiendo guiarse por el pinout correspondinete:

Pasos para utilizar DoorBell

Registre su usuario en http://panel.gsampallo.com

 Una vez registrado su usuario, escanee el código QR de esta página con su teléfono. Lo llevara a una página web para asociar el dispositivo a su usuario, donde debe ingresar el alias con el que va a identificar al dispositivo, por ejemplo “timbre casa”, una descripción para más detalles y por último su usuario y clave.

Hecho esto solo queda volver a ingresar a http://panel.gsampallo.com ingrese con su usuario y clave, vaya al ítem de Administrar Dispositivos y haga clic sobre el key de su dispositivo.

Aparecerán las opciones de configuración donde podrá cargar los datos para recibir las notificaciones en su teléfono.

 

Configuración de la red wifi de los arbolitos

Buen día

Si llego hasta aqui, Felicidades! es porque Ud. es uno de los pocos poseedores de un arbolito personalizado Sampallo.

Para configurar la red wifi del arbolito, siga los siguientes pasos:

1. Conecte el arbolito con un cargador de celular.

2. Presione el botón “Configurar Wifi”  hasta que la estrella haga un breve, muy breve parpadeo, preste atención ocurrirá muy rápido.

3. Con su teléfono, busque las redes WiFi, debe aparecer una nueva red llamada OnDemandAP

4. Configura la dirección IP de la red, de manera de que su teléfono tenga la IP: 192.168.4.10, el arbolito tiene la IP 192.168.4.1

El arbolito, no tiene servicio DHCP, con lo cual no sera capaz de darle una dirección a su teléfono, Ud. debe configurarla manualmente.

 

En el tiempo que Ud. realizo esta operación el arbolito seguramente detecto que no se realizo ninguna acción.

5. Apague la red Wifi de su teléfono, vuelva a presionar el botón indicado y a conectarse a la red Wifi con su teléfono.

6. Aparecerá un mensaje en su teléfono y si no lo hace, abra el navegador e ingrese en la pagina: http://192.168.4.1

Toque la opción “Configure Wifi”, luego seleccione la red, e ingrese la clave:

 

Toque el botón “Save”.

Felicitaciones! Configuro correctamente el arbolito, ya puede disfrutar junto a su familia y amigos de las agradables melodías navideñas; recuerde no solo Ud. disfrutara de la melodía, también cada vez que toque el botón, todos los que tengan el arbolito lo harán con Ud.

Que pase una felices fiestas!