Tecnologia vestible

Per començar Elements d'entrada Programació CircuitPython   Recursos CITCEA
Elements no electrònics Elements de sortida Programació Arduino    
Projectes Elements de control Dades pràctiques   Inici

Polsadors tàctils

Els polsadors tàctils són elements metàl·lics o parts fetes amb teixit conductor que s'activen quan es toquen amb el dit o una altra part del cos. Hi ha microcontroladors (com la placa Gemma M0) que incorporen la funció tàctil internament per a totes o algunes entrades analògiques. El que explicarem a continuació és per a aquells que no la incorporen i cal fer-la externament.

Per fer polsadors tàctils es necessiten dues potes del microcontrolador i l'ús d'una biblioteca específica. El connexionat bàsic d'un polsador tàctil seria el de la figura següent en el que una pota (en aquest cas la D9) actua com a emissor i es connecta al botó amb una resistència de valor molt gran. En la figura són 10 MΩ però podria estar entre 100 kΩ i 20 MΩ. La pota que actua com a receptor (en el nostre cas la D10) es podria connectar directament al botó però és preferible posar-hi una resistència d'entre 0,5 kΩ i 2 kΩ (a la figura és 1 kΩ).

polsador tàctil

Si el nostre circuit està alimentat amb piles o bateries, pot ser que no funcioni per manca d'un punt de referència. És recomanable connectar la pota GND del microcontrolador a algun element metàl·lic gros per donar-li una referència; com es mostra a la figura següent. El podeu connectar a un tub d'aigua, un moble metàl·lic, etc. No el connecteu mai a un punt de la instal·lació elèctrica.

polsador tàctil

En elements vestibles no podem connectar-ho a un element metàl·lic. En aquest cas es pot posar connectat a un tros de teixit conductor que estigui en contacte permanent amb alguna part del cos. No és una bona idea fer servir els dits com a referència perquè la pell és mala conductora. És preferible, per exemple, posar aquesta connexió al mig de l'esquena.

En cas que vulguem afegir més polsadors només necessitem afegir una pota per polsador ja que l'emissor pot ser el mateix en tots ells. A la següent figura podem veure com connectaríem dos polsadors tàctils.

dos polsadors tàctils

Per fer servir els polsadors tàctils necessitem unes biblioteques (preparades per Paul Badger) que ens podem baixar del web d'Arduino.

Jo vaig baixar les biblioteques i les vaig intentar instal·lar però vaig tenir dos petits problemes. El primer problema era el nom de la carpeta que hi havia dins el fitxer zip era arduino-libraries-CapacitiveSensor-3e33f75 i resulta que l'entorn Arduino no admet guions en els noms de fitxer. Aquest problema s'arregla canviant el nom de la carpeta; per exemple a CapacitiveSensor. El segon problema és que dins del fitxer comprimit hi trobem el següent arbre de directoris del que només el tros requadrat hem de copiar a la carpeta libraries de l'entorn Arduino.

Contingut del fitxer ZIP

El següent programa llegeix un botó tàctil que fa servir la pota D9 com a emissor i la D10 com a receptor i que encén el LED de la placa cada cop que algú toca el botó.

#include <CapacitiveSensor.h>	// biblioteca per al sensor tàctil
CapacitiveSensor   cs_9_10 = CapacitiveSensor(9,10);	// La pota D9 és l'emissor i la D10 el receptor
void setup(){
	cs_9_10.set_CS_AutocaL_Millis(0xFFFFFFFF);		// Calibració del sensor
	pinMode(7, OUTPUT);		// La pota on hi ha el LED de la placa actua com a sortida
}
void loop(){
	long lecturaSensor =  cs_9_10.capacitiveSensor(30);	// Llegim el sensor
						// 30 és el nombre de mostres recomanat
	if (lecturaSensor > 4000){	// Si és més gran que 4000 és que algú toca el sensor
		digitalWrite(7, HIGH);	// Encén el LED
	} else {
		digitalWrite(7, LOW);	// Apaga el LED
	}
}

En cas de tenir els dos sensors de la figura anterior, el programa podria quedar així:

#include <CapacitiveSensor.h>	// biblioteca per al sensor tàctil
CapacitiveSensor   cs_9_10 = CapacitiveSensor(9,10);	// La pota D9 és l'emissor i la D10 el receptor
CapacitiveSensor   cs_9_12 = CapacitiveSensor(9,12);	// La pota D9 és l'emissor i la D12 el receptor
void setup(){
	cs_9_10.set_CS_AutocaL_Millis(0xFFFFFFFF);		// Calibració del sensor
	cs_9_12.set_CS_AutocaL_Millis(0xFFFFFFFF);		// Calibració del sensor
	pinMode(7, OUTPUT);		// La pota on hi ha el LED de la placa actua com a sortida
}
void loop(){
	long lecturaSensor1 =  cs_9_10.capacitiveSensor(30);	// Llegim el sensor
	long lecturaSensor2 =  cs_9_12.capacitiveSensor(30);	// Llegim el sensor
						// 30 és el nombre de mostres recomanat
...		// Aquí el programa faria alguna cosa a partir de les lectures dels sensors
}

 

 

 

En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.