PIANO de FRUTAS con Raspberry Pi 3 – MPR121

PIANO de FRUTAS con Raspberry Pi 3 – MPR121

 Original de tejonbiker en raspberry-pi

 Este documento fue modificado y verificado por el equipo de – ADICHIP.com.ar para ofrecerlo como apoyo a los usuarios que adquieren nuestros productos. En este documento encontrara los pasos para desarrollar el PIANO de FRUTAS con Raspberry Pi 3 – MPR121 utilizando el shield que ofrecemos para tal propósito. Por cualquier duda o consulta puede escribirnos a soporte@adichip.com

Este instructivo, además de ser una traducción de Adafruit, intenta cubrir algunos puntos que no se mencionan en la página de Adafruit.

El gran final es reproducir tonos MIDI en python a través de frutas.

Cosas necesarias:

Comenzaremos este tutorial suponiendo que ya tiene tu modulo HAT capacitivo soldado como debe ser y listo para colocar sobre tu Raspberry Pi 3.

 

PASO 1: Instalando Raspbian

En este paso voy a cubrir como grabar el sistema operativo en la micro SD de la Raspberry Pi, si tienes Raspbian instalado puedes saltar este paso.

Descargando la Imagen

Para este instructivo estamos utilizando la última versión de Raspbian, la cual puedes descargar desde la página oficial:

https://www.raspberrypi.org/downloads/

Una vez descargada la imagen, debemos descomprimir el archivo para obtener el original con extensión .img que grabaremos dentro de la memoria microSD con el programa RUFUS. Aquí una captura de la descarga del programa.


Puedes descargarlo desde la siguiente dirección:

https://rufus.akeo.ie/?locale=es_ES

Al ejecutar la aplicación aparecerá la siguiente ventana desde donde grabaremos Raspbian a la microSD.


Grabando la imagen

Básicamente el archivo .img es una copia cruda del sistema operativo de Raspberry Pi, lo que necesitamos es grabar byte a byte este archivo a una tarjeta SD de mayor tamaño que la misma imagen, para esto usaremos la aplicación.


Configuramos Rufus de la siguiente manera y comenzamos la grabación del OS a la microSD.


Después de 10 minutos nuestra SD estará lista para insertarse en nuestra Raspberry Pi.

PASO 2: Conectar Y Encender

Una vez que tenemos nuestra micro SD lista la insertamos en la Raspberry, conectamos el HAT (no importa si no tenemos tornillos para sostenerlo, no vamos a hacer tanta fuerza), conectamos el ethernet y finalmente la energía que es el micro USB.


Si todo está bien veremos que el led de Actividad (led verde) se enciende por unos instantes y se apaga, si el led verde se mantiene encendido es que hubo un problema y no puede leer la SD. El led rojo del sombrero se encenderá tenuemente, esto significa que tiene energía. Esperamos un poco más y veremos que el ethernet enciende con sus LEDs de actividad. Esperamos un poco más a que termine de arrancar nuestra Raspberry Pi (aproximadamente 30 segundos en total). Nuestra Raspberry Pi esta lista para usarse.

 

PASO 3: Trabajando En La Raspberry

Entendiendo el I2C

Tenemos nuestro HAT conectado, es hora de comunicarnos con él, esto se hace a través del puerto I2C (Inter Integrated Circuit), es un protocolo multipunto diseñado para la intercomunicación de varios chips a cortas distancias, típicamente en misma tarjeta de circuitos.

 

 

 

 

 

 

 

 

 

 

 

Instalando todo lo necesario

El código lo vamos a hacer en python, así que necesitamos instalar todo lo necesario para que python pueda usar el puerto I2C, realmente no necesitamos saber cómo conectar el I2C a los chips, esto es lo que nos ahorra el HAT de Adafruit.

Ejecutamos los siguientes comandos en la consola:

sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus python-pip git
cd ~
git clone https://github.com/tejonbiker/Adafruit_Python_MPR121.git
cd Adafruit_Python_MPR121
sudo python setup.py install

Con esto habremos instalado el driver I2C de python y la librería de Adafruit para usar el HAT.

Nota: El repositorio es un fork del repo de adafruit modificado por tejonbiker, el principal motivo son los umbrales de detección, los que vienen por default no aceptan bien las frutas, adicionalmente agregó el ejemplo de tonos MIDI, hizo un pull request para que adafruit acepte sus cambios, aunque aún no ha recibido respuesta.

Habilitando el driver I2C

