Tabla de contenido:

Luces de fiesta portátiles: 12 pasos (con imágenes)
Luces de fiesta portátiles: 12 pasos (con imágenes)

Video: Luces de fiesta portátiles: 12 pasos (con imágenes)

Video: Luces de fiesta portátiles: 12 pasos (con imágenes)
Video: Buena ILUMINACIÓN de manera PORTATIL y ACCESIBLE 2024, Noviembre
Anonim
Image
Image
La idea
La idea

Proyectos Tinkercad »

¿Puedes iluminar una fiesta y hacerla más divertida?

Esa era la pregunta. Y la respuesta es SÍ (por supuesto).

Este instructivo trata de hacer un dispositivo portátil que escuche música y cree visualización de música a partir de anillos concéntricos de LED Neopixel.

Se intentó hacer que el dispositivo "baile", es decir, que se moviera al ritmo de la música, pero la detección del ritmo resultó ser una tarea más complicada de lo que parece (sin juego de palabras), por lo que "bailar" es un poco incómodo. pero todavía está ahí.

El dispositivo está habilitado para Bluetooth y responderá a los comandos de texto. No tuve tiempo de escribir una aplicación para controlar Party Lights (ya sea Android o iOS). Si está a la altura de la tarea, ¡hágamelo saber!

Si te gusta este instructivo, ¡vota por él en el concurso Make It Glow!

Suministros

Para construir Party Lights necesitarás:

  • STM32F103RCBT6 Leaflabs Leaf Maple Mini USB ARM Cortex-M3 Módulo para Arduino (enlace aquí): el cerebro del dispositivo. Estos dispositivos relativamente baratos son tan poderosos que no está claro por qué alguna vez volverías a un Arduino.
  • Ecualizador gráfico de banda MSGEQ7 IC DIP-8 MSGEQ7 (enlace aquí)
  • Módulo Bluetooth HC-05 o HC-06 (enlace aquí)
  • Micrófono Adafruit MAX9814 (enlace aquí)
  • Un servomotor estándar (enlace aquí) si desea que su dispositivo "baile"
  • CJMCU 61 Bit WS2812 5050 RGB LED Driver Development Board (enlace aquí)
  • TTP223 Panel de interruptores de autobloqueo / sin bloqueo configurables capacitivos del módulo de teclas táctiles (enlace aquí)
  • Ultra compacto 5000-mah Salidas USB dual Super Slim Power Bank (enlace aquí)

  • Resistencias, condensadores, cables, pegamento, tornillos, placas de prototipos, etc., etc.

Paso 1: la idea

La idea
La idea

La idea es tener un dispositivo portátil que pueda colocarse cerca de una fuente de música y que cree visualizaciones musicales coloridas. Debería poder controlar el comportamiento del dispositivo mediante botones (táctiles) y Bluetooth.

Actualmente, Party Lights tiene implementadas 7 visualizaciones (¡avíseme si tiene más ideas!):

  1. Círculos de colores concéntricos
  2. cruz de Malta
  3. Luces pulsantes
  4. Chimenea (mi favorito personal)
  5. Luces de marcha
  6. Árboles de luz
  7. Segmentos laterales

De forma predeterminada, el dispositivo recorrerá las visualizaciones cada minuto. Sin embargo, un usuario puede optar por quedarse con una visualización y / o recorrerlas manualmente.

Las visualizaciones que rotan su paleta de colores también podrían "congelarse" si al usuario le gusta una combinación de colores en particular.

Y como un par de controles más, el usuario puede cambiar la sensibilidad del micrófono y habilitar / deshabilitar el modo de "danza" del servomotor.

Paso 2: procesamiento esquemático y de sonido

Procesamiento esquemático y de sonido
Procesamiento esquemático y de sonido
Procesamiento esquemático y de sonido
Procesamiento esquemático y de sonido
Procesamiento esquemático y de sonido
Procesamiento esquemático y de sonido
Procesamiento esquemático y de sonido
Procesamiento esquemático y de sonido

Un archivo esquemático fritzing se incluye en el paquete en Github en la subcarpeta "archivos".

Básicamente, un chip MSEQ7 realiza el procesamiento de audio, dividiendo una señal de audio en 7 bandas: 63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz y 16kHz.

