Tabla de contenido:
- Paso 1: Equipo
- Paso 2: Configurar la Raspberry Pi
- Paso 3: Configuración del código de ejemplo
- Paso 4: cree un certificado SSL autofirmado
- Paso 5: Conexión del hardware
- Paso 6: Código del lado del servidor
- Paso 7: Código del sitio web
- Paso 8: finalmente
Video: Disco-pi: 8 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
Este instructivo muestra cómo usar una Raspberry Pi para controlar una tira de LED de colores, basada en la música reproducida desde un navegador web.
Muestra cómo crear un sitio web básico usando Node.js sobre HTTPS y usar socket.io sobre WSS (Secure Websocket).
El sitio web tiene una sola página que tiene un diseño muy básico. La página web llena una lista desplegable con archivos de música, que se encuentran en la carpeta pública / audio del servidor. Al seleccionar una opción en la lista, se reproduce el archivo de música en la página web utilizando el elemento de audio HTML 5. Mientras se reproduce el archivo de música, la página web utiliza la interfaz AudioContext para analizar la música, que luego se envía al servidor a través de una conexión websocket segura.
El servidor que se ejecuta en una Raspberry Pi utiliza la biblioteca Node RPI WS281x Native (que envuelve la biblioteca WS281X de Jeremy Garff) para cambiar los colores de los LED en una tira de LED WS2811, según los datos enviados a través del websocket.
El código de ejemplo se puede encontrar aquí: disco-pi
Paso 1: Equipo
- Raspberry Pi: utilicé una Raspberry Pi 2B que tenía por ahí, pero puede obtener un kit de inicio de Raspberry Pi 3 por alrededor de CAD 100
- Tira de LED WS2811 - Estaba jugando con ALITOVE 16.4ft 150 Pixels WS2811. Viene con un controlador y una fuente de alimentación por aproximadamente CAD 45-50
- Conector de barril: compré uno en mi tienda de electrónica local, algo como esto. Solo asegúrese de que se ajuste a su fuente de alimentación
- Conectores de puente / cable: tenía algunos cables de conector hembra a macho y un cable de conexión sólido de calibre 22 por ahí
Paso 2: Configurar la Raspberry Pi
Sistema operativo
Normalmente uso la última versión de Raspbian. Descarga la imagen y escríbela en la tarjeta SD. Si está usando una computadora con Windows, puede usar Win32 Disk Imager para escribir la imagen en la tarjeta SD.
Node.js
Instale la última versión de Node.js. En el momento de escribir este artículo, estoy usando 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Instalar git
sudo apt-get install git
Paso 3: Configuración del código de ejemplo
Clonar el código de ejemplo
1. Configure una carpeta base para instalar en
cd / opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Clonar el repositorio de git de ejemplo
clon de git https://github.com/haydockjp/disco-pi.git"
o
clon de git [email protected]: haydockjp / disco-pi.git
3. Instale las dependencias
cd disco-pi
npm install
Esto puede tardar entre 2 y 3 minutos.
Paso 4: cree un certificado SSL autofirmado
1. Cree un archivo de clave privada
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Cree una CSR (solicitud de firma de certificado)
openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem
En este punto, se le pedirá información para la solicitud de certificado. Como se trata de un certificado autofirmado, depende de usted la precisión con la que complete los detalles. Aquí hay un ejemplo
Nombre del país (código de 2 letras) [AU]: CA
Nombre del estado o provincia (nombre completo) [Algún estado]: Nombre de la localidad de Columbia Británica (por ejemplo, ciudad) : Nombre de la organización de Vancouver (por ejemplo, empresa) [Internet Widgits Pty Ltd]: Nombre de la unidad organizativa de Disco Pi (por ejemplo, sección) : Nombre común (p. Ej. FQDN del servidor o SU nombre) : disco-pi Dirección de correo electrónico : [email protected] Una contraseña de seguridad : Un nombre de empresa opcional :
En este ejemplo, simplemente presione retorno para dejar la contraseña de desafío en blanco
3. Genere el certificado
openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Para mayor seguridad, también crearemos un archivo de parámetros Diffie Hellman
openssl dhparam -out dh_2048.pem 2048
Esto puede tardar entre 15 y 20 minutos.
Paso 5: Conexión del hardware
Encender la tira de LED
La tira de LED funciona con 12 voltios. La Raspberry Pi solo es capaz de producir 3.3v o 5v y no es capaz de producir en ningún lugar cerca de los amperios necesarios para impulsar tantos LED.
Es importante no conectar la fuente de alimentación de 12 voltios a la Raspberry Pi.
Mi tira también tenía cables de alimentación adicionales conectados a la tira en cada extremo. Le sugiero que las pegue con cinta adhesiva para que no entren en contacto con ninguno de sus otros equipos.
Realice los siguientes pasos bajo su propia responsabilidad. No me hago responsable de nada que pueda salir mal.
Tira llevada
Mi tira de LED tiene tres cables:
ROJO - +12 voltios
NEGRO - Tierra
VERDE - Datos
NOTA: hay un Din y un Dout - Entrada y salida de datos. Asegúrese de estar trabajando con el extremo de la tira de LED que dice Din.
Asegurarse de que el Barrel Jack no esté conectado a la fuente de alimentación
1. Conecte el cable rojo de la tira de LED al lado + del conector de barril.
Usé un cable de conexión blanco de calibre 22.
Coloque el cable en la ranura + del gato de barril y atorníllelo en su lugar.
Empuje el otro extremo del cable en el zócalo del LED. Asegúrese de conectarse con el cable rojo.
2. Conecte el cable negro de la tira de LED al lado - del conector de barril.
Usé un cable de conexión negro de calibre 22.
Coloque el cable en la ranura - del gato de barril. En este punto también coloque el extremo macho de uno de los cables conectores (cable marrón en la foto) en el mismo orificio y atorníllelos en su lugar.
Empuje el otro extremo del cable negro en el zócalo del LED.
Asegúrese de conectarse con el cable negro.
3. Conecte el cable verde de la tira de LED
Tome uno de los cables de conector hembra a macho. En mis fotos, este es el cable verde.
Coloque el extremo macho en el enchufe LED con el cable verde.
Este es el cable de datos.
Frambuesa pi
1. Tome el cable conector verde y conéctelo a la Raspberry Pi GPIO.
Debe conectarlo al PCM_CLK (Pin 12 / GPIO 18)
2. Tome el cable conector negro y conéctelo a la Raspberry Pi GPIO.
Debe conectarlo a uno de los terrenos. Le sugiero que use el pin 14, pero también podría usar el pin 6, 9, 20, 25, 30, 34 o 39.
NOTA: para que esto funcione, la fuente de alimentación LED y la Raspberry Pi deben tener un terreno común. También tenga en cuenta que no debe conectar el 12 Volt + (cable rojo) a la Raspberry Pi.
LED de potencia
No debería poder conectar su fuente de alimentación de 12 voltios al conector de barril
Todos los LED de su tira de LED ahora deberían iluminarse en BLANCO
Paso 6: Código del lado del servidor
Ejecutando el código del lado del servidor
cd /opt/com.jonhaydock/disco-pi
sudo npm start
Esto iniciará el servidor web y comenzará a escuchar solicitudes HTTPS y WSS.
El puerto predeterminado es 443, pero puede anularlo configurando una variable de entorno antes de iniciar el código. Por ejemplo
exportar DISCO_PI_PORT = 1443
Mi tira de LED tiene 150 LED. Estos se controlan en grupos de tres. Esto significa que no puedo controlar cada LED individualmente y necesito enviar suficiente información para controlar 50.
Si su LED tiene más o menos, puede anular el número de LED que está controlando pasando un parámetro al inicio. Por ejemplo, si solo puede controlar 10 LED
sudo npm start 10
El código del servidor principal se puede encontrar en el archivo app.js. Este archivo inicia el servidor web HTTPS y también agrega socket.io para escuchar las solicitudes de websocket en el mismo puerto.
Para acceder al sitio web, debe abrir un navegador web en su computadora principal (solo lo he probado en Chrome) y usar la dirección IP de la Raspberry Pi, p. Ej.
10.0.1.2/
Puede averiguar su dirección IP desde la línea de comando de Raspberry Pi.
ifconfig
El servidor web servirá cualquier contenido en la carpeta pública. De forma predeterminada, muestra la página index.html.
Tiene un punto final de API: / api / audio. Este punto final busca cualquier archivo en la carpeta public / audio y devuelve la lista. Por ejemplo
["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "Esto es lo que viniste a buscar (con Rihanna).mp3"]
Para agregar música como una opción, copie los archivos a esta carpeta. Yo personalmente uso Filezilla sobre ssh. La carpeta a la que desea agregar archivos es /opt/com.jonhaydock/disco-pi/public/audio
Paso 7: Código del sitio web
Cuando acceda al sitio web, debería ver algo como esto.
Si ve una advertencia de seguridad, es porque estamos usando un certificado SSL autofirmado. Puede ignorarlo o agregarlo como una excepción.
Al seleccionar un nombre de archivo, la fuente del elemento de audio HTML 5. se establecerá en ese archivo. Una vez que esté listo, la música comenzará a sonar. Una vez que la canción haya terminado, la música se detendrá.
Si selecciona la opción Ninguno, la música dejará de reproducirse.
Mientras se reproduce el archivo de música, la página web utiliza la interfaz AudioContext para analizar la música, que luego se envía al servidor a través de una conexión websocket segura.
El mensaje es del tipo que el socket.io en el servidor se ha configurado para escuchar "ws2811". Contiene una matriz de 50 elementos, que están entre 0 y 255.
"ws2811", {"0": 251, "1": 252, "2": 241, "3": 217, "4": 193, "5": 164, "6": 148, "7": 139, "8": 110, "9": 96, "10": 81, "11": 67, "12": 72, "13": 66, "14": 60, "15": 60, "16": 63, "17": 54, "18": 37, "19": 30, "20": 31, "21": 26, "22": 13, "23": 3, " 24 ": 10," 25 ": 7," 26 ": 6," 27 ": 0," 28 ": 0," 29 ": 0," 30 ": 1," 31 ": 8," 32 ": 12, "33": 3, "34": 2, "35": 2, "36": 0, "37": 0, "38": 0, "39": 0, "40": 0, "41": 0, "42": 0, "43": 0, "44": 0, "45": 0, "46": 0, "47": 0, "48": 0, " 49 ": 0}
El servidor utiliza la biblioteca nativa Node RPI WS281x (que envuelve la biblioteca WS281X de Jeremy Garff) para cambiar los colores de los LED en una tira de LED WS2811, según los datos enviados a través del websocket.
Paso 8: finalmente
Debería ver que los LED de la tira cambian de color con la música, según el análisis de la Transformada rápida de Fourier realizado en la página web.
Espero que disfrutes esto. ¡Déjame saber qué haces con él!
NOTA: Si tiene algún problema
Dado que esta biblioteca y el audio integrado de Raspberry Pi usan PWM, no se pueden usar juntos.
Es posible que deba incluir en la lista negra el módulo del kernel de audio de Broadcom creando un archivo /etc/modprobe.d/snd-blacklist.conf con
lista negra snd_bcm2835
Si el dispositivo de audio todavía se está cargando después de la lista negra, es posible que también deba comentarlo en el archivo / etc / modules. En sistemas sin cabeza, es posible que también deba forzar el audio a través de hdmi
Edite config.txt y agregue:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
Es necesario reiniciar para que este cambio surta efecto
Recomendado:
Disco V2 portátil: LED controlados por sonido: 11 pasos (con imágenes)
Portable Disco V2 - LED controlados por sonido: He recorrido un largo camino en mi viaje con la electrónica desde que hice mi primera discoteca portátil. En la construcción original, pirateé un circuito en una placa prototipo y logré construir una pequeña discoteca de bolsillo ordenada. Esta vez diseñé mi propia PCB y
Led Disco Box: 7 pasos (con imágenes)
Led Disco Box: Cómo hacer tu propia Led Disco Box
Liberar espacio en el disco en Windows 10 usando el Liberador de espacio en disco: 7 pasos
Liberar espacio en el disco en Windows 10 usando el Liberador de espacio en disco: limpiar el disco duro no requiere el uso de herramientas de terceros. Se puede hacer rápidamente usando la aplicación integrada de Windows 10 llamada “ Liberador de espacio en disco ” y es gratis. Necesitará los siguientes elementos antes de comenzar: 1) Deskop o Laptop 2) Windows 10 i
Actualice su iPod Mini con memoria flash - ¡No más disco duro !: 6 pasos (con imágenes)
Actualice su iPod Mini con memoria flash - ¡No más disco duro !: En lugar de un disco duro, su nuevo iPod actualizado utilizará memoria flash sin partes móviles para un arranque y amp; tiempos de acceso y menor consumo de energía. (¡Ejecuté mi iPod continuamente durante más de 20 horas con una sola carga!). También obtendrás realce
Disco duro antiguo Xbox 360 + kit de transferencia de disco duro = ¡Disco duro USB portátil !: 4 pasos
Disco duro antiguo Xbox 360 + Kit de transferencia de disco duro = Disco duro USB portátil: Entonces … Has decidido comprar el disco duro de 120GB para tu Xbox 360. Ahora tienes un disco duro antiguo que probablemente no utilizar más, así como un cable inútil. Podrías venderlo o regalarlo … o darle un buen uso