Página principal

WS2812B

ARDUINO

Reloj


Estaba yo el otro día navegando por la red y vi un vídeo de como hacer un reloj con una tira de LED.
El vídeo está realizado por MIRANDA, un español que hace vídeo en inglés, desde luego podemos observar que los vídeos en ingles tienen bastantes más visualizaciones. Al principio no sabía de donde era Miranda, pero el acento de su inglés le delató. Hace unos vídeos muy buenos y bien explicados.
Como no sabía de este tipo de diodos LED, me sorprendió el poder manejar un montón de LED con solo una línea de comunicaciones. Este diodo WS2812B tiene los dos pins de alimentación, y dos pins para los datos, uno de entrada y otro de salida.
Todos los diodos se colocan en serie, por lo cual los datos se transmiten desde el primer diodo hasta el último. Cada diodo se queda con los primeros 3 bytes que le llegan por el pin de entrada (DIN), y transmite los siguientes bytes al siguiente diodo mediante el pin de salida (DOUT).
Después de haber pasado un tiempo, si no se genera ninguna señal se visualizan los datos en los diodos.






Como se puede observar en la línea de tiempos, cada diodo se queda con los primeros 3 bytes que le llegan por el pin de entrada (DIN), y transmite los siguientes bytes al siguiente diodo mediante el pin de salida (DOUT).


Transmisión de 1 byte.



Transmitiendo bit 1.



Transmitiendo bit 0.

Los diodos se disponen en conjuntos de 7, cada dígito se compone de 7 elementos.
La disposición de los diodos es de 3 lineas:
    1ª línea de dos diodos, dirección de arriba hacia abajo.
    2ª línea de tres diodos, dirección de abajo hacia arriba.
    3ª línea de dos diodos, dirección de arriba hacia abajo.
Como son 4 dígitos se colocan en serie los 4 dígitos.

Una vez que se ha construido el circuito de los diodos, no toca construir el armazón de los diodos.
Cada tira de LED tiene un ancho de 10 mm, como son 3 tiras, la anchura de cada segmento es de 30 mm. Entre los dígitos de horas y minutos se colocan un LED que serán los dos puntos que parpadean cada segundo.

Todo el conjunto se une con un armazón que junta los 4 dígitos y los puntos.

Se diseña en 3D y se imprime en PLA.
Si colocásemos solo los segmentos, veríamos que no se ven bien definidos los dígitos. Para solucionar esto, colocamos un papel vegetal o semitransparente que perfila los dígitos.
Si ahora tuviese que volver a construir todo de nuevo, lo haría de una sola pieza.
También emplearía PLA blanco, refleja mejor la luz de los diodos.


Una vez construidos los display del reloj, nos toca pasar a la parte de programación.
En esta ocasión vamos a utilizar el Arduino, y empleamos la librería Adafruit NeoPixel library.
Esta librería es simple y fácil de utilizar, solo debemos de indicar el pin de salida de datos, en nuestro caso hemos utilizado el pin 13, además debemos indicar el numero de LED de la tira, y el tipo de modelo de la tira.
Adafruit_NeoPixel pixels(29,13, NEO_GRB + NEO_KHZ800);
Iniciamos la librería.
pixels.begin();
Indicamos el color de cada LED.
pixels.setPixelColor(2, pixels.Color(BRIr,BRIg,BRIb));
Una vez indicados todos los colores de cada LED, debemos indicar a la librería que mande la información a la tira de LED.
pixels.show();

He añadido 3 botones, 2 para cambiar la hora y los minutos, y el 3º para indicar el color y el brillo.
Debido a que estos modelos de diodos están pensados para verse durante el día, deben producir mucha luminosidad. El problema de este montaje es el alto consumo de los 29 LED.

En modo de luminosidad alta en color blanco, la intensidad es de 660mA, en intensidad baja es de 110.
Si queremos colores, verde, rojo o azul, el consumo va desde los 270 mA con luminosidad alta, a los 60 mA a luminosidad baja.
Debemos recordar que el USB 2.0 solo proporciona una corriente máxima de 500mA, por lo cual deberíamos utilizar una fuente externa.

La exactitud de este reloj no es precisamente buena, el montaje es solo una prueba del diodo WS2812B.
Para los que requieran un reloj preciso, les recomiendo uno de mis anteriores montajes:

remson.html

marelo.html




No he querido realizar el esquema debido a su simplicidad.
El pin 13 del arduino al DATAIN de la tira de LEDs.
Y los tres botones a los pins A0, A1, A3 del arduino.
La alimentación de 5V y GND a los pins del arduino.

Este montaje también se puede cambiar para hacer un marcador deportivo.

PROGRAMA_LIBRERÍAS

VIDEO

Saludos.
Juan Galaz

Bibliografía:

https://github.com/adafruit/Adafruit_NeoPixel

https://www.youtube.com/watch?v=4z82I-032zs

remson.html

marelo.html