sábado, 11 de enero de 2014

Sensor capacitivo y Arduino

Buscando por internet, uno a veces se encuentra algunos proyectos que nos hacen tilín.

Un instructable (http://www.instructables.com/id/Capacitive-Touch-Arduino-Keyboard-Piano/?ALLSTEPS), que me ha parecido genial. Son estas las cosas por las que pienso que Internet merece la pena.

Y un kickstarter, http://www.bareconductive.com/, que vendrá el próximo año con el sello Arduino at Heart, que tiene infinitas posibilidades en cuanto al diseño de interfaces.

¿Quién no ha oído alguna vez la expresión, si no lo tienes lo pintas? Pues eso es precisamente lo que voy a intentar empezar a esbozar hoy. Ya no hacen falta switch buttons, cuyas patillas nunca encajan o se te queda la marca del círculo en el dedo índice. Ahora podemos pintar, literalmente pintar, cualquier interfaz y configurar su comportamiento: contacto o proximidad.

Podemos pintar teclados en mesas en lugar de tener todo un dispositivo, pintar un despertador en la pared al lado de la cama y que al pasar la mano se apague (y tener una RaspberryPi que controle hora, música y altavoces en el otro extremo), pintar interruptores en cualquier lugar, detectores de proximidad, pistas de DDR, instrumentos electrónicos, baldosas ...

Una vez hecha la introducción hay que ver un poco en qué se basa todo esto. La primera vez que lo vi, me pareció brujería. La magia es en realidad es un sensor capacitivo. Una muy breve introducción al mismo la podéis encontrar aquí.

Un punto muy interesante es que para probar esto en un Arduino, no hace falta nada más que unos trozos de papel de aluminio. La documentación de la librería de Arduino está en esta dirección (http://playground.arduino.cc//Main/CapacitiveSensor), y da una muy buena introducción a la capacitividad.

Al final hay un ejemplo bastante sencillo de reproducir, que es lo que he hecho yo en el siguiente esquema.



Se detecta que se está tocando cada trozo de papel de aluminio y se ilumina su led correspondiente. No es tan espectacular como el piano, pero para la primera prueba es más que suficiente.

El código lo podéis descargar de aquí y he intentado que esté bien documentado. Lo más complicado es ajustar el número de mediciones y valor a partir del cual se detecta que se está pulsando algo. Con la salida por el puerto serie de los valores leídos.

En este ejemplo sólo voy a probar el contacto total entre sensor y cuerpo humano. Con resistencias de más valor, el próximo paso será la cercanía y no el contacto.

Y como siempre al final, un vídeo.



Ajustar los valores para que detecte varias pulsaciones a la vez ha sido un poco de prueba y error. Tal vez con otros valores de resistencias y/o añadiendo un condensador como indican en el playground, mejore/estabilice las lecturas.

No hay comentarios: