Archivo de la categoría: Sistemas Embebidos

Manejando paneles flexibles WS2812B

Manejando paneles flexibles WS2812B

Ha pasado el tiempo, y mis actuales responsabilidades no me dan el tiempo que quisiera para compartir, pero me alegra ver como Internet ha crecido y hay muchos ingenieros que tienen portales activos, que van compartiendo novedades que hacen que el mundo de la programación sea accesible para todos, además de eso realizar compras de equipos de electrónica de consumo para realizar proyectos en electrónica DIY para IoT se ha abaratado mucho, por lo que conseguir cacharros para jugar se hace no tan complicado en estos tiempos.

Y bueno desde hace un tiempo vengo viendo videos de varios youtubers conocidos que usan y programan las tiras de led WS2812B, debido a su facilidad de usar al tener solo 3 pines (GND, DATO, VCC +5V), además de poder configurarse como RGB de 24 bits (255 variaciones por cada color), por lo que hizo que me interesara en jugar con ellas. Inicialmente me animo mucho la idea de jugar con ellas de paso que le enseñaba a mi hija a hacer unas secuencias navideñas.

Para eso inicialmente pensé conseguirme unas tiras LED que en aliexpress no estan muy caras Acá un ejemplo en Aliexpress entre 10 a 15USD

Sin embargo también he visto estos otros paneles

Cuyo precio varia entre 10 a 12USD para los de 8×32 y 16×16, y lo pueden encontrar buscándolo como Panel+de+luz+LED+RGB+Flexible+WS2812B también en Aliexpress

Inicialmente me compre una tira de 5m con 30 leds por metro, y además 1 panel de 16×16 y de 32×8, solo que debido a los retrasos por la pandemia llegaron en enero, por lo que al final decidí usarlos para preparar unos mensajes en el cumpleaños de mi última hija que fue en febrero.

Quiero aclarar que mi idea no es dar más de lo mismo, y por tanto no voy a simplemente usar solo las librerías típicas para el WS2812B, sino que voy a tratar de ir paso a paso. explicando el proceso que realizado, bueno acá les hago un pequeño listado de lo que pienso ir agregando en el transcurso de estos días:

  1. Entender el funcionamiento del modelo de matriz (funciona de forma diferente al sugerido en algunos videos).
  2. Manejar el WS2812B usando al diablillo IMP electric, con la posibilidad de cambiar las imágenes usando un servicio WEBREST, el cual tengo implementado sobre tarjeta Hanna v3 con un IMP v01, Donde almaceno imágenes monocromáticas en 1 solo color y a colores usando técnicas diferentes.
Tengo almacenadas 8 imágenes monocromáticas y 8 imágenes a color. En el caso de la primera corresponde a la temperatura del modulo Hanna.
En el caso de las imágenes a color, estas están a 8 bits (256 colores) , para ahorrar tamaño en memoria.
Y tanto las imágenes a color o monocromáticas pueden enviarse directamente al IMP usando servicios webservice, y mensajes por JQuery

3. Revisar la estructura de los archivos BMP, de manera que podamos entender como estas compuestas, para de esta manera usarlas para almacenar las imágenes que queremos visualizar.

4. Usar javascript para crear nuestra estructura de datos de forma de entender como la imagen mostrada de la tortuga es el equivalente numérico al array tortuga.

local tortuga =[242,0,0,242,242,242,242,242,242,242,0,0,242,242,242,242,0,183,183,0,0,0,242,242,242,0,249,249,0,0,242,242,0,183,183,249,249,249,0,0,242,0,249,249,249,249,0,242,0,183,249,0,183,183,0,249,0,0,0,249,249,249,0,242,242,0,249,0,183,183,0,183,249,216,216,216,216,0,242,242,242,0,249,183,183,0,0,183,183,249,216,216,216,0,242,242,0,249,249,0,0,183,0,183,249,249,216,216,216,216,0,242,0,249,249,183,183,183,183,183,249,249,216,216,216,216,0,242,0,249,249,183,183,183,183,183,249,216,216,216,216,216,0,242,0,249,249,183,0,0,183,183,183,249,249,249,216,216,216,0,0,249,249,0,0,0,183,0,249,249,249,249,249,216,216,0,242,0,249,0,183,183,0,0,249,249,0,0,0,216,216,0,242,242,0,0,183,183,0,0,249,0,183,183,249,249,0,242,242,242,242,242,0,0,242,242,0,0,183,183,249,249,249,0,242,242,242,242,242,242,242,242,242,0,183,0,0,249,249,0,242,242,242,242,242,242,242,242,242,242,0,0,242,0,0,242]

* Por si no saben IMP Electric se programa en Squirrell que es un poco parecido a C y processing.

5. Crear programa para arduino, que permita la visualización de imágenes 16×16 y de mayor tamaño a 16×16. (Hasta 384×16)

  • NOTA: El tamaño de la imagen es configurable, en mi caso lo hice de esa manera, pero podrias cambiar a tu conveniencia.

6. Realizar el funcionamiento de la pantalla, pero usando el microcontrolador ESP 8285 M3 (Si me preguntan porque no uso otro, es porque eso lo tengo hace mucho tiempo, y no he tenido tiempo de usarlo), además de que posee una buena capacidad de memoria flash 1MB, por lo que no tuve problemas en almacenar imágenes grandes. (Inicialmente solo usado sin activar Wifi)

7. Migrar el programa a arduinos mas pequeños, usando el almacenamiento en FLASH con PROGMEN (Para Arduino Nano y Leonardo).

8. Activar el modulo Wifi del ESP 8285 para crear un servidor web que permita el cambio de los mensajes en pantalla, con la opción de controlarlas remotamente.

A continuación les muestro unos ejemplos del resultado.

Electric IMP

.: ELECTRIC IMP :.

electric_imp_img001

 

El IMP o diablillo como lo pueden apreciar, aunque tiene el encapsulado de una tarjeta SD, no es una tarjeta SD, sino una pequeña interfaz de desarrollo con WIFI integrado. (Costo 23 USD en la tienda SMARTMAKER y si compras en cantidad te sale hasta USD19.90)

electric_imp_img002

Internamente el modulo tiene  un procesador Cortex-M3 (125 DMIPS @ 100 MHz) y para aplicaciones pequeñas es que suficiente.

Si deseas usarlo, lo mas recomendable es adquirir una interfaz de desarrollo, las cuales hay desde 15 USD en la misma tienda.

Herramientas de desarrollo:

Programación en linea:

Respecto a las herramientas para desarrollo. Este modulo no requiere de de un software a instalar en la Desktop, ya que la programación se realiza íntegramente en linea en la pagina web del servidor http://api.electricimp.com.

Configuracion de WIFI BlinkUp:

La configuracion WIFI se pasa al equipo usando un celular Android, mediante la tecnologia BlinkUp.

Posteriormente estaré colocando ejemplos de configuración y programación de este modulo, y mientras pueden revisar el siguiente enlace Electric IMP perteneciente a Diverteka, que explica como hacer la configuración usando el API Beta (actualmente en desuso).