Piano Gigante
¿Nunca has soñado con tocar un piano con los pies? ¡Nosotros lo conseguimos! Si has estado en alguna de nuestras jornadas de puertas abiertas o en eventos especiales como AULA, habrás podido jugar con nuestro piano gigante hecho con láminas de plástico y sensores de presión. Aunque no te lo creas, tú puedes hacer uno parecido en casa con la información que puedes encontrar a continuación. ¡No dudes en preguntarnos si te quedas con dudas!
El objetivo de este proyecto es tener un piano gigante que sea transportable, fácil de usar y vistoso, para poder llevarlo a ferias y eventos y enseñar lo que hacemos en Reset. Tiene 4 componentes principales: los materiales estructurales (teclas), los sensores de presión, la electrónica y el programa.
Materiales estructurales
Actualmente, el piano está compuesto de teclas de plástico rígido, una lona de polipiel donde se apoya todo, y los sensores de presión, que veremos en detalle en la siguiente sección.
El material para las teclas que elegimos fue vidrioplástico, por ser fácil de manipular y cortar, además de la ligereza y resistencia que ofrece. Tiene la ventaja de que está disponible en muchos colores, transparentes y opacos, para hacer el piano como más os guste. Nosotros compramos una plancha grande transparente de 2,5 mm de grosor como esta y la cortamos para hacer las teclas negras, y otra igual en blanco opaco para las teclas blancas. Si queréis ver más colores disponibles podéis ir a cualquier tienda de bricolaje y buscar la sección de vidrio plástico o metacrilato, o mirar online (DISCLAIMER, NO NOS PAGA LEROY MERLIN). Como recomendación, no elijáis plástico de mucho grosor porque es más difícil de cortar, es más frágil y menos flexible. El plástico de 2,5 mm tiene resistencia suficiente para lo que queremos hacer.
Para cortar las teclas a medida usamos una sierra de calar en nuestro taller. Es una labor cansada pero sencilla, todo depende del pulso que tengas y lo manitas que seas. Las dimensiones que elegimos fueron las que aparecen debajo, pero se puede dimensionar para que sea más grande o más pequeño, o incluso con más teclas. ¡Libertad total!
Si el plástico no os convence, podéis elegir cualquier otro material, por supuesto. Se puede hacer todo de fieltro, por ejemplo, que fue la versión original de nuestro piano gigante. Por desgracia, un día de lluvia el fieltro se mojó y se rompieron todos los sensores. Dicho esto, si tenéis suficiente cuidado y no se va a usar en exteriores, puede ser buena idea para hacerlo 100% transportable.
El material que elegimos para apoyar las teclas fue tela polipiel de 140 cm de ancho que se vende en bobina (link). La elegimos así para que el piano fuera fácil de enrollar y a la vez fuera difícil de ensuciar, ya que va a estar siempre en el suelo. En este aspecto, las posibilidades son infinitas, cualquier tipo de tela que valga de alfombra valdrá para esta función.
Por último, para unir las teclas a la tela, usamos velcro con adhesivo en las 2 caras (link). De esta forma, si una tecla se rompe, se puede despegar y sustituir de forma sencilla. Además, para enrollar el piano es necesario quitar las teclas negras, por lo que el velcro facilita la tarea.
Una vez completada esta parte, ya tendríamos la parte física lista. Ahora queda conseguir que suene.
Sensores
Lo sensores que usamos para el piano son sensores de presión o galgas extensiométricas. Estos sensores tienen la particularidad de que cuando haces fuerza o pones peso encima, su resistencia varía. Es decir, cuando no tienen nada encima, tienen una resistencia que se puede entender como infinita, y cuanta más presión se ejerza, menos resistencia tienen. Por tanto, se puede entender como una resistencia variable a efectos de circuitos electrónicos.
Esta resistencia variable por sí sola no sirve de nada. Para poder medir una señal, hace falta alimentarla y medir una caída de tensión, en voltios. Ese voltaje sí es algo que el Arduino puede medir y con lo que podemos trabajar. La forma más fácil de traducir presión en voltaje es con un divisor de tensión. El funcionamiento es el siguiente:
Ponemos dos resistencias en serie y las alimentamos a 5V. La resistencia de la galga varía, mientras que la resistencia del divisor es constante. Las caídas de tensión en cada una de las resistencias tienen que sumar 5V (flechas roja y azul), y nosotros medimos mediante el PIN la caída representada por la flecha azul. Cuando la resistencia de la galga es muy grande, la caída de tensión en esa resistencia también lo es (V=I·R), y por tanto la caída en la otra resistencia es prácticamente 0. Cuando la resistencia de la galga es muy pequeña, también lo es su caída y por tanto medimos con el PIN un valor cercano a 5V. De forma analítica, el voltaje que medimos sigue la fórmula:
Así, conseguimos que cuanta más presión, menos resistencia en la galga, y más voltaje en el pin. Esta señal la metemos en un pin digital de Arduino, y a partir de un voltaje determinado (3.5V cuando alimentas con 5V al Arduino), la placa entiende como un 1 (HIGH) la señal, y por tanto se detecta como pulsado. Con eso ya se puede hacer un programa para que pase algo cuando se pulsa una tecla.
Las galgas extensiométricas que lleva nuestro piano son estas, concretamente la serie 408, que tienen la forma perfecta para ponerlas en las teclas del piano. En esa misma web las hay de varias formas y tamaños, para que se adapten a la aplicación que queráis.
Por último, si se quisiera ajustar la sensibilidad del piano (que suene con más o menos peso), se puede calcular la resistencia del divisor para que con X peso el voltaje sea 3.5V; o se puede leer con pines analógicos en el Arduino y poner un valor de threshold en el programa (por ejemplo, si lees de 0 a 1023, cuando el valor sea mayor de 400, se considera pulsado). En nuestro caso, los que hicimos fue medir el valor de la resistencia de la galga cuando alguien estaba encima con un multímetro y con eso elegimos las resistencias del divisor por prueba y error.
Electrónica
El circuito del divisor de tensión se tiene que hacer para cada una de las teclas, en nuestro caso 13. Esto implica tirar 2 cables a cada una de las galgas (en total 26 cables), poner 13 resistencias en los divisores de tensión, y luego llevar todas las señales a la placa Arduino que elijamos. Para este proyecto elegimos la placa Arduino Mega por la necesidad de tener 13 pines de lectura digitales.
El cableado de las galgas, aunque es un trabajo aburrido y repetitivo, no es difícil. La opción más fácil es comprar un rollo de cables unidos (por ejemplo ) y con eso ir tirando cables a cada una de las teclas.
Con el circuito planteado, cada galga necesita un cable a 5V y otro que saque la señal analógica. El esquema que usamos nosotros fue utilizar un cable común para las alimentaciones de todas las galgas y sacarlo en un conector JST de 2 cables. Por otro lado, sacamos todas las señales de las teclas blancas a 2 conectores JST de 4 cables cada uno. Las teclas negras, como tienen que poder desmontarse, van cada una a su propio conector de 2 cables, que se conectan a un bus que los lleva a la placa mediante varios conectores.
Aunque pueda parecer sencillo sobre el papel, es importante utilizar un código de colores (negro para GND, rojo para alimentación…) y etiquetar las señales que haya que leer. Si no, al final acabas con una maraña de cables que no sabes a dónde tienen que ir. Lo más importante es ser ordenado y soldar bien las conexiones. Lo último que que queda de la electrónica es añadir las resistencias de los divisores y llevar las señales al Arduino. Para ello diseñamos una PCB a la que llegan los conectores de las galgas y que se conecta al Arduino Mega a modo de shield (se pueden descargar los archivos para EAGLE en nuestro GitHub). El resultado final:
Programa
Llegados a este punto ya tenemos una estructura física con forma de piano, y una electrónica que hace que el Arduino lea un ‘1’ cuando se pulsa una tecla y un ‘0’ el resto del tiempo. Lo que falta para sonar es traducir esos 1s y 0s en sonido. Para ello, utilizamos el programa PureData Extended, una interfaz de programación gráfica que se utiliza para hacer música electrónica.
Este programa lo que hace es recibir la información de Arduino sobre el pin digital que se ha activado, y con ello producir un sonido MIDI asociado a cada pin. Cualquier otra forma que encontréis para hacer esto mismo será suficiente para hacerlo sonar, no es PureData la única alternativa que hay.
Para utilizar PureData, es necesario cargar en el Arduino Mega el ejemplo de Arduino StandardFirmata, de la librería Firmata, que viene con la descarga de Arduino. Ese programa lo que hace es comunicarse a través del puerto serie (el COM 1, 2 o el que sea) con PureData. Con eso PureData está listo para funcionar. Si quieres hacerlo así o tienes curiosidad por cómo funciona, el código está subido en nuestro GitHub. Para que funcione, hay que conectar las notas a los mismos pines de Arduino que nosotros, o sonarán descolocados. Los pines aparecen en el link de GitHub.
Si conocéis o encontráis en internet cualquier otra forma de hacer sonar notas musicales con un Arduino, también os puede valer. Seguro que hay mucha información al respecto, y quizá alternativas más sencillas o que os resulten más familiares. PureData es tan sólo una forma de hacerlo que nosotros utilizamos porque lo conocíamos, pero no tiene por qué ser la mejor. Si no os funciona o no entendéis bien el programa, buscad alternativas y probad hasta que suene.
Con esto terminamos la explicación/tutorial sobre nuestro Piano Gigante. Os dejamos unos vídeos para que lo veáis en acción (más en nuestra playlist de YouTube) y os animamos a venir a cualquier jornada de puertas abiertas en la ETSII, días de Asociaciones o eventos como AULA para probarlo vosotros mismos. Como hemos dicho al principio, no dudéis en preguntarnos si queréis hacer uno vosotros y hay algo que no entendáis bien. Nuestras redes y correo están siempre abiertos al público. Por último, si queréis aprender más sobre Arduino para hacer proyectos como este y muchos otros, no dudéis en consultar nuestra página de tutoriales.