Mi show de luces y música de Navidad con Raspberry Pi

20151212_141833.jpg

En otro de mis proyectos “juguete” con Raspberry Pi, le di un poco de vida a las luces de esta pasada Navidad y añadí música y sincronización entre estas.

Había querido publicar esta entrada por la época navideña, pero el tiempo no me lo permitió.

Este proyecto es realmente sencillo, ya que vamos a usar lightshow, un proyecto que nos va  a proporcionar la sincronización entre las luces y la música, así que todo el trabajo realmente está en el cableado de nuestros componentes.

En este proyecto usaremos:

  • Raspberry Pi 2
  • Relay SSD de 8 canales
  • 8 enchufes (estos son los enchufes que yo usé, estándar en EEUU. Depende de dónde vivas será distintos, pero la funcionalidad será la misma).
  • Cables: rígido para la interconexión de los enchufes y flexible para el resto.
  • Ficha de empalmes
  • Cinta aislante
  • Altavoz (conectado a la salida analógica del Raspberry Pi)
La idea detrás de este proyecto es que podamos enchufar hasta 8 luces, tocar música y que las luces que enciendan y apaguen al ritmo de ésta.

Lo primero que vamos a hacer es instalar lightshow (asumo que usas Raspbian, aunque el procedimiento debería funcionar en otras distribuciones Linux):

# Actualiza tu sistema sudo apt-get update sudo apt-get upgrade sudo rpi-update

Instala git

sudo apt-get install git-core

Clona el repositorio en /home/pi/lightshowpi

cd ~ git clone https://togiles@bitbucket.org/togiles/lightshowpi.git

Sitúate en la versión estable

cd lightshowpi git fetch && git checkout stable

Corre el script de instalación

cd /home/pi/lightshowpi sudo ./install.sh

Reinicia

sudo reboot

Durante el proceso de instalación me dio un error cuando el script intentó instalar una de las dependencias: Beautifulsoup. En la versión de Raspbian que usaba, dicha librería había sido renombrada a BS4. Tus opciones aquí son instalarla manualmente (sudo apt-get install python-bs4), modificar el fichero que contiene las dependencias (lightshowPi/install-scripts/raspbian) o simplemente ignorarla. Una de las funcionalidades de lightshow es que te permite interactuar con el mismo a través de SMS (yo no configuré esa parte) y ahí es donde requiere Beutifulsoup para trabajar con unos ficheros XML.

Ahora que ya tenemos instalado nuestro software. Toca empezar a cablear. Lo primero que vamos a hacer es cablear nuetro RPi al relé. Por defecto lightshow asume que el relé está conectado a los 8 primeros GPIO pines (GPIO0 - GPIO7). Si quieres usar una configuración distinta, entonces tienes que modificar el fichero lightshowPi/config/defaults.cfg en la sección [hardware]:

Using 8 pins of GPIO on the pi:

gpio_pins = 0,1,2,3,4,5,6,7 ….

Y cambiar esos números por los pines que hayas elegido. Lightshow también nos ofrece la posibilidad de retransmitir nuestra música a través de ondas FM, para la cual usa el pin 7, con lo que si quires usar dicha funcionalidad, tienes que dejar el pin 7 libre (ahí conectarás la antena). Un poco más abajo de la línea mostrada anteriormente tienes:

#

Using 8 pins of GPIO with FM transmitting on the pi b+:

#pin 7 cannot be used in FM mode because that is used for the antenna #gpio_pins = 0,1,2,3,4,5,6,21

Cómo ves el pin 7 sería sustituido por el 21. Tendría que de-comentar dicha línea y comentar la anterior de forma que quedaría algo así:

Using 8 pins of GPIO on the pi:

gpio_pins = 0,1,2,3,4,5,6,7

…. #

Using 8 pins of GPIO with FM transmitting on the pi b+:

#pin 7 cannot be used in FM mode because that is used for the antenna gpio_pins = 0,1,2,3,4,5,6,21 …

En mi caso, tampoco usé la función de retransmitir por FM. Así que nos quedaremos con la configuración por defecto usando los GPIO0-GPIO7.

A continuación os dejo el esquema del cableado entre el RPi y el relé:

rpi_relay.png Rapsberry Pi - Relé

GPIO_Pi2.png Pines de Raspberry Pi 2

Una vez tenemos nuestros dispositivos cableados, podemos hacer la primera prueba. El relé dispone de un LED por cada canal lo que nos permite visualizar si lo hemos conectado correctamente. Lightshow dispone de un script de prueba que nos permitirá saber si hemos conectado los cables correctamente. sudo python ~/lightshow/py/hardware_controller.py –state=flash

Éste encenderá y apagará los LEDs del relé de forma consecutiva de uno en uno. En el siguiente vídeo podemos verlo en funcionamiento:

Lightshow trae algunas canciones de ejemplo. Puedes probar una de ellos con este comando:

sudo python ~/lightshow/py/synchronized_lights.py –file=/home/pi/lightshowpi/music/sample/ovenrake_deck-the-halls.mp3

Si todo funciona bien, deberías ver algo así:

Una vez hemos comprobado que todos los LEDs se encienden en orden, toca conectar los enchufes. Voy a usar cuatro enchufes dobles, lo que me da un total de ocho conectores. El esquema del cableado sería algo así:

relay_sockets.png

Las líneas azules representan la conexión de cada enchufe a cada una de las entradas de nuestro relé y la línea marrón, es la alimentación que iría al otro par de cada una de las entradas del relé, además de alimentar el primero de los enchufes (izquierda). Las líneas verdes (cable rígido) hacen de puente entre los enchufes y pasan la corriente de uno al otro. Por último la línea negra (abajo) es la de tierra (yo no la usé, ya que las luces que conecté no tenía toma de tierra, pero la pongo como referencia).

Aquí un par de fotos del montaje:

20151212_141904.jpg

Parte trasera

20151212_141819.jpg

Parte delantera

Para conectar la corriente usé un cable de alimentación de un ordenador antiguo que tenía por ahí. Le corte el extremo que se conecta al ordenador, y de ahí salían tres cables: negro, blanco y verde (tierra). Como comenté antes, el cable de tierra (verde) no lo conecté.

20160118_150450.jpg

Una vez tenemos montado todo el cableado, sólo nos queda probarlo y rezar por que todo salga como esperamos :).

Para la música, yo personalmente busqué en youtube canciones de Navidad y allí multitud de “vídeos”, algunos que duran horas. Los cuales puedes descargar con algo así:

youtube-dl –extract-audio –audio-format mp3 -l [URL VIDEO]

El mp3 lo copias a tu Raspberry Pi y puedes tocar con el comando:

sudo python ~/lightshow/py/syncronized_lights.py –file=/path/tu/mp3

Si quieres tocar varios mp3s, también puedes crearte una lista.

El resultado final de mi montaje podéis verlo en los siguientes vídeos:

Cómo decía anteriormente, el proyecto lightshow además de luces y audio, te permite transmitir tu música via FM e incluso mandarle comandos via SMS, para ello échale un vistazo a la documentación.

Si queréis algo espectacular también montado con Raspberry Pi, échale un vistazo a http://www.johnsonlightshow.com/.

Hasta aquí hemos llegado. Tuve funcionando las luces por 2-3 semanas sin ningún problema. Espero que esta entrada te sirva de algo, sobre si te la has leído entera :)

PD: mis conocimientos de electrónica son muy básicos, así que si le he pegado una patada a la convención de colores de los cables en los esquemas o algún símbolo, pido disculpas :)