mercoledì 2 aprile 2014

Banana touch: un light controller per le Philips Hue - parte 1: i sensori touch

Avevo promesso di documentare i 3 progetti portati all'Arduino Day. 
Il progetto più semplice e curioso è stato quello a base di frutta che sicuramente ha incuriosito molti. L'idea è molto semplice: si vuole utilizzare la misura dell'effetto capacitivo di alcuni oggetti per pilotare l'accensione di un lampada.
Una lampada un po' speciale, una Philips Hue come quella che ho già descritto in un precedente post. L'idea non è ovviamente nuova, usare la frutta come sensori touch è sicuramente un'idea già ampiamente sfruttata, in questo caso ho esteso il progetto originale utilizzando anche una scatola di cartone sulla quale ho applicato 3 fogli di alluminio (carta stagnola) su 3 diverse facce interne della scatola. Anche in questo caso ho scopiazzato un'idea già sfruttata e collaudata da Kyle McDonald nel suo post DIY 3D Controller :inserendo la mano e variandone la distanza rispetto alle 3 facce, è possibile determinare in modo molto approssimativo la posizione della stessa, rendendo la scatola una sorta di controller in 3 dimensioni!



Il controller funziona misurando la capacità degli oggetti collegati su 5 diversi canali: 1 collegato all'arancia, 1 collegato alla banana, 3 ai fogli di alluminio.
Il principio è molto molto semplice: il circuito è un semplice RC, con una resistenza pull-up ai 5V, e una resistenza collegata ai pin di arduino che ne permette la scarica.
Il condensatore collegato a massa è in realtà sostituito dai frutti o dai fogli di alluminio: in questo modo la seconda faccia del condensatore, quella verso terra, viene sostituita dal corpo umano nel momento in cui questo si avvicina agli oggetti (senza toccarli). Il corpo umano infatti è collegato sempre "a terra".



I due valori di resistenza non servono siano esatti come indicato in figura, in quanto ovviamente ci sono molti fattori ambientali che alla fine rendono questi circuiti molto diversi tra di loro anche in funzione di dove vengono messi e della vicinanza di altri oggetti elettronici, pc, tv, alimentatori, ecc.
L'importante è che la resistenza di pull-up sia molto alta (nell'ordine delle centinaia di KOhm), in modo da rendere il tempo di carica del condensatore sufficientemente alto da essere misurato, mentre la resistenza di "pull-down" deve essere sufficientemente bassa  (nell'ordine dei 10KOhm) per permettere la scarica pressochè istantanea del condensatore (pur senza far passare troppa corrente nel pin di arduino).
La misurazione del valore di capacità del condensatore "umano" è fatta alternando dei cicli di carica e di scarica e misurando il tempo impiegato dal consensatore per caricarsi a 5V.
Per fare questo si impiega un'unico pin di arduino, che viene prima impostato in modalità Output e messo in stato LOW, ovvero a massa. Così facendo il condensatore si scarica quasi istantaneamente. Subito dopo il pin viene impostato in modalità Input, in questo modo la corrente fluisce dalla resistenza di pull-up e carica il condensatore fino ad arrivare alla tensione di 5V. Quando questa tensione viene misurata sul pin di arduino, viene conteggiato il tempo impiegato per arrivare a questo stato, dopodichè il pin viene nuovamente commutato a LOW e il ciclo riparte con una nuova misurazione.
Il tutto viene fatto indipendentemente sui 5 pin  5-6-7-8-9 , in modo da avere di fatto un valore misurato per ogni condensatore.
Per tutti i pin all'avvio dello sketch viene effettuata una misurazione (multipla, poi mediata) al fine di determinare il valore iniziale, che costituisce la base di riferimento ("zero") per confrontare le misurazioni successive.
Per i frutti, viene determinato un valore di soglia in grado di triggerare l'accensione della lampada con un colore fisso.
Per le facce della scatola, viene invece determinata la distanza (molto molto approssimativa) della mano, utilizzando il principio che il valore capacitivo varia con il quadrato della distanza, il che significa che conoscendo il tempo impiegato per caricarsi, la distanza sarà pari a:

DISTANZA=1 / SQRT(TIME)

La distanza, misurata su 3 canali, verrà poi elaborata per determinare il colore (secondo la notazione XY) e l'intensità della luce.
In particolare, il fondo della scatola è stato associato all'intensità, mentre le 2 facce laterali ai parametri XY di colore: l'effetto è che più viene inserita la mano più aumenta la luminosità della luce, variando invece la posizione della mano all'interno della scatola, viene istantaneamente modificata la tonalità del colore.


 Nel prossimo post: come comandare la lampada per variarne colore e luminosità

Nessun commento:

Posta un commento