El microcontrolador usa esas 7 bandas para crear varias visualizaciones, básicamente mapeando las respectivas amplitudes de banda en la intensidad de la luz LED y las combinaciones de colores.

La fuente de sonido es un micrófono con 3 niveles de control de ganancia. Puede alternar entre los ajustes de ganancia usando uno de los botones dependiendo de qué tan lejos / fuerte sea la fuente de sonido.

El microcontrolador también intenta realizar una detección de "latidos" en la banda de "bajos" de 63Hz. Todavía estoy trabajando en una forma confiable de detectar y mantener la alineación del ritmo.

El uso de botones "táctiles" fue un experimento. Creo que funcionan bastante bien, sin embargo, la falta de comentarios de la prensa es algo confuso.

Paso 3: rueda LED

Rueda LED
Rueda LED
Rueda LED
Rueda LED
Rueda LED
Rueda LED

El núcleo de la visualización es una rueda de 61 LED.

Tenga en cuenta que la pieza viene como anillos individuales que tendrá que armar. Solía pensar en cables de cobre para las líneas eléctricas (que también mantienen bien unidos los anillos) y cables de señal delgados.

Los LED están numerados del 0 al 60 comenzando desde el LED exterior inferior y yendo en el sentido de las agujas del reloj hacia adentro. El LED central es el número 60.

Cada visualización se basa en matrices de datos bidimensionales, que mapean cada LED en una posición específica para el segmento de visualización de destino.

Por ejemplo, para círculos concéntricos, hay 5 segmentos:

  • Círculo exterior, LED 0-23, 24 LED de largo
  • Segundo círculo exterior, LED 24-39, 16 LED de largo
  • Tercer círculo (centro), LED 40 - 51, 12 LED de largo
  • Segundo círculo interior, LED 52 - 59, 8 LED de largo
  • LED interior, LED 60, 1 LED largo

La visualización mapea 5 de los 7 canales de audio e ilumina los LED progresivamente según su posición en la banda circular proporcional al nivel de sonido en la banda.

Otras visualizaciones usan diferentes estructuras y formatos de datos, pero la idea siempre es tener visualizaciones impulsadas por las matrices de datos, no tanto por el código. De esta manera, las visualizaciones podrían ajustarse a diferentes formas (más o menos LED, más bandas de EQ) sin cambiar el código, solo los valores en las matrices de datos.

Por ejemplo, así es como se ve la estructura de datos para la visualización 1 en el boceto:

// Visualización 1 y 3 - 5 círculos completos byte constante TOTAL_LAYERS1 = 5; const byte LAYERS1 [TOTAL_LAYERS1] [25] = {// 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 {24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}, {16, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39}, {12, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51}, {8, 52, 53, 54, 55, 56, 57, 58, 59}, {1, 60}};

Paso 4: visualizaciones

Visualizaciones
Visualizaciones
Visualizaciones
Visualizaciones
Visualizaciones
Visualizaciones
Visualizaciones
Visualizaciones

Hasta ahora hay 7 visualizaciones y una animación de inicio:

Animación de inicio

Cuando el dispositivo está encendido, se muestra una imitación de fuegos artificiales. Se suponía que era una secuencia de prueba de LED y servo, pero luego evolucionó a una versión animada de dicha prueba.

Círculos de colores concéntricos

Las luces giran alrededor de la pantalla en círculos concéntricos proporcionales a la amplitud de la respectiva banda de ecualización. Cambiar aleatoriamente entre el sentido de las agujas del reloj y el sentido contrario a las agujas del reloj y girar lentamente los colores sobre la rueda de 256 colores

cruz de Malta

Una banda es el LED central. Otra banda son las líneas verticales y horizontales de los LED, y los segmentos restantes que representan cada uno una banda de ecualización. Todos los segmentos son colores rotativos en un desplazamiento de 128 para mantener el contraste.

Luces pulsantes

Cada círculo ilumina todos los LED al unísono para una banda de ecualización dedicada, mientras que los colores giran lentamente con un ligero desplazamiento. Las bandas de EQ se cambian progresivamente de un círculo al siguiente creando una progresión hacia afuera.

Hogar

Las bandas son semicírculos iluminados de abajo hacia arriba comenzando con un rojo brillante y agregando amarillo en el camino simulando un fuego ardiente en una chimenea. Ocasionalmente, la "chispa" blanca brillante se dispara al azar. No hay rotación de colores.

Luces de marcha

Cada círculo concéntrico es una banda de ecualización separada. Los LED principales son los que están en la línea vertical debajo del LED central. Una vez que el LED se enciende en proporción a la amplitud de la banda, comienza a "correr" alrededor del círculo respectivo, disminuyendo lentamente la intensidad. Se admiten rotaciones en sentido horario y antihorario, cambiando aleatoriamente.

Árboles de luz

Los segmentos se iluminan en línea recta desde el LED inferior hacia arriba y luego hacia los lados en semicírculos concéntricos que imitan palmeras. Rotación de color.

Segmentos laterales

Esta es una versión de la Cruz de Malta anterior con solo 2 segmentos diagonales usados. Se supone que se parece al icono de las ondas sonoras.

Paso 5: controles de botones táctiles

Controles de botones táctiles
Controles de botones táctiles

Hay 4 botones sensibles al tacto:

  1. Recorra las visualizaciones y mantenga la actual hasta que se elija otra (de forma predeterminada, las visualizaciones se ejecutan cada 30 segundos)
  2. "Congelar" / "descongelar" el esquema de color actual - si le gusta una combinación de colores en particular, puede congelarla - la rotación de color está deshabilitada y la visualización continuará solo con esta paleta de colores
  3. Ajustar la sensibilidad del micrófono
  4. Activar / desactivar el "modo de baile"

En el modo de baile, el dispositivo intentará detectar el "ritmo" de la música que se está reproduciendo actualmente y girará la cabeza de acuerdo con el ritmo. Hasta ahora, el "baile" es más incómodo que hermoso, para ser honesto.

Paso 6: Beat Detection y Servo "bailando"

Beat Detection y Servo
Beat Detection y Servo

El dispositivo está constantemente tratando de detectar el "latido" de la melodía actual como una distancia entre picos consecutivos de la banda de 63Hz. Una vez detectado (y solo si el modo de baile está activado), el dispositivo activará su servomotor para girar aleatoriamente a la izquierda o la derecha según el ritmo.

¡Cualquier idea brillante sobre cómo hacer esto más confiable es bienvenida!

El boceto 'Music_Test_LED' genera 7 bandas de EQ de una manera adecuada para trazar usando Arduino IDE.

Paso 7: formas 3D

Formas 3D
Formas 3D
Formas 3D
Formas 3D
Formas 3D
Formas 3D

Todo el conjunto de Party Lights se diseñó desde cero con Autodesk TinkerCAD.

El diseño original se encuentra aquí. La carpeta "archivos / 3D" en github.com contiene los modelos STL.

Este diseño ilustra cómo se ve ensamblado el dispositivo.

Todos los componentes se imprimieron y luego se ensamblaron / pegaron.

La "cúpula" aloja el microcontrolador, la placa Bluetooth y un micrófono. El microcontrolador se coloca en una placa de 40 mm x 60 mm y está soportado por rieles designados.

El servo está ubicado en la "pata" del domo, mientras que los botones están ubicados en la base.

El compartimento de la batería está impreso específicamente para el tipo de batería mencionado en la sección Suministros. Si opta por utilizar una batería diferente, el compartimento deberá rediseñarse en consecuencia.

Paso 8: fuente de alimentación

Fuente de alimentación
Fuente de alimentación
Fuente de alimentación
Fuente de alimentación

Un ultracompacto de 5000 mah con salidas USB dobles Super Slim Power Bank parece estar proporcionando suficiente energía para horas de funcionamiento.

El compartimento de la batería está diseñado de tal manera que se separa del resto del dispositivo y podría ser reemplazado por uno diseñado para un tipo diferente de batería.

El enchufe USB se colocó y se pegó en caliente en su lugar para conectar la batería a medida que se desliza.

Paso 9: Control de Bluetooth

Control de Bluetooth
Control de Bluetooth

Se agrega un módulo HC-05 para proporcionar una forma de controlar el dispositivo de forma inalámbrica.

