Il progetto che ti presento è un polsino arduino interattivo realizzato da due giovani appassionati Matteo e Marco, il loro progetto si basa su Lilypad, utilizza un accellerometro a 3 assi, un buzzer e dei led:
Come spesso ho scritto e risposto a tutti gli appassionati che commentano i miei articoli: se hai sviluppato un progetto e vuoi condividerlo sul blog ti offro lo spazio che meriti.
E’ quello che Marco e Matteo hanno fatto, mi hanno contattato perché hanno voglia di condividere il progetto del polsino arduino con tutti gli appassionati come te.
Il progetto: polsino arduino con lilypad
Matteo e Marco scrivono del loro progetto:
Il progetto consiste nel creare un polsino elettronico utilizzando un lilypad e un accelerometro. Ecco la lista di cose di cui hai bisogno:
- n.1 polsino (ad esempio quelli usati per giocare a basket o tennis)
- n. 1 arduino lilypad, ad esempio il lilypad 328
- n.1 convertitore seriale-usb per lilypad
- n.1 accelerometro 3 assi
- n.5 led vari di diverso tipo per abbellire il progetto
- n.1 vibe board o micromotore che permette la vibrazione
- n.1 buzzer o cicalino
- n.1 filo da cucire conduttivo
- n.1 modulo di alimentazione
consigliano di usare il lilypad power supply, comodo perché ha uno switch on-off e supporta le pile tipo AA fornendo la tensione di +5v di hai abbiamo bisogno. Il polsino riceve sui 3 ingressi analogici di arduino i tre assi x,y,z dell’accellerometro, ciascun ingresso analogico ha un range 0-1023 in cui il punto centrale è circa 512.
L’accelerometro in base al movimento del polso decide se attivare:
- i led frontali
- il buzzer
- la vibe board
- gli altri led
E’ possibile impostare l’arduino lilypad in modo che:
- i led funzionino solo quando il polsino si muove a destra o a sinistra
- il buzzer suoni solo se il movimento è verso l’alto o verso il basso
- i led frontali e la vibe board funzionino solo se ci si muove in avanti o indietro.
Se hai problemi a reperire il filo per cucire conduttivo puoi benissimo usare dei normali cavi di rame e saldarli facendo attenzione a non bruciare il polsino. Il convertitore usb-seriale va collegato all’arduino lilypad che dispone di un’uscita apposita. Tale convertitore alimenta anche l’arduino lilypad.
Lo sketch del polsino arduino
Marco e Matteo hanno realizzato non solo il polsino ma sopratutto lo sketch del polsino arduino:
int x=512,y=512,z=512,a,b,m,n; //Coordinate default e variabili void setup(){ Serial.begin(9600); pinMode(0,INPUT); //Asse X pinMode(1,INPUT); //Asse Y pinMode(2,INPUT); //Asse Z pinMode(5,OUTPUT); //Led pinMode(6,OUTPUT); //Led pinMode(7,OUTPUT); //Led pinMode(8,OUTPUT); //Led pinMode(9,OUTPUT); //Vibe Board pinMode(10,OUTPUT); //Buzzer pinMode(11,OUTPUT); //Gate Transistor per accender i Led frontali, se LOW accende i led pinMode(12,OUTPUT); //Alimenta l'accelerometro a 3 assi digitalWrite(11,HIGH); //Tengo spenti i led frontali digitalWrite(12,HIGH); //Accendo l'acceleromentro led(); led(); //Inizializzazione } void loop(){ x=analogRead(0); y=analogRead(1); z=analogRead(2); Serial.print(x); Serial.print(" "); Serial.print(y); Serial.print(" "); Serial.println(z); if(x>y){ a=1; b=2; m=x; n=y; if(z>x){ a=3; m=z; } else if(z<y){ b=3; n=z; } } else{ a=2; b=1; m=y; n=x; if(z>y){ a=3; m=z; } else if(z<x){ b=3; n=z; } } if(m>800){ if(a==1) led(); else if(a==2) strobo(); else buzzer(); reset(); } else if(n<300) { if(b==1) led(); else if(b==2) strobo(); else buzzer(); reset(); } } void led(){ digitalWrite(5,HIGH); delay(200); digitalWrite(5,LOW); digitalWrite(6,HIGH); delay(200); digitalWrite(6,LOW); digitalWrite(7,HIGH); delay(200); digitalWrite(7,LOW); digitalWrite(8,HIGH); delay(200); digitalWrite(8,LOW); } void vibe(){ //Vibrazione digitalWrite(9,HIGH); delay(200); digitalWrite(9,LOW); delay(200); } void buzzer(){ //Suono tone(10,1000); delay(300); noTone(10); } void strobo(){ //Flash led digitalWrite(9,HIGH); for(int i=0;i<8;i++){ digitalWrite(11,LOW); delay(100); digitalWrite(11,HIGH); delay(100); } digitalWrite(9,LOW); } void reset(){ x=512; y=512; z=512; delay(500); }
come puoi vedere lo sketch del polsino arduino con lilypad ha alcune difficoltà che Matteo e Marco hanno affrintato in modo corretto e pulito:
linee 06-16: inizializza i pin della lilypad indicando di utilizzare i pin 0,1 e 2 come pin di INPUT con cui leggere i 3 assi dell’accellerometro. I pin 5,6,7 ed 8 per controllare i 4 led posti nella parte posteriore del polsino ed il pin 9 per la vibrazione, il pin 10 per il buzzer ed il pin 11 per controllare il transistor collegato ai led frontali. Il pin 12 è utilizzato come alimentazione per l’accellerometro;
linee 26-28: leggi i valori analogici dei 3 assi dell’accellerometro collegato al polsino arduino ed assegna il valore letto su ciascun pin ad una variabile ( x,y o z );
linee 36-47: esegui i confronti tra le variabili x,y e z per determinare l’asse lungo il quale è avvenuta una accellerazione, tali valori e confronti determinano il valore m utilizzato per compiere l’azione desiderata;
linee 49-58: in funzione del valore m ed a, calcolati alle linee 36-47, decidi se attivare i led in modalità strobo() o se attivare il buzzer;
linee 62-75: imposta la sequenza di accensione dei led collegati ai rispettivi pin, l’accensione avviene in sequenza;
linee 77-82: definisci la funzione vibe() il cui scopo è attivare per 200 millisecondi, circa 1/5 di secondo la vibrazione mediante il pin 9;
linee 84-88: definisci la fuinzione di controllo del buzzer() che esegue una nota di valore 10 per 300 millisecondi per poi tornare in silenzio;
linee 90-99: è la funzione strobo() il cui scopo è occuparsi dell’accensione, similmente ad un Flash stroboscopico, dei led frontali del polsino;
linee 101-107: definisci la funzione di reset() con cui il polsino arduino reimposta tutti i valori relativi alle variabili x,y e z a 512, valore di default medio;
Il video delpolsino arduino all’opera
Marco e Matteo hanno anche realizzato un video demo del funzionamento del polsino arduino con lilypad e lo hanno condiviso in modo che io potessi pubblicarlo:
Buon divertimento !!!
Prima di inserire un commento, per favore, leggi il regolamento
5 pings