Mano Robotica
Questa risorsa è stata scritta dagli studenti dell'Istituto ITIS "Enrico Mattei" di Urbino, della classe 4A/EN (Matteo Coccia, Andrea Piergiovanni, Daniel Gostoli) nell'a.s. 2021/2022, all'interno del corso di Sistemi automatici per le superiori 2.
Per favore, prima di apportare modifiche, attendi sino alla fine dell'anno scolastico (termina il 30 giugno 2022) oppure contatta il docente di riferimento Giacomo Alessandroni nel caso venissero rilevati contenuti non in linea con le linee guida della comunità. Se leggi questo avviso ad anno scolastico concluso puoi rimuoverlo. |
In questa risorsa viene mostrato come comandare una mano robotica tramite un guanto con estensimetri, così da poterlo pilotare tramite i movimenti della mano.
Descrizione del progetto
modificaPer pilotare la mano robotica vengono utilizzati cinque estensimetri quante le dita della mano, i quali pilotano cinque servomotori che movimentano le dita della mano robotica.
Descrizione | Q.tà |
---|---|
Senosori di flessione | 5 |
Arduino UNO | 1 |
Servomotori | 5 |
Schema di montaggio
modificaDi seguito viene mostrato lo schema di montaggio del circuito:
Codice
modificail codice per il corretto funzionamento del progetto è il seguente:
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
int pos1;
int pos2;
int pos3;
int pos4;
int pos5;
//posizione dei vari servo
int flexSensorPin1 = A0; //analog pin 0
int flexSensorPin2 = A1; //analog pin 1
int flexSensorPin3 = A2; //analog pin 2
int flexSensorPin4 = A3; //analog pin 3
int flexSensorPin5 = A4; //analog pin 4
void setup(){
Serial.begin(9600);
servo1.attach(9);
servo2.attach(10);
servo3.attach(11);
servo4.attach(12);
servo5.attach(13);
pinMode(flexSensorPin1, INPUT);
pinMode(flexSensorPin2, INPUT);
pinMode(flexSensorPin3, INPUT);
pinMode(flexSensorPin4, INPUT);
pinMode(flexSensorPin5, INPUT);
}
void loop(){
Serial.write("Posizione ");
flexSensorReading1 = analogRead(flexSensorPin1);
pos1 = map(flexSensorReading1, 0, 1023, 0, 180);
servo1.write(pos1);
Serial.write(pos1);
Serial.write(" ");
flexSensorReading2 = analogRead(flexSensorPin2);
pos2 = map(flexSensorReading2, 0, 1023, 0, 180);
servo2.write(pos2);
Serial.write(pos2);
Serial.write(" ");
flexSensorReading3 = analogRead(flexSensorPin3);
pos3 = map(flexSensorReading3, 0, 1023, 0, 180);
servo1.write(pos3);
Serial.write(pos3);
Serial.write(" ");
flexSensorReading4 = analogRead(flexSensorPin4);
pos4 = map(flexSensorReading4, 0, 1023, 0, 180);
servo4.write(pos4);
Serial.write(pos4);
Serial.write(" ");
flexSensorReading5 = analogRead(flexSensorPin5);
pos5 = map(flexSensorReading5, 0, 1023, 0, 180);
servo5.write(pos5);
Serial.writeln(pos5);
}
Quando i sensori di flessione vengono piegati, essi inviano un determinato dato che indica di quanto abbiamo piegato il dito (nella mano dove abbiamo inserito il guanto) e di conseguenza tramite Arduino andremo ad azionare i servo motori di quel determinato valore, per far si che il dito della mano robotica simuli lo stesso movimento della mano reale.
Espansioni suggerite
modificaLe modifiche che vorremmo applicare a questo progetto sono diverse come ad esempio controllare la mano tramite dei sensori di muscolo ed avere il controllo nono solo della mano ma dell'intero braccio.