Cuando está encendido, el dispositivo crea una conexión Bluetooth llamada "LEDDANCE", con la que puede emparejar su teléfono.

Idealmente, debería haber una aplicación que permita controlar PartyLights (elegir una paleta de colores, simular pulsaciones de botones, etc.). Sin embargo, todavía no he escrito ninguno.

Si está interesado en ayudar a escribir una aplicación para Android o iOS para Party Lights, ¡hágamelo saber!

Para controlar el dispositivo, puede utilizar actualmente la aplicación de terminal Bluetooth y enviar los siguientes comandos:

  • LEDDBUTT - donde está '1', '2', '3' o '4' simula presionar un botón respectivo. Ej.: LEDDBUTT1
  • LEDDCOLRc - donde c es un número de 0 a 255 - posición del color deseado en una rueda de colores. El dispositivo cambiará al color de LED especificado.
  • LEDDSTAT: devuelve un número de 3 caracteres que consta de "0" y "1" únicamente:

    • primera posición: '0' - los colores no están rotando, '1' - los colores están rotando
    • segunda posición: '0' - el modo de baile está desactivado, '1' - el modo de baile está activado
    • tercera posición: '0' - micrófono en ganancia normal, '1' - micrófono en ganancia alta

Paso 10: Aplicación de control basada en Blynk

Aplicación de control basada en Blynk
Aplicación de control basada en Blynk
Aplicación de control basada en Blynk
Aplicación de control basada en Blynk
Aplicación de control basada en Blynk
Aplicación de control basada en Blynk
Aplicación de control basada en Blynk
Aplicación de control basada en Blynk

Blynk (blynk.io) es una plataforma de IoT independiente del hardware. Utilicé Blynk en mi instructable Sistema de riego automático de plantas de IoT y quedé impresionado con la facilidad y solidez de la plataforma.

Blynk admite la conexión a dispositivos periféricos a través de Bluetooth, exactamente lo que necesitamos para PartyLights.

Si aún no lo ha hecho, descargue la aplicación Blynk, regístrese y vuelva a crear la aplicación Blynk PartyLights utilizando las capturas de pantalla adjuntas a este paso. Asegúrese de que las asignaciones de pines virtuales sean las mismas que en las capturas de pantalla; de lo contrario, los botones de la aplicación no funcionarán según lo previsto.

El archivo "blynk_settings.h" contiene mi UID personal de Blynk. Cuando cree su proyecto, se le asignará uno nuevo para que lo use.

Sube el boceto de PartyLightsBlynk.ino, enciende la aplicación. Emparéjalo con un dispositivo Bluetooth y disfruta de la fiesta.

Paso 11: bocetos y bibliotecas

Bocetos y Bibliotecas
Bocetos y Bibliotecas

El boceto principal y los archivos de apoyo se encuentran en Github.com aquí.

Las siguientes bibliotecas se utilizaron en el boceto de Party Lights:

  • TaskScheduler - multitarea cooperativa - aquí (desarrollado por mí)
  • AverageFilter - filtro promedio con plantilla - aquí (desarrollado por mí)
  • Servo - Servo control - es una biblioteca estándar de Arduino
  • WS2812B -NEOPixel control - viene como parte del paquete STM32

Esta página Wiki explica cómo usar placas STM32 con Arduino IDE.

Paso 12: Mejoras futuras

Mejoras futuras
Mejoras futuras

Algunas cosas podrían mejorarse en este diseño, que podría considerar si se embarca en este proyecto:

  • Utilice ESP32 en lugar de la placa Maple Mini. ESP32 tiene 2 CPU, pilas de Bluetooth y WiFi, y puede funcionar a 60MHz, 120MHz e incluso 240MHz.
  • Diseño más pequeño: el dispositivo resultante es grande. Podría ser más compacto (especialmente si dejas caer la idea de baile y el servo asociado)
  • La detección de latidos podría mejorarse infinitamente. Lo que nos viene naturalmente a los humanos, parece ser una tarea difícil para una computadora.
  • Se podrían diseñar e implementar muchas más visualizaciones.
  • Y, por supuesto, se podría escribir una aplicación para controlar el dispositivo de forma inalámbrica con una interfaz de usuario genial.

Recomendado: