tutoriales.com

Construye un Piano Táctil Interactivo con Arduino y Sensor Capacitivo

Descubre cómo utilizar las entradas analógicas y pines digitales de Arduino para crear un instrumento musical interactivo utilizando el tacto humano y materiales cotidianos como papel aluminio.

Intermedio8 min de lectura9 views
Reportar error

🎹 Introducción al Tacto Capacitivo con Arduino

¿Te has preguntado cómo funcionan los botones táctiles de los smartphones o las placas de inducción? La tecnología detrás de esto es el tacto capacitivo. Nuestro cuerpo humano actúa como un conductor de electricidad con una pequeña capacitancia. En este tutorial, aprovecharemos este principio para construir un mini piano táctil interactivo utilizando una placa Arduino y componentes muy sencillos.

A diferencia de los botones mecánicos tradicionales que requieren presión física para cerrar un circuito, los sensores capacitivos detectan la presencia de nuestro dedo (o cualquier objeto conductor) simplemente al acercarnos o tocarlo. Esto abre un abanico infinito de posibilidades para proyectos creativos, desde instrumentos musicales hasta interfaces de control personalizadas para domótica.

💡 Consejo: No necesitas comprar sensores caros para este proyecto. Con unas simples hojas de papel aluminio, una resistencia y cables de puente, podrás fabricar las teclas de tu piano.

🛠️ Materiales Necesarios

Para llevar a cabo este proyecto con éxito, asegúrate de tener a mano todos los componentes necesarios. La siguiente lista detalla los elementos de hardware que utilizaremos:

ComponenteCantidadDescripción
---------
Placa Arduino (Uno o Nano)1El cerebro de nuestro proyecto
Protoboard (Placa de pruebas)1Para conectar los componentes sin soldar
---------
Resistencias de 1 MΩ (Megaohmio)4Esenciales para la lectura capacitiva
Zumbador (Buzzer) piezoeléctrico1Para emitir las notas musicales
---------
Cables de puente (Jumper wires)VariosConexiones entre Arduino y componentes
Papel aluminio o monedas4Superficies táctiles que harán de "teclas"
⚠️ Advertencia: Las resistencias de 1 MΩ son críticas. Si utilizas resistencias de menor valor (como 220Ω o 10kΩ), el sensor capacitivo no funcionará correctamente y la sensibilidad será imprecisa.

⚙️ Principio de Funcionamiento y Esquema

El secreto de este proyecto reside en la librería CapacitiveSensor, desarrollada originalmente por Paul Badger para Arduino. Esta librería convierte dos o más pines digitales de Arduino en un sensor capacitivo por resistencia/tiempo.

El funcionamiento básico es el siguiente:

  1. El Arduino envía un pulso de voltaje a través de un pin de envío (Send Pin).
  2. La carga eléctrica viaja a través de una resistencia grande (1 MΩ) hacia el pin de recepción (Receive Pin) y la placa táctil (papel aluminio).
  3. Cuando tocas el papel aluminio, tu cuerpo absorbe parte de la carga eléctrica, aumentando la capacitancia del circuito.
  4. El Arduino mide el tiempo que tarda el pin de recepción en cambiar de estado. Un tiempo mayor indica que una mano está tocando la placa.
ARDUINO D4 (Envío) D2 (Recibo) Resistencia 1 MΩ Lámina de Aluminio Dedo Humano Capacitancia Sensor de Tacto Capacitivo El cuerpo humano altera el campo eléctrico, cambiando el tiempo de carga del pin D2

🔌 Conexiones del Hardware

Antes de escribir una sola línea de código, debemos armar nuestro circuito en la protoboard de forma ordenada. Sigue atentamente las siguientes instrucciones de conexión:

Paso 1: Conecta el pin de alimentación de 5V y GND de la placa Arduino a los rieles de la protoboard.
Paso 2: Conecta el pin digital 2 de Arduino (Pin de envío común) a un extremo de las cuatro resistencias de 1 MΩ.
Paso 3: Conecta el otro extremo de cada resistencia a un pin de recepción independiente en el Arduino (pines 4, 6, 8 y 10).
Paso 4: Conecta un cable desde cada pin de recepción hacia una pieza de papel aluminio (tus teclas del piano).
Paso 5: Conecta el zumbador piezoeléctrico: el pin positivo al pin digital 12 de Arduino y el negativo a GND.
📌 Nota: Mantén los cables que van desde el Arduino hasta el papel aluminio lo más cortos y ordenados posible para evitar interferencias electromagnéticas del entorno.

💻 Instalación de la Librería y Código Base

Para que Arduino entienda las señales capacitivas, necesitamos instalar la librería adecuada.

Instalación de la Librería

  1. Abre el IDE de Arduino en tu ordenador.
  2. Ve al menú superior: Sketch -> Incluir Librería -> Administrar Bibliotecas....
  3. En el buscador escribe CapacitiveSensor.
  4. Busca la librería creada por Paul Badger y haz clic en Instalar.

Una vez instalada la librería, podemos proceder con el código fuente de nuestro piano interactivo.

#include <CapacitiveSensor.h>

// Definir pines de envío y recepción
// Pin 2 es el pin de envío compartido para todos los sensores
CapacitiveSensor teclaDo  = CapacitiveSensor(2, 4);
CapacitiveSensor teclaRe  = CapacitiveSensor(2, 6);
CapacitiveSensor teclaMi  = CapacitiveSensor(2, 8);
CapacitiveSensor teclaFa  = CapacitiveSensor(2, 10);

const int buzzerPin = 12;

// Umbral para detectar el toque (ajustar según tus pruebas)
const int umbral = 1000;

void setup() {
  // Opcional: desactivar calibración automática de autocal si se desea
  teclaDo.set_CS_AutocaL_Millis(0xFFFFFFFF);
  teclaRe.set_CS_AutocaL_Millis(0xFFFFFFFF);
  teclaMi.set_CS_AutocaL_Millis(0xFFFFFFFF);
  teclaFa.set_CS_AutocaL_Millis(0xFFFFFFFF);
  
  pinMode(buzzerPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // Leer el valor capacitivo de cada tecla
  long valDo  = teclaDo.capacitiveSensor(30);
  long valRe  = teclaRe.capacitiveSensor(30);
  long valMi  = teclaMi.capacitiveSensor(30);
  long valFa  = teclaFa.capacitiveSensor(30);
  
  // Mostrar valores en el monitor serie para calibración
  Serial.print(valDo);
  Serial.print("\t");
  Serial.print(valRe);
  Serial.print("\t");
  Serial.print(valMi);
  Serial.print("\t");
  Serial.println(valFa);
  
  // Evaluar qué tecla está siendo presionada y reproducir nota
  if (valDo > umbral) {
    tone(buzzerPin, 261); // Nota Do (C4)
  } 
  else if (valRe > umbral) {
    tone(buzzerPin, 294); // Nota Re (D4)
  } 
  else if (valMi > umbral) {
    tone(buzzerPin, 329); // Nota Mi (E4)
  } 
  else if (valFa > umbral) {
    tone(buzzerPin, 349); // Nota Fa (F4)
  } 
  else {
    noTone(buzzerPin); // Apagar zumbador si no hay toque
  }
  
  delay(10);
}

🧪 Calibración y Pruebas del Piano

Cada entorno tiene diferentes niveles de ruido eléctrico y capacitancia ambiental. Por ello, la calibración es un paso fundamental que no debes pasar por alto.

  1. Sube el código proporcionado a tu placa Arduino.
  2. Abre el Monitor Serie en el IDE de Arduino (asegúrate de que la velocidad esté configurada a 9600 bauds).
  3. Observa los números que aparecen en pantalla cuando no tocas el papel aluminio. Esos son tus valores base (deberían ser muy bajos, cercanos a 0 o unos pocos cientos).
  4. Coloca tu dedo sobre una de las teclas de papel aluminio y observa cómo se disparan los números (pueden subir a varios miles).
  5. Modifica la variable const int umbral en el código para que sea superior al valor en reposo, pero inferior al valor cuando tocas la tecla.
💡 Consejo: Si notas que el piano se activa solo o tiene falsos positivos, intenta conectar tu placa Arduino a una fuente de alimentación estable o asegúrate de que el circuito tenga una buena conexión a tierra.

🚀 Mejoras y Proyectos Avanzados

Una vez que tengas tu piano básico funcionando, puedes llevarlo al siguiente nivel con estas ideas creativas:

  • Añadir más notas: Amplía el circuito agregando más resistencias y pines de recepción para completar una octava musical completa (Do, Re, Mi, Fa, Sol, La, Si).
  • Cambiar materiales: Reemplaza el papel aluminio por frutas reales (como plátanos o limones) para crear un "banana piano" interactivo.
  • Control MIDI: Conecta tu Arduino por puerto serie a un software de sintetizador en tu ordenador (como GarageBand o Ableton Live) utilizando bibliotecas MIDI para USB.
Preguntas Frecuentes (FAQ)

¿Por qué el zumbador emite un sonido constante sin tocar nada? Esto suele ocurrir si la resistencia utilizada no es de 1 MΩ o si hay conexiones sueltas en la protoboard. Verifica que el pin de recepción no esté flotando sin su respectiva resistencia.

¿Puedo usar un Arduino Mega en lugar de un Arduino Uno? ¡Sí, por supuesto! El Arduino Mega funciona exactamente igual y te ofrece muchos más pines digitales disponibles para añadir decenas de teclas táctiles.


🎓 Conclusión

¡Felicidades! Has construido exitosamente un instrumento musical interactivo utilizando principios físicos básicos y la versatilidad de Arduino. Este proyecto demuestra cómo la electrónica y la creatividad pueden unirse para crear experiencias divertidas y educativas. ¡Ahora es tu turno de componer tus propias melodías y experimentar con nuevos materiales conductores!

Tutoriales relacionados

Comentarios (0)

Aún no hay comentarios. ¡Sé el primero!