«

»

Mar 08

Stampa Articolo

Polsino Arduino con Lilypad

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:

polsino arduino

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
Inoltre i led frontali sono collegati mediante un transistor in modo da ottenere una maggiore intensità di corrente, e di conseguenza luminosa.

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.

polsino arduino

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 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 !!!

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/polsino-arduino-lilypad-2.html

5 comments

Vai al modulo dei commenti

  1. Gabriele

    Fantastico!!

  2. Yash1986

    Domanda stupida… e se piove? Qualche suggerimento per rendere questo polsino[ o impianto simile] waterproof?

    1. Mauro Alfieri

      Ciao Yash,
      la domanda è interessante, spesso si omette di considerare l’idea pioggia.
      Potresti pensare di isolare tutto il circuito con del silicone e coprire tutti i cavi di collegamento con delle guaine.

      Mauro

  3. alessandro

    Molto interessante il progetto.
    Nessuna libreria è stata utilizzata?
    Mi piacerebbe vedere lo schema elettrico.
    Ho un lilypad cinese senza bootloader hai qualche tutorial dettagliato?
    ciao ottimo lavoro

    1. Mauro Alfieri

      Ciao Alessandro,
      evito di acquistare materiale non originale per non trovarmi nelle tue condizioni.
      Puoi cercare in internet se qualcuno ha avuto il tuo medesimo errore o provare con la procedura che si utilizza per l’arduino standalone.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>