# Braccio robotico con Arduino

Questa risorsa descrive come realizzare un braccio robotico comandato con Arduino.

## Descrizione

Il sistema è composto da cinque servo motori che pilotano mano, polso, gomito spalla e base, azionati con opportuni comandi provenienti dal computer.
Di seguito i comandi per pilotare il braccio robotico.
Comandi :
| Comando | Azione |
| w | Spalla indietro |
| s | Spalla avanti |
| a | Base a destra |
| d | Base a sinistra |
| t | Gomito su |
| g | Gomito giu |
| f | Polso verso sinistra |
| h | Polso verso destra |
| z | Apri mano |
| x | Chiudi mano |

## Software aggiuntivo

Per il corretto funzionamento di questo programma è necessario installare un software aggiuntivo, l'emulatore di terminale Tera Term. Diversamente, utilizzando il sistema di connessione con la porta seriale dell'IDE di Arduino, per ogni movimento di un grado, si è costretti a premere il tasto Invio, cosa che risulterebbe molto scomoda.
Naturalmente, essendo un software che gestisce la porta seriale, va disattivato quando si carica il codice su Arduino per evitare conflitti di gestione.

### Impostazioni di Tera Term

Il software non richiede installazione essendo un singolo file eseguibile.
* Nella prima finestra che compare si deve selezionare Serial e la corrispondente porta seriale a cui è connesso Arduino;
* Dopodiché selezionando il menù Setup e la prima voce Terminal... bisogna spuntare il flag Local echo, così da inviare tutti i dati ricevuti alla porta seriale precedentemente selezionata.
Questo è tutto. Arduino (dove il programma è già stato caricato in precedenza) riceverà tutto quello che viene digitato sulla tastiera.

## Schema di montaggio

Di seguito lo schema di montaggio nella sua parte elettrica. Si noti che i cinque servomotori hanno bisogno di un'alimentazione aggiuntiva.

## Schema elettrico

Per alimentare il braccio è richiesta un'alimentazione di $6~{\text{V}}$ e $3~{\text{A}}$.
Dato che con le batterie al litio si riescono a raggiungere $3~{\text{A}}$ ma si sfora con la tensione a $7,4~{\text{V}}$, per abbassarla a $6~{\text{V}}$ bisogna utilizzare lo stabilizzatore LM7806C che regola la tensione in uscita a $6~{\text{V}}$, ma la corrente a $1,5~{\text{A}}$, pertanto occorre collegarne due in parallelo per ottenere una corrente pari a $3~{\text{A}}$.
Nella rete di alimentazione, sono stati inseriti un diodo e due condensatori, i quali svolgono la seguente funzione:
* il diodo serve per evitare anomalie in caso di batterie inserite con la polarità errata;
* il primo condensatore serve per evitare problemi ai due stabilizzatori in caso di sbalzi di tensione;
* il secondo condensatore serve per proteggere i servomotori se ci sono degli sbalzi di tensione nel circuito precedente.

## Codice

Il codice è stato diviso in tre parti per una sua migliore comprensione.

### Inizializzazione

In questa sezione del codice vengono specificate tutte le costanti e variabili globali e i tasti che si desidera utilizzazione, per la movimentazione del braccio robotico. Va inserita nella stessa directory del programma principale, col nome inizializzazione.h.

### Controllo

Questo è il cuore del codice, dove viene movimentato il braccio robotico.

## Espansioni suggerite

Possibili espansioni di questo progetto sono il controllo remoto tramite joystick, via Bluetooth o Wi-Fi.
Un'altra possibilità è dotare il sistema di intelligenza artificiale per eseguire comandi prestabiliti (come all'interno di una catena di montaggio), o intervenire autonomamente in determinate situazioni che richiedono il suo intervento.