Con lo anterior hemos instalado el driver de I2C, ahora nos hace falta que el sistema lo cargue, para esto hacemos lo siguiente:

sudo nano /boot/config.txt

Agregamos al final la línea

dtparam=i2c_arm=on

Guardamos con ctrl+o y cerramos con ctrl+x

sudo nano /etc/modules

Agregamos

i2c-bcm2708
i2c-dev

En dos líneas separas una debajo de otra. Una vez más guardamos ctrl+o, ctrl+x y reiniciamos con que los cambios surtan efecto.

sudo reboot

Comprobamos que podemos ver el sombrero en la red I2C con el comando

sudo i2cdetect -y 1

Deberá aparecer entre varias líneas un número 5a, esta es la dirección del HAT en la red I2C


Si no aparece este 5a en la búsqueda de dispositivos i2c es porque el i2c se encuentra deshabilitado o los pasos anteriores no se hicieron correctamente. Por favor verifique esto antes de continuar.

Ejecutando un ejemplo

Ahora ejecutamos en la carpeta Adafruit_Python_MPR121 lo siguiente:

cd examples
sudo python simpletest.py

Veremos la leyenda “Adafruit MPR121 Capacitive Touch Sensor Test” en la consola, si tocamos en las partes donde tiene las perforaciones más grandes (y etiquetadas con números) veremos que el LED cerca del integrado enciende (detectando el evento) y en la consola nos identificará que número estamos tocando (ver imágenes).

 

 

PASO 5: Probando Probando

Nota: Este repositorio tiene los valores de umbral modificados, están adecuados para que puedan detectar de forma más estable frutas medianas como duraznos, mangos y frutos de similar tamaño.

La ventaja de esta técnica de detección de toque es que no necesitas una línea de tierra, como lo puede necesitar el makey makey, aunque tiene sus desventajas, el sombrero capacitivo abre otras opciones.

 

 

 

 

 

 

 

 

 

 

Conectando las frutas

Ahora toma un caimán y conéctalo a una fruta, después conecta el otro lado al sombrero (en el lugar que más te agrade), es importante conectar las frutas antes de iniciar el programa, si las conectamos posteriormente puede presentar comportamientos erróneos.

 

 

 

 

 

 

 

 

 

 

Ejecutando el programa correcto

El ejemplo simpletest.py es de Adafruit, el problema es que los umbrales de detección por default no son muy buenos para ponerle frutas, para esto vamos a usar un ejemplo modificado, el ejemplo se ejecuta así:

cd Adafruit_Python_MPR121/examples/
sudo python simpletest_new_threshold.py

Este ejemplo aceptará mejor las frutas conectadas, en dado caso de que no sea así, busca la línea que dice: “cap.set_thresholds(50, 10)“, cambia el valor de 50 y 10 para que se ajusten a tu aplicación (juega con los valores), el primer valor es el umbral de toque y el segundo el umbral de liberado.

 

Durazno, Tuna, Mango y tamaños similares

Las frutas trabajan muy bien, sin oscilaciones y son perfectamente detectables, solo hay que asegurarnos que estamos conectando bien el caimán.


PASO 6: Teclado De Frutas (tonos MIDIS)

Llego la hora de la diversión, el teclado con frutas.

Conectamos todas nuestras frutas al sombrero capacitivo, solo tenemos en cuenta lo siguiente a la hora de reproducir tonos:

  • Electrodo 11: Cambio de instrumento
  • Electrodo 10: Subir Tonos
  • Electrodo 9: Bajar tonos
  • Electrodos 0-8: Reproducir nota

Lo interesante de usar MIDIs en lugar de sonidos WAV es que podemos usar diferentes instrumentos y cambiar de tonos, sin necesidad de volver a generar nuevos archivos WAV.

Para ejecutar el ejemplo de teclado, primero necesitamos un sintetizador de tonos MIDI, el código de python solo manda comandos MIDI, necesitamos mandar estos comandos a un sintetizador que convierta comandos MIDI a sonido.

Para esto usaremos el sintetizador en software timidity, los instalamos de la siguiente forma:

sudo apt-get install timidity

Ahora lo ejecutamos en segundo plano, el parametro -iA significa que vamos a usar la interfaz de ALSA (Advanced Linux Sound Architecture), una interfaz estándar de audio en Linux.

timidity -iA &

Tenemos todo listo para ejecutar el teclado, en la carpeta de examples ejecutamos

sudo python midi_touch.py

Ahora podemos hacer un concierto con frutas.


Lo mejor es que al finalizar este experimento puedes comerte la fruta.

Comments are closed.