Tabla de contenido:

LightMeUp! Control de tiras de LED de plataforma cruzada en tiempo real: 5 pasos (con imágenes)
LightMeUp! Control de tiras de LED de plataforma cruzada en tiempo real: 5 pasos (con imágenes)

Video: LightMeUp! Control de tiras de LED de plataforma cruzada en tiempo real: 5 pasos (con imágenes)

Video: LightMeUp! Control de tiras de LED de plataforma cruzada en tiempo real: 5 pasos (con imágenes)
Video: DnB Music Production for Beginners in Logic Pro Compilation 2024, Mes de julio
Anonim
LightMeUp! un control de tira de LED de plataforma cruzada en tiempo real
LightMeUp! un control de tira de LED de plataforma cruzada en tiempo real
LightMeUp! un control de tira de LED de plataforma cruzada en tiempo real
LightMeUp! un control de tira de LED de plataforma cruzada en tiempo real
LightMeUp! un control de tira de LED de plataforma cruzada en tiempo real
LightMeUp! un control de tira de LED de plataforma cruzada en tiempo real

LightMeUp! es un sistema que inventé para controlar una tira de LED RGB en tiempo real, manteniendo el costo bajo y el rendimiento alto.

El servidor está escrito en Node.js y, por lo tanto, es compatible con plataformas cruzadas.

En mi ejemplo, utilizo una Raspberry Pi 3B para uso a largo plazo, pero mi PC con Windows por motivos de demostración y depuración.

La tira de 4 pines está controlada por una placa tipo Arduino Nano, que ejecuta comandos dados en serie para enviar señales PWM a tres transistores que cambian los + 12VDC al pin de color correspondiente de la tira.

El LightMeUp! El sistema también verifica su propia temperatura, una vez que está por encima de los 60 ° C (140 ° F), enciende dos ventiladores de computadora de 12VDC integrados en la carcasa, para enfriarse y mejorar la vida útil del circuito.

¡Otra característica de LightMeUp! es iluminar una botella de Bombay-Sapphire Gin, pero ese no es el enfoque de este Instructable.

Disfruta leyendo:)

Suministros

  • Arduino Nano (o cualquier otro microcontrolador ATmega328 / de base superior)
  • Raspberry Pi 3 Modelo B con Node.js instalado (o cualquier otra computadora)
  • Tira de LED de 12V RGB de 4 pines
  • Fuente de alimentación 12V 3A
  • Cables de puente (macho-macho si usa una placa de pruebas, por supuesto)
  • Tablero (opcional)
  • 2 ventiladores de computadora de 12V CC (opcional)
  • 3x TIP120 Transistor Darlington con disipador de calor (4 si desea incluir ventiladores de refrigeración)
  • 2 LED de estado rojo y verde (opcional)
  • Resistencia basada en temperatura NTC de 6, 7K + resistencia de 6, 7K (opcional)
  • Cable de datos USB-Mini a USB 2.0 (para que Raspberry Pi se comunique con Arduino)
  • Concentrador USB con alimentación externa (opcional, solo para Raspberry Pi)

Paso 1: comprender el sistema

Entender el sistema
Entender el sistema

LightMeUp! se basa en circuitos electrónicos muy simples.

Tenemos algún tipo de computadora (en este caso una Raspberry Pi) que se comunica en serie con nuestra placa microcontroladora. Esta placa luego ejecuta comandos seriales específicos como "RGB (255, 255, 255)" que convertirían nuestra tira de LED en blanco.

Una vez que obtenemos nuestros tres valores para ROJO, VERDE y AZUL necesarios para nuestra tira de LED de 4 pines, ejecutamos analogWrite (pin, valor) para suministrar a nuestro transistor TIP120 una señal PWM.

Esta señal PWM permite que el transistor cambie el pin de color correspondiente al que está conectado el colector a tierra, en un grado específico o completamente encendido / apagado. Sí, muchos "para":)

Al mezclar las tres salidas de transistores con los pines de color de las tiras de LED, podemos crear básicamente cualquier color que queramos.

Ahora, con este entendimiento, podemos atacar el mayor desafío de este proyecto, el servidor websockets y su conexión serial a nuestro Arduino.

Paso 2: escribir el WebSocketServer

Escribiendo el WebSocketServer
Escribiendo el WebSocketServer

Ahora, tenemos que crear un tipo específico de servidor web, que nos permita transferir datos de un lado a otro sin actualizar una vez para lograr un control de tira de LED en tiempo real.

Tenga en cuenta que, por supuesto, la comunicación en tiempo real es imposible, siempre habrá al menos unos milisegundos de retraso involucrados, pero para el ojo humano es considerable como tiempo real.

Esto se puede lograr fácilmente usando la biblioteca socket.io si usa Node.js como lo hice yo. Sin embargo, siempre puedes ceñirte a tu lenguaje de programación favorito, por supuesto.

Trataremos con una conexión websocket que nos permite transferir datos de entrada como el color al que desea configurar la tira de LED, o datos de estado como "LED ENCENDIDO" bidireccionalmente sin actualizar.

Otra característica muy importante que debe tener el servidor, pero que no necesita, es un simple inicio de sesión. Basé mi inicio de sesión en un campo simple de nombre de usuario y contraseña. Luego, estos datos se envían a la ruta / login del servidor, que luego compara el nombre de usuario con una lista de usuarios (archivo.txt) y su contraseña correspondiente en su forma cifrada con SHA256. No quiere que sus vecinos se metan con su tira de LED mientras disfruta de su bebida favorita en su asiento más cómodo, ¿verdad?

Ahora viene el corazón del servidor, la comunicación en serie.

Su servidor debe poder comunicarse en serie; en Node.js, esto se puede lograr abriendo un puerto utilizando la biblioteca "serialport". Pero primero determine el nombre de su puerto arduino en su computadora que aloja el servidor. Dependiendo de su sistema operativo, los puertos tendrán diferentes nombres, p. Ej. en Windows, estos puertos se denominan puertos "COMx", mientras que en Linux se denominan "/ dev / ttyUSBx", donde x es el número del puerto USB.

Paso 3: establecer un protocolo de comandos en serie

Establecer un protocolo de comandos en serie
Establecer un protocolo de comandos en serie

En la imagen de arriba, puede ver el código IDE de Arduino real responsable del control RGB. El objetivo de este paso es hacer que su servidor autoescrito y la placa Arduino se comuniquen con éxito.

Una vez que haya abierto su puerto serie con éxito, debe poder enviar comandos a la placa que se encarga de sus deseos. Por ejemplo, si dibujamos un dedo sobre el selector de color en la página web HTML, el código RGB debe enviarse al servidor, que luego lo envía a su Arduino para que procese los valores establecidos.

Usé jscolor, tienen una gran implementación de un elemento de selección de color de alta calidad, que posee un evento llamado "onFineChange" que permite procesar los datos del selector de color tan pronto como cambien sus valores.

Recomendado: