Sul Rover5 hai già letto altri tutorial relativi al cambiare l’assetto e sistemare i cavi ed il controllo degli encoder oggi lo assembliamo e ci carichiamo il primo sketch.
Prima di tutto è necessario che tu esegua una piccola modifica alla struttura plastica per ospitare i sensori SHARP GP2D120X
ho scelto di montarne 2 sensori sul Rover5, uno per il lato anteriore ed uno per il lato posteriore:
in un primo test ne utilizzerai solotanto uno collegato al terminale A5 ( pin 5 analogico di arduino ) per semplificare il test:
In futuro i due sensori ti torneranno utili per controllare sia il lato anteriore sia quello posteriore durante le manovre per evitare gli ostacoli, puoi decidere di acquistare anche il Rover5 con un solo sensore ed in futuro acquistare il secondo.
Ogni sensore ha 3 fili: Vcc ( +5v ), GND ( polo negativo o massa ) e segnale analogico, come puoi aver letto dal datasheet e nel Tutorial: SHARP 2D120X e Arduino dedicato a questo sensore.
Assemblare il Rover5
per assemblare il tuo Rover5 ti occorre:
- n.1 Rover5 cingolato a 2 o 4 motori;
- n.1 arduino uno o leonardo io ti consiglio, se devi acquistarne una, la leonardo, in futuro faremo evolvere il rover5 con questa versione di arduino;
- n.1 breadboard piccola;
- n.1 motor shield fe;
- n.1 connettore di alimentazione per arduino;
- n.1 o 2 sensori sharp GP2D120X;
- n.1 base plastica del tipo utilizzata nel Beginner Robot o realizzata ad hoc da del plexiglass;
- qualche cavo per breadboard.
prima di assemblare il tutto segui il tutorial su come sistemare i cavi del rover5 per guadagnare spazio epoter alloggiare il pacco batterie comodamente nel corpo del rover5.
Sistemato i pacco batterie puoi montare la base plastica sul corpo del rover5, 3 del 4 buchi corrispondono senza far sforzi, io ho deciso di non aggiungervi la 4 vite, se vuoi farlo modifica con un mini-trapano la base plastica ed aggiungi la 4° vite.
Fai in modo che i fili dei motori e dei sensori fuoriescano dalla base plastica.
Monta l’arduino con i suoi distanziali, e la motor shield su arduino.
Collegamenti elettrici del rover5
le connessioni elettriche cono semplicissime e tutte farre con i cavetti da breadboard:
collega i 2 motori ai morsetti della motor shield preposti per i motori A e B, e collega l’alimentazione della motor shield ai pin Vin e Gnd di Arduino:
collega due cavetti tra la breadboard montata davanti ed i terminalei +5v e Gnd di arduino, alla breadboard collega anche i cavi rosso e nero dei sensori sharp GP2D120X:
I terminali di segnale provenienti dai sensori collegali ai pin A5 ed A4 di arduino, anche se in un primo test utilizzeremo solo il sensore connesso al pin A5.
Imposta i pin della motor shield fe come in figura o scegli quelli che più ritieni opportuni in base al tuo progetto, ricordati di modificarli anche sullo sketch:
lo sketch del rover5
ecco lo sketch che puoi utilizzare per questo primo test:
#include <DistanceGP2Y0A21YK.h> #define PWMA 6 #define PWMB 9 #define DIRA 7 #define DIRB 8 #define SHIR A5 #define motoreA 0 #define motoreB 0 #define AVANTI 0 #define INDIETRO 0 #define DISTANZA 8 DistanceGP2Y0A21YK Dist; int distance = 0; void setup() { pinMode( PWMA,OUTPUT ); pinMode( PWMB,OUTPUT ); pinMode( DIRA,OUTPUT ); pinMode( DIRB,OUTPUT ); pinMode( SHIR,INPUT ); Dist.begin( SHIR ); } void loop() { distance = Dist.getDistanceCentimeter(); if ( distance > DISTANZA ) { avanti(); } else { gira(); } } void avanti() { digitalWrite( DIRA,HIGH ); digitalWrite( DIRB,HIGH ); analogWrite( PWMA,200 ); analogWrite( PWMB,200 ); } void indietro() { digitalWrite( DIRA,LOW ); digitalWrite( DIRB,LOW ); analogWrite( PWMA,200 ); analogWrite( PWMB,200 ); } void alt() { analogWrite( PWMA,0 ); analogWrite( PWMB,0 ); } void gira() { // STOP x 1/2 sec alt(); delay( 500 ); // INDIETRO x 1 secondo e 1/2 indietro(); delay( 1500 ); // STOP x 1/2 sec alt(); delay( 500 ); // Gira digitalWrite( DIRA,LOW ); digitalWrite( DIRB,HIGH ); analogWrite( PWMA,200 ); analogWrite( PWMB,200 ); delay( 800 ); }
Lo sketch fa uso della libreria DistanceGP2Y0A21YK.h già illustrata nell’articolo dedicato al sensore sharp e sebbene non sia proprio la libreria corrispondente al tuo tipo di sensore è abbastanza precisa sui 10/15 cm perchè tu possa utilizzarla.
La distanza a cui il Rover5 rileva l’oggetto e decide di invertire la rotta la puoi definire con la variabile DISTANZA impostata a 8 ( cm ).
Le manovre sono state definite mediante i tempi di delay per cui puoi aumentare i tempi se vuoi che la manovra duri di più o diminuirle per rendere le manovre più rapide e meno ampie.
La velocità dei PWM è imposta a 200, il range va da 0 ( alt ) a 255 ( velocità massima ) ma già con questa impostazione mi è sembrato abbastanza veloce, verifica nel video sotto, puoi aumentare e diminuire questo valore nelle singole funzioni: avanti(), indietro() e gira() ovviamente non nell’alt() altrimenti non ti si ferma più.
Il cuore dello sketch è la funzione loop() in cui il rover5 decide il suo comportamento:
linea 32: acquisisci la distanza dell’oggetto rilevata dal sensore sharp anteriore;
linee 34-35: in funzione del valore letto dal sensore e della DISTANZA impostata definisce se proseguire o se iniziare una manovra di rotazione gira() con cui evitare l’ostacolo.
il video
ecco il video demo, breve ma chiaro, presto ne pubblicherò altri con la dimostrazione anche dei sensori in funzione:
Novità
Se sei un lettore del blog fedele avrai notato che ho dedicato maggior spazio alla descrizione del rover5 e delle sue funzioni che al suo sketch, non è commentato riga per riga; questa scelta di cambiamento parte oggi in seguito ad alcune segnalazioni di utenti. L’idea è di raccontarti cosa puoi fare con il progetto più che il codice, se hai necessità di maggiori indicazioni su cosa accade nel codice commenta l’articolo, io ci sono sempre per darti tutti i chiarimenti che desideri.
Commenta questo articolo e dimmi cosa ne pensi di questa nuova impostazione degli articoli, ci tengo molto al tuo parere e vorrei che fossimo tutti insieme a dare un senso al blog.
Buon divertimento con il Rover5 !!!
19 commenti
1 ping
Vai al modulo dei commenti
Ciao,ma come hai fatto a farlo muovere senza che l’arduino sia collegato al pc?non deve essere alimentato?
Viene alimentato tramite delle batterie 🙂
bel montaggio , sarebbe molto utile un simile robot per visionare con una videocamera posti inacessibili
Autore
Ciao Maurizio,
Bell’idea, che ne dici di sperimentarlo?
A quali posti inaccessibili stai pensando?
Mauro
Ciao, avrei bisogno di diverse informazioni per creare questo progetto, la prima è se lei sa se la base plastica di colore rosso si riesce a trovare in vendita separatamente dal beginner kit , poi vorrei sapere cosa si intende per connettore di alimentazione per arduino , cioè quale cavo devo comprare!
Autore
Ciao Enrico,
la base del beginner kit è in vendita sul sito robot-domestici.it anche senza il kit e se compri da loro il kit Rover5 puoi chiedere di spedirti tutto insieme.
Il connettore per arduino è un jack tondo che va inserito nell’alloggio per l’alimentazione, quello nero per capirci.
va bene questo rover 5 per eseguire il progetto? http://www.robot-domestici.it/joomla/component/virtuemart/robot-in-kit/rover-5-tank-chassis-2-motors
Autore
Ciao Enrico,
se vuoi seguire il progetto è più conveniente il kit completo.
Comprando i componenti singoli il costo è superiore perché sui kit completi è applicato uno sconto.
Ciao Mauro avrei bisogno di diverse informazioni su questo progetto che vorrei anche io realizzare per la maturità. Per prima vorrei sapere cosa si intende per “connettore di alimentazione per Arduino” cioè quali cavi devo procurarmi , poi vorrei sapere se e possibile procurarsi la basetta di colore rosso senza comprare il beginner kit e infine se il rover 5 bianco venduto sul sito http://www.robotdomestici.it va bene per questo progetto, grazie in anticipo .
Arrivederci
Comunque va bene grazie mille delle informazioni, e dove lo posso trovare il kit completo e come si chiama ?
Autore
Ciao Enrico, trovi tutto sul sito robot-domestici dovrebbe esserci anche un link nei miei articoli, ti consiglio di leggerli bene sia in fase di acquisto sia di montaggio perché il progetto richiede l’uso di logiche di programmazione e costruzione da trattare con attenzione per la buona riuscita del progetto.
non riesce per caso, se non la disturbo troppo a inviarmi il link del kit completo in vendita su robot-domestici? che personalmente non lo trovo , mi scusi per il disturbo e le tante domande
Autore
Ciao Enrico,
il link al kit è il seguente: http://www.robot-domestici.it/joomla/component/virtuemart/Arduino/arduino-kit/leo-wi-rover5
Comprendo il tuo entusiasmo e l’impazienza tuttavia ti esorto a dedicare alla ricerca e lettura di questo progetto più calma e attenzione, troverai molte informazioni fondamentali per la corretta riuscita del tuo progetto.
ok grazie mille di tutto ! e comunque io vorrei realizzare qualcosa di più semplice senza comandarlo con ipad o cose simili, ma semplicemente vorrei realizzarlo facendo in modo che si muova da solo autoalimentandosi con le pile e che ogni volta che si avvicina a un ostacolo, cambi direzione grazie ai sensori di prossimità
Autore
Ciao Enrico,
in tal caso ti consiglio di comprare direttamente il beginner kit ( http://www.robot-domestici.it/joomla/component/virtuemart/robot-beginner-kit-arduino-uno ) con sensori e arduino e di comprare solo la base cingolata extra.
Non avevo compreso lo scopo del tuo progetto e immaginavo tu avessi deciso di realizzare qualcosa di extra al solo evitare gli ostacoli.
Scusi un ultima cosa,mi potrebbe inviare il link della base di plastica di colore rosso da sola,senza il beginner kit,in vendita su robot-domestici?
Autore
Ciao Enrico, la sola base plastica non si vende, ti conviene acquistare tutto il beginner kit come ti ho scritto e a parte la base cingolata.
E anche per piacere il link del connettore di alimentazione per Arduino,scusa il disturbo..
Autore
Ciao Enrico, questo é presente già sul porta batterie del beginner kit.
[…] « Rover5: il montaggio e il primo test […]