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

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/polsino-arduino-lilypad-2.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.