Usando Raspberry Pi con leds y audio

Este es un pequeño experimento en el tema de Internet de las Cosas, donde quise imitar lo que se hace en algunas radios cuando suena una canción, que es el de prender un conjunto de luces de acuerdo a la intensidad o fuerza de la canción, es decir, cuando una canción está sonando, en las partes más agudas se prenden mayor cantidad de luces, y en las partes graves se prenden muy pocas.

Los materiales que adquirí los describo a continuación:

  • Raspberry Pi 3 con el sistema operativo Raspbian instalado (más adelante haré mas experimentos con este componente). Lo compré junto con el conector a corriente (que suminitre >= 750mA) y una tarjeta SD que es donde se instala el SO.
  • Protoboard
  • Cables macho y hembra
  • Resistencias (pueden estar en el rango de 270Ω a 330Ω)

Normalmente un Raspberry Pi se puede conectar a un teclado usb, a una pantalla mediante la entrada HDMI y a un mouse usb. Con esto podemos entrar al entorno gráfico y conectarnos a internet mediante wifi (la versión 3 de Raspberry Pi ya viene integrado con el hardware para conectarse por wifi). Adicionalmente conecté el raspberry a mis parlantes para poder hacer el experimento mediante la salida estándar de audio.

El experimento lo hice con python en la versión 2.7 usando las siguientes librerías

  • Pyaudio: para manejar las iteraciones sobre la ejecución del audio
  • Wave: para leer archivos .wav
  • Numpy: para hacer el cálculo de frecuencia
  • RPi.GPIO: librería para manejo de entrada/salida del raspberry pi. GPIO = General Purpose Input/Output

El GPIO de raspberry se puede ver en la siguiente imagen:

El algoritmo hace lo siguiente:

  1. Inicializar archivo de audio .wav (pasado por parámetro en la consola)
  2. Setear valores a constantes para lectura de audio
  3. Iniciar lectura de audio pasando una función como parámetro, la cual se ejecutará en cada iteración
  4. Cada iteración hace algunos cálculos para obtener la frecuencia.
  5. Usa el GPIO para prender X cantidad de leds dependiendo del valor de la frecuencia. Regresa al paso 4.
  6. Cierra todas las conexiones una vez que se terminaron todas las iteraciones.

La ejecución de la lógica se puede ver en el siguiente video

Nota: La ejecución del audio tiene algunas deficiencias, ya que llega un momento en que el audio suena mal, como si existieran vacíos o interrupciones.

Código Fuente: https://github.com/ccrrvvaa/iot-raspberry_py_3-leds

Compartir...Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *