Robot hand XBee guanto di Gabriele Santin

Se stai leggendo il blog da qualche giorno hai letto della robot hand xbee guanto di Gabriele Santin negli articoli dedicato a questo interessante progetto.

robot hand guanto con sensori

Gabriele ha voluto condividere lo sketch della realizzazione del guanto e della trasmissione xbee dal guanto alla mano ( attuatore ) in quella che in un noto film ( Real Steel ) viene definita modalità ombra ossia la possibilità di far ripetere ad un robot i movimenti di un essere umano in tempo reale.

Quella della fantascienza è una modalità in cui un robot imita i movimenti di un essere umano guardandoli attraverso delle telecamere ed interpretandoli, mentre quella di Gabriele è una modalità di riproduzione dei movimenti della propria mano partendo da alcuni sensori di flessione posti sul guanto.

Robot hand XBee guanto

Il guanto è senza dubbio una parte fondamentale del progetto robot hand xbee, costituisce la parte sensoriale del progetto.

I sensori di flessione di cui è dotato raccolgono le informazioni sulla posizione delle dita della mano della persona che lo indossa e le invia mediante xbee alla mano robot.robot hand xbee guanto schema fritzing

Nello schema noterai che ciascun sensore è collegato ad un pin analogico con un contatto e mediante una resistenza a massa ( Gnd ) come pull-down per le motivazioni descritte da Gabriele nella prima parte del progetto robot hand xbee guanto.

Il modulo XBee non presnta le resistenze di partizione per adattare il segnale xbee a 3,3v ai 5v si arduino in quanto nella realtà Gabriele ha usato un adattatore Xbee per Lilipad che provvede da solo ad adattare questi segnali alla Lilipad.

Il guanto è alimetato con 3 pile da 1,5v ( totale 4,5v ) in quanto non deve controllare parti mobili come i servo e la tensione è sufficiente.

Lo sketch del robot hand guanto

/*
Flex Glove

Created by Santin Gabriele, 2014
I.T.S.T. "J. F. Kennedy", cl. 5^A EA
*/

int ResPollice = A4;  // Vengono definite le variabili 
int ResIndice  = A3;  // associate agli ingressi analogici
int ResMedio   = A2;  // di Arduino Lilypad a cui sono
int ResAnulare = A1;  // collegati i sensori.
int ResMignolo = A0;

int pollice =0;       // Vengono definite le variabili
int indice  =0;       // che conterranno il valore
int medio   =0;       // riadattato da spedire.
int anulare =0;
int mignolo =0;


void setup()
{
  Serial.begin(9600);
  
  pinMode(ResPollice, INPUT);   // Le variabili definite
  pinMode(ResIndice,  INPUT);   // precedentemente vengono
  pinMode(ResMedio,   INPUT);   // impostate come input.
  pinMode(ResAnulare, INPUT);
  pinMode(ResMignolo, INPUT);
}

void loop()
{
  pollice = map(analogRead(ResPollice), 250,610,0,255);  
  indice  = map(analogRead(ResIndice),  330,690,0,255);  
  medio   = map(analogRead(ResMedio),   320,690,0,255);  
  anulare = map(analogRead(ResAnulare), 350,720,0,255);  
  mignolo = map(analogRead(ResMignolo), 230,640,0,255);
  
  Serial.write("<");   // Invio un simbolo di inizio "pacchetto dati".
  Serial.write(pollice);  // Ogni valore precedentemente
  Serial.write(indice);   // riadattato viene inviato
  Serial.write(medio);    // tramite la seriale
  Serial.write(anulare);
  Serial.write(mignolo);
  
  delay(30);
}

le prime linee 01-06: sono i commenti ed i riferimenti all’autore;

linee 08-12: definisci per ciascun sensore collegato all’arduino una variabile di tipo integer relativa al pin a cui il sensore è collegato;

linee 14-18: definisci per ciascun dito della mano una variabile di tipo integer che ti serve per memorizzare il valore letto dal sensore per inviarlo via xbee;

linea 23: imposta la comunicazione Seriale a 9600 baud, questo valore è importante perchè è quello a cui dovrai posizionare anche il ricevitore xbee perchè guanto e mano possano comprendere i messaggi scambiati;

linee 25-29: imposta la modalità di funzionamento dei pin a cui hai collegato i sensori, essendo tali sarà per tutti INPUT;

linee 34-38: sono tutte simili, la differenza tra loro è data dai valori su cui riadattare i segnali in quanto ciascun sensore risente della posizione in cui è inserito e della flessione che il dito gli impone per cui è necessario tarare

i valori letti ed adattarli a valori standard da inviare alla mano. Non mi soffermerò sulla funzione map() che puoi consultare sul sito arduino o in molti miei articoli base. Prendi in considerazione la sola linea 34 per comprendere il fu

nzionamento e ripeti il medesimo ragionamento per tutte le altre linee. La linea 34 assegna alla variabile pollice, definita alla linea 14 il valore letto con analogRead sul sensore collegato al pollice opportunamente rimappato su i valor

i 0,255 partendo dai valori letti. Come sai i pin analogici leggono valori da 0 a 1023 che non possono essereinviati in un unico byte via seriale, per questa ragione Gabriele ha mappato i valori letti 250-610 su 0,255;

linea 40: inizia la trasmissione dei dati letti dai 5 sensori e per farlo usa un carattere differente dai valori letti sui sensori in modo che sul ricevitore potrà capire quando sta arrivando la sequenza di valori letti;

linee 41-45: invia in sequenza i 5 valori letti dai sensori all’xbee via seriale;

linea 47: ad ogni invio dati si ferma per 30 millisecondi prima di ripartire con la lettura dei sensori.

Nel prossimo articolo leggerai come funziona l osketch di ricezione dei segnali via xbee e come applicare quanto ricevuto ai srevomotori.

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/robot-hand-xbee-guanto-di-gabriele-santin.html

6 commenti

1 ping

Vai al modulo dei commenti

    • luigi il 30 Settembre 2014 alle 11:33
    • Rispondi

    Salve,
    complimenti per il lavoro svolto””
    ho letto con molta attenzione il lavoro di Gabriele Santin che tu hai riportato in modo efficace…ho un solo dubbio che la tesina di Gabriele non menziona: bisogna configurare le xbee come trx e rx? e se affermativo come?

    1. Ciao Luigi,
      i moduli XBee devono essere sempre configurati indipendentemente dal progetto, essi si occupano della comunicazione seriale.
      Ho scritto degli articoli in cui ho mostrato come fare.

    • Lorenzo il 23 Febbraio 2015 alle 17:15
    • Rispondi

    Ciao, volevo sapere dove deve essere caricato questo sketch, sulla LilyPad collegata ai sensori di flessione?

    1. Ciao Lorenzo,
      la risposta è si, anche se la domanda mi sembra molto strana posta da chi vuole realizzare un progetto con arduino complesso come questo e non si è informato su come si usa arduino.

    • Paolo il 13 Giugno 2016 alle 11:14
    • Rispondi

    Salve Mauro,
    Volevo sapere se i moduli utilizzati da Gabriele Santin sono stati configurati con il programma XCTU…
    Perchè ero convinto che questi moduli creassero la loro rete in modo del tutto autonomo.
    Grazie

    1. Ciao Paolo,
      lascio la tua richiesta per Gabriele.
      Io per esperienza ho usato diversi programmi e su alcuni trovi dei tutorial nel blog.

  1. […] « Robot hand XBee guanto di Gabriele Santin […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

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