Crea un Impresionante Sistema Ambilight para Monitor con Arduino
Componentes y materiales
| Componente | Cantidad |
|---|---|
| Arduino Nano R3 | 1 |
| Arduino UNO | 1 |
| Tira LED Direccionable WS2812 (Digilent) | 1 |
Aplicaciones y servicios online
- Arduino IDE
Sobre el proyecto
Hola amigos, espero que estén bien. Hoy les mostraré cómo hacer un Ambilight para TV usando Arduino.
Este es un proyecto muy fácil. No entraré en demasiado detalle sobre cómo funciona cada parte, porque he escrito información en mi blog: https://www.diyprojectslab.com/make-tv-ambilight-w...
Pero deberías poder hacerlo funcionar con la información dada en este instructable.
- Software Ambibox en PC (gratis, solo Windows)
- Arduino con un script simple que usa la librería FastLED (~3$)
- 50 LEDs RGB WS2811 (~13$) - fuente de alimentación opcional
Esta configuración es muy barata pero solo funciona en PC.
Gracias NextPCB por el apoyo.
NOTA
Linux o MAC no son compatibles. El software Ambibox que uso solo está disponible en Windows (para aplicaciones autónomas existe una variante con Raspberry Pi, bastante cara).
Los LEDs funcionan bastante bien y sin lag notable en el escritorio y al ver películas. Los juegos son otra historia.
Si el juego se ejecuta en modo pantalla completa, el software la mayoría de las veces no podrá capturar la imagen. Pero el modo sin bordes funciona (ten en cuenta la CPU adicional necesaria ~5%).
Paso 1: Material necesario
- Tira LED WS2812B
- Arduino Nano
- Mini protoboard
- Cables de conexión
- Terminal a conector DC
- Mini USB a USB
- Fuente de alimentación 5V para los LEDs
- Una computadora
- Arduino IDE
- Cable de programación
Gracias NextPCB: Este proyecto se completó exitosamente gracias a la ayuda y soporte de NextPCB. Si tienes un proyecto PCB, visita su web para descuentos y cupones.
Paso 2: LED RGB
La parte más importante son los LEDs RGB con controladores individuales. No importa qué controlador de LED RGB consigas, mientras sean compatibles con la librería FastLED. Aquí el enlace a chips soportados: https://github.com/FastLED/FastLED/wiki/Overview
Los más comunes son WS2811 o WS2812 por ser baratos y fáciles de usar. Se venden en al menos dos tipos: como bombillas sueltas (12mm) con espaciado variable ~10cm máx, o como tiras LED (con adhesivo) por metro con espaciado fijo (30/60 o más LEDs/metro).
Paso 3: Montar tira LED en TV
Primero mide el tamaño de tu monitor por detrás para ver cuántos LEDs necesitas. Deja ~1cm en cada borde para que la tira no se vea. Corta la tira LED a la medida. Cada LED es direccionable individualmente, así que puedes cortar después de cada LED en el punto marcado.
Une las 4 tiras para que actúen como una sola tira flexible. Suelda +5V a +5V, DIN a DIN y GND a GND. IMPORTANTE: Asegúrate que las flechas de dirección de la tira apunten correctamente, si no nada funcionará.
Paso 4: Conectar el Arduino
Conecta el pin DIN al pin 5 del Arduino (en la imagen usé cable blanco para tierra y negro para datos por error; el cable de datos va al pin 4 del Arduino). Opcional: conecta GND del Arduino a GND de la fuente si usas fuente separada.
Conecta el Arduino al PC e instala drivers si hace falta. Asumimos que sabes compilar y subir código. Si no, busca tutoriales online.
Paso 5: Las conexiones
Solo 3 conexiones para WS2811/12: 5V al correspondiente en LEDs, GND de fuente a GND Arduino y GND LEDs, y línea de datos de LEDs a un puerto digital del Arduino (el número no importa, pero recuérdalo).
Paso 6: Software
Adalight + Perismatic. Descarga el código Adalight para Arduino (abajo). Ábrelo en Arduino IDE y asegúrate de tener instalada la librería FastLED. En el código define el pin (en mi caso pin digital 4) y cantidad de LEDs (en mi caso 60). Compila, selecciona puerto COM y sube.
Luego ajusta cada color hasta que coincida con tu pared (en mi caso blanco). Dale a siguiente y listo. Reproduce cualquier video de prueba RGB y ¡a disfrutar del efecto AMBILIGHT!
La aplicación también tiene efecto de sonido donde los LEDs parpadean según la música.
Visita mi web DiY Projects Lab con más de 25 proyectos detallados.
Código
Código Arduino (Adalight)
#include "FastLED.h"
#define NUM_LEDS 240
#define DATA_PIN 6
#define serialRate 115200
uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i;
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
LEDS.showColor(CRGB(255, 0, 0)); delay(500);
LEDS.showColor(CRGB(0, 255, 0)); delay(500);
LEDS.showColor(CRGB(0, 0, 255)); delay(500);
LEDS.showColor(CRGB(0, 0, 0));
Serial.begin(serialRate);
Serial.print("Ada\n");
}
void loop() {
for(i = 0; i < sizeof prefix; ++i) {
waitLoop:
while (!Serial.available()) ;;
if(prefix[i] == Serial.read()) continue;
i = 0; goto waitLoop;
}
while (!Serial.available()) ;; hi=Serial.read();
while (!Serial.available()) ;; lo=Serial.read();
while (!Serial.available()) ;; chk=Serial.read();
if (chk != (hi ^ lo ^ 0x55)) { i=0; goto waitLoop; }
memset(leds, 0, NUM_LEDS * sizeof(struct CRGB));
for (uint8_t i = 0; i < NUM_LEDS; i++) {
byte r, g, b;
while(!Serial.available()); r = Serial.read();
while(!Serial.available()); g = Serial.read();
while(!Serial.available()); b = Serial.read();
leds[i].r = r; leds[i].g = g; leds[i].b = b;
}
FastLED.show();
}
Esquemático
Proceso de manufactura
- Monitor de Frecuencia Cardíaca IoT en Tiempo Real con Arduino y MAX30100
- Detector de frecuencia de audio con Arduino – Mide los picos de sonido más intensos
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
- Construye un Temporizador Regresivo Fiable con Arduino y Pantalla de 7 Segmentos SparkFun
- Construye una Radio FM Compacta con Arduino Nano y RDA5807M
- Monitor de nivel de sumidero DIY con Arduino Nano, MPXV5010DP y pantalla OLED
- Construye tu Propio Coche RC Porsche con Arduino: Guía Paso a Paso
- Genera Tonos Musicales con Arduino: Guía Paso a Paso
- Sistema Avanzado de Monitorización Doméstica con Arduino Mega y Sensores IoT
- Construye un Monitor de Energía Inteligente Fiable con Arduino UNO – Guía Paso a Paso
- Construye una Brújula Digital en Tiempo Real con Arduino y Processing