Cómo construir una lámpara de nube con un rayo reactivo de sonido
Hace unos meses, una lámpara de ánimo de truenos y relámpagos de $ 3000 se volvió viral en la comunidad de fabricantes. Era una luz increíblemente hermosa, pero el precio lo dejaba fuera del alcance de cualquiera con su cordura intacta. Lo que haremos hoy no es exactamente lo mismo: estamos haciendo algo más práctico, en lugar de una obra de arte, pero será mucho más interesante y más personalizable..
Elegí omitir a los oradores suponiendo que probablemente ya tenga un buen par de parlantes en su habitación que preferiría usar, y francamente poner un parlante en una lámpara es algo extraño. En su lugar, agregaré un micrófono que permitirá que el rayo reaccione automáticamente a los ruidos fuertes, ya sea de una tormenta eléctrica real o de una banda sonora reproducida desde su PC o estéreo..
También vamos a utilizar una hebra de LED de neopixel RGB completos (WS2812B), por lo que podemos reproducir colores distintos al blanco y tener control sobre cada píxel.
Advertencia: la fuente de alimentación que he usado en este proyecto tiene terminales de tornillo que se conectan a un cable de CA activo. Si no se siente seguro al conectar un enchufe, asegúrese de comprar una fuente de alimentación completamente cerrada. Como mínimo, deberá incluir la PSU dentro de un cuadro de proyecto seguro.
Paso 0: Introducción
Aquí hay un video de demostración del proyecto terminado. He implementado algunos modos diferentes hasta el momento, desde el rayo estándar hasta una nube ácida trippy y una lámpara de estado de ánimo que se desvanece en color, que se puede elegir desde el control remoto.
El código completo y las bibliotecas necesarias están disponibles para descargar desde este repositorio de Github.
Paso 1: Necesitarás
- WS2812B, por lo general a un precio de alrededor de $ 50 por 5 metros. No se preocupe si tiene otro tipo de filamento de Neopixel, es casi seguro que sea compatible con la interfaz FastLED, pero su cableado puede ser diferente (es posible que necesite una línea de sincronización además de la señal, por ejemplo).
- Fuente de alimentación de 5V, 10A +: compré algunas unidades de 15A por $ 11 cada una. Toman una entrada de CA de 120-240 V y producen una salida de 5 V considerable que será más suficiente para alimentar a todos nuestros píxeles con brillo completo, y el Arduino.
- Cableado eléctrico, enchufe e interruptor en línea.
- Recinto del proyecto
- Dos arduinos. $ 10 clones de funduino están bien. El segundo es necesario para el control remoto, mientras que el primero controla la lógica principal y los LED.
- Dos resistencias de 2,2 k (o aproximadamente) ohmios: el valor exacto no importa tanto, alrededor de 1,5 k hasta 47 k debería funcionar.
- Tablero de circuitos
- Receptor IR TSOP4838
- Control remoto por infrarrojos: compré al por mayor por aproximadamente $ 2 cada uno, pero cualquier control remoto debería funcionar con modificaciones de código.
- Módulo de micrófono grande
- Chatarra de madera MDF para cortar su base, y un rompecabezas.
- Material de embalaje de poliestireno / caja inserta.
- Polipropileno relleno de almohada de algodón. Saqué más que suficiente de unos cuantos cojines viejos y horribles. Si esa no es una opción, debería poder comprar algo nuevo por aproximadamente $ 10, o usar un algodón incluso más barato. Lo intenté con ambos: el algodón necesitaba más trabajo para sacarlo y no era tan esponjoso, pero en caso de apuro, funcionará..
- Cadena y ganchos para colgar la nube: deben soportar más de 5 kg..
- Pistola de pegamento con ajuste de baja temperatura
- Spray glue: es más fácil pegar el relleno en tu nube con esto, pero una pistola de pegamento también podría funcionar.
El costo total es de alrededor de $ 100 sin incluir las herramientas, pero la mayor parte de esto lo conseguí alrededor de la casa. Todos los componentes electrónicos están comúnmente disponibles; El micrófono se puede encontrar en un kit de sensores o se puede comprar individualmente..
Paso 2: Cortar la Base
Recorte una base áspera de un trozo de MDF con una sierra de calar - la forma exacta obviamente depende de usted, pero por alguna razón, una nube tiene forma de frijol en mi mente. Vamos a colocar algunos ganchos en este para colgar, pero de lo contrario, solo proporciona una base sólida sobre la cual construir. El área central se reservará para la electrónica, la fuente de alimentación y para el manejo de la cadena, así que asegúrese de tener suficiente espacio para colocar al menos el gabinete del proyecto con algunos ganchos que lo rodean..
Paso 3: Capa sobre Poliestireno
Este es el paso más difícil y creativo, pero en realidad estamos creando algo sólido y un poco sorta En forma de nube para pegar la tira de LED en. Pegue trozos grandes de poliestireno que se adhieran a la base (y debajo de ella), utilizando un ajuste de calor bajo en su pistola de pegamento. Si no tiene un ajuste bajo, apague la pistola de calor y deje que se enfríe un poco antes de pegar. Si la temperatura es demasiado alta, simplemente se derretirá a través del material de embalaje.
Asegúrese de que cada pieza sea sólida antes de pegar la siguiente, y es mejor pegar más que no lo suficiente.
Nuevamente, recuerde dejar una cavidad lo suficientemente grande dentro de la nube para que quepa en la electrónica, la cadena y los ganchos.
Paso 4: Talla una forma de nube 3D
Usa un cuchillo para trinchar para acicalar tu nube redondeando las esquinas y recortando el material innecesario, hasta que hayas obtenido una forma de nube tridimensional. Realmente no importa lo difícil que sea esto, ya que cubriremos todo el relleno más adelante, puede ocultar errores fácilmente..
Paso 5: Arreglar los ganchos, ordenar
Finalmente, fije tres o cuatro ganchos a la base de MDF, desde dentro de cada esquina de la cavidad de la nube. Tendrá que taladrar un pequeño orificio piloto, ya que el MDF es difícil de atornillar directamente.
También le di a todo una simple capa de pintura en aerosol blanca para garantizar una base de color uniforme, pero no estoy seguro de que fuera realmente necesario.
Paso 6: Tiras de LED de cola
Antes de comenzar a aplicar pegamento a los LED, comience desde una nueva tira o cuente la cantidad de LED que tiene en total; tendrá que calcular cuántos ha usado más adelante en el paso de programación. Corte un pequeño agujero en el costado de su nube y pique a través de los cables que forman el comienzo de su tira de LED en la cavidad de la nube. Tenga mucho cuidado de comenzar desde el extremo correcto: las tiras de LED son sensibles a la dirección, por lo tanto, asegúrese de que las flechas de señal apunten lejos de la cavidad.
Trabajando lentamente, pegue los píxeles LED a la base de poliestireno en un patrón circular, antes de tirar de la tira hacia la base para cubrir la parte inferior. Nuevamente, no necesitas ser perfecto aquí, porque una vez que hemos difundido todo y lo hemos sofocado con relleno, todo se ve bastante impresionante de todos modos.
Utilicé un total de 85 LED, o algo más de 2,5 m, después de rodear el cuerpo principal dos veces y usé una sola cadena de LED en la parte inferior.
Paso 7: Diagrama de cableado
El cableado es complejo, pero se divide fácilmente en secciones..
Primero, conecte y asegure la fuente de alimentación, preferiblemente en un caso de proyecto separado. No voy a darte una conferencia sobre la seguridad de los cables de CA en vivo, así que voy a asumir que puedes manejar esta parte, y tienes una línea de 5V y GND..
IMPORTANTE: al programar y probar el Arduino, los 5V de su fuente de alimentación deben permanecer aislados del Arduino (aunque todos los GND están conectados) - solo debe alimentar la tira de LED, mientras que el Arduino usa el 5V suministrado por USB. Cuando haya terminado de programar, el USB se debe desconectar y ya no le proporcionará 5V al Arduino; en este punto, debe conectar el 5V de su suministro al riel de 5V en el lado izquierdo de la placa de pruebas..
Comience conectando los pines de tierra y 5 V de cada Arduino a los rieles laterales izquierdos de la placa de pruebas. Compartirán la misma fuente de alimentación, ya sea la fuente de alimentación externa que tenemos o el USB conectado a una de ellas..
A continuación, complete la sección de cableado I2C: esto es lo que permite que nuestros dos Arduinos se comuniquen. Tome los pines A4 de ambos Arduinos en una sola fila en el tablero, luego conecte una resistencia de 2.2k de esa fila al riel de 5V. Repita para A5, conectándolos en una fila separada, con otra resistencia de 2.2k de nuevo a 5V.
A continuación, conecte el receptor de IR: verifique la configuración del pin si tiene otro modelo, pero básicamente el pin de la señal debe ir a D11 en un Arduino. Subir el thundercloud_ir_receiver.ino Haga un bosquejo de este Arduino (todo el código aquí), luego desenchufe el USB ya que ya no lo necesitamos.
En el otro Arduino, conecte el Datos en pin de señal desde el inicio de su tira de LED a D6. La GND de sus LEDs debería ser común con todos los Arduinos, pero en este punto el 5V vendrá directamente de la PSU.
También en este Arduino, conecte el módulo de micrófono en A0. Subir el otro Thundercloud.ino Haga un boceto y mantenga el USB conectado por ahora mientras realiza la depuración. Comience por cambiar el NUM_LEDS variable apropiadamente.
Paso 8: Pegar en el relleno
Como paso final, pegue su relleno. No hay ninguna técnica en particular aquí, solo rocíe la nube con una capa de pegamento y agarre un puñado de relleno. Sin embargo, es más fácil trabajar con relleno si ya lo has hecho para aumentar la superficie..
Si ha usado el mismo control remoto que yo, el botón STROBE lo pone en modo de nube reactiva con sonido; FLASH es el modo de color trippy, y FADE es la lámpara de humor de color que se desvanece lentamente.
Paso 9: Explicación del código
¿Por qué dos arduinos? Tanto la programación del receptor de infrarrojos como la biblioteca de controladores de píxeles WS2818B son muy sensibles a la sincronización: si la sincronización se retrasa, la señal IR se corrompe. Al proporcionar a cada circuito su propio microcontrolador y permitirles hablar sobre el protocolo I2C, podemos garantizar que la sincronización sea perfecta en cada uno. También puede encontrar módulos IR independientes con su propio microcontrolador incorporado, pero mi investigación descubrió que en realidad cuestan más que un simple clon de Arduino y un LED IR. Thundercloud_ir_receiever no debería requerir explicación, aunque es posible que desee leer primero los conceptos básicos de I2C.
En el controlador de la nube tormentosa principal, definimos diferentes modos de funcionamiento, como ENCENDIDO (los efectos de los rayos no son activados por el sonido), NUBE (solo los sonidos están activados por el sonido), ÁCIDO (la nube muestra colores trippy) o modos de un solo color. Para definir un nuevo modo, agregue a la enumerar Primero, luego abra la consola y encuentre un botón de control remoto para asignarlo. Cada vez que presione de forma remota debe imprimir una línea de depuración. En el receiveEvent () método, asignamos esas pulsaciones de teclas a un modo, así que agregue una instrucción de cambio adicional allí. Finalmente, en lo principal. lazo() Método enrutamos esas selecciones de modo a diferentes funciones de visualización.
El código de suavizado del micrófono es originalmente de Adafruit. Lo simplifiqué para nuestras necesidades y agregué un disparador cuando se escucha un ruido más alto que el promedio..
Paso 10: Modos de rayos
Las pantallas de rayos combinan tres diferentes “tipos” de rayos para lograr algo suficientemente realista, o al menos agradable a la vista. El primer tipo es grieta(), donde cada LED se enciende brevemente entre 10 y 100 ms. El segundo tipo es laminación() - donde cada LED tiene un 10% de probabilidad de activarse, y todo el bucle se repite 2-10 veces, con un retraso de 5-100 ms entre cada ciclo. El tercer tipo es trueno, que selecciona dos secciones diferentes de la tira, cada una entre 10 y 20 LED, parpadea brevemente estas secciones de 3 a 6 veces. Examine estos métodos en detalle para ver cómo se activan los LED individuales: se utiliza la rueda de colores HSV (por lo que el blanco es H = 0, S = 0, V = 255). Te animo a modificar o escribir nuevas pantallas de rayos, y luego compartirlas en los comentarios si haces una que te guste.
Cada vez que se dispara un rayo o se ejecuta el bucle, la nube elige aleatoriamente entre los tres tipos de rayo. Finalmente, un Reiniciar() método apaga todas las luces, de lo contrario van a “recuerda” su estado anterior.
Preguntas o problemas, póngase en contacto con los comentarios y haré todo lo posible para ayudar. Si tiene una cuenta de Github, no dude en publicar errores o problemas en el rastreador de problemas. Si ha realizado alguna modificación o ha escrito algunas funciones de iluminación nuevas, comparta un enlace a su código en Gist o Pastebin.
Explorar más sobre: Arduino, iluminación inteligente.