Rover5 leonardo: montaggio passo passo e collaudo

Riprendo l’articolo comparso venerdì sul Rover5 per mostrarti le fasi di montaggio passo dopo passo con un video e il collaudo del Rover5 leonardo sia su un terreno accidentato sia in casa, sull’infimo pavimento.

rover5 leonardo

Ho voluto dare un nome al robot e siccome ha la base del Rover5 e usa la scheda Arduino Leonardo come microcontrollore ho deciso di chiamarlo Rover5 leonardo.

Avrai notato che tutte le schede puoi posizionarle nella parte posteriore del Rover5 leonardo per lasciare spazio a shield aggiuntive o sensori che nei prossimi progetti vedrai pian piano comporre il rover pilotabile da iPhone/iPad e Android.

rover5 leonardo

La lista della spesa per il Rover5 leonardo

parto subito con l’elenco del materiale che ti occorre:

  • n.1 arduino leonardo
  • n.1 motor shield fe
  • n.1 breadboard anche piccola o in alternativa una proto shield
  • n.1 rover5
  • n.1 base plastica simile al piano del robot beginner kit
  • n.1 o 2 sensori sharp GP2D120X con i relativi cavetti
  • n.4 cavi per breadboard neri
  • n.4 cavi per breadboard rossi

La scelta dell’Arduino Leonardo è derivata sia dal suo costo inferiore rispetto alla versione uno R3 sia al tipo di microcontrollore Atmega 32U4 che garantisce miglio risposta ai segnali di input provenienti da schede esterne, in questo progetto è indifferente l’uso di un arduino uno o di una leonardo, ma le evoluzioni che ho in mente di proporti necessitando di una scheda con caratteristiche proprie della leonardo.

Collegamenti del Rover5 leonardo

le connessioni che devi effettuare sono molto semplici, in quanto la motor shield fe fa gran parte del lavoro a te restano solo i collegamenti:

  • dell’alimentazione dei sensori +5v e Gnd di arduino verso la breadboard
  • i pin di segnale dei sensori A4 e A5
  • l’alimentazione della motor shield fe prelevata dal Vin e Gnd di Arduino
  • il collegamento dei motori, destro e sinistro

Per aiutarti ho realizzato un video del montaggio del Rover5 leonardo:

Lo shetch del Rover5 leonardo

Visto frontalmente presenta il sensore sharp GP2D120X che utilizzerai con la libreria DistanceGP2Y0A21YK.h per determinare la distanza tra rover ed ostacolo:

rover5 frontale

Ecco il primo sketch che ho realizzato:

#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 );
  Serial.begin( 9600 );
}

void loop()
{
  distance = Dist.getDistanceCentimeter();
  Serial.println( distance );
  if ( distance > DISTANZA ) { avanti(); }
  else                       { gira(); }
}

void avanti()
{
    digitalWrite( DIRA,HIGH );
    digitalWrite( DIRB,LOW );

    analogWrite( PWMA,100 );
    analogWrite( PWMB,100 );
}

void indietro()
{
    digitalWrite( DIRA,LOW );
    digitalWrite( DIRB,HIGH );

    analogWrite( PWMA,100 );
    analogWrite( PWMB,100 );
}

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,HIGH );
  digitalWrite( DIRB,HIGH );

  analogWrite( PWMA,100 );
  analogWrite( PWMB,100 );

  delay( 800 );
}

è molto simile ad altri sketch che trovi nel blog relativi ai motori in corrente continua ed ai robot come il Robot Beginner Kit o il Robot Sfera, la particolarità di questo Rover5 è la sua capacità di sorpassare oggetti come puoi vedere nel video riportato sotto.

La linea 01: includi la libreria di decodifica del sensore, in questa versione del rover5 leonardo usi solo il sensore anteriore, vedrai come usare entrambi i sensori nelle sue prossime evoluzioni;

linee 03-07: definisci i pin a cui sono connessi i PWM e DIR dei due motori ( 4 nella versione 4WD ) ed il sensore ( A5 );

linea 13: imposta la distanza in cm ( 0-15 ) dall’oggetto rilevato, a cui il rover5 leonardo dovrà fermarsi e iniziare la manovra di rotazione;

Il cuore dello sketch è costituito dalle linee 31-37 ossia la funzione loop() al cui interno viene definito il moto del rover5 leonardo dopo la lettura del valore proveniente dal sensore, linea 33, valuta se la distanza tra robot e oggetto è maggiore di quella impostata alla linea 13 procede avanti, quando incontra un oggetto e la distanza scende sotto i cm impostati alla linea 13 compie la manovra di rotazione che hai definito con la funzione gira().

La funzione gira() è composta da una sequenza di azioni, manovre, che farai compiere al tuo rover5 leonardo:

  1. fermati – funzione alt();
  2. attendi 1/2 secondo – linea 67;
  3. indietreggia – linea 70 – per un tempo di 1 secondo e 1/2 sufficente – linea 71 -a far allontanare il rover5 dall’oggetto;
  4. fermati – linea 74;
  5. attendi 1/2 secondo – linea 75;
  6. imposta la direzione ei motori identica, essendo i motori montati in modo speculare la stessa rotazione procura un movimento rotatorio;
  7. imposta a 100 il valore del PWM per i canali A e B del rover;
  8. attendi un tempo di 800 millisecondi, tempo necessario a compiere la rotazione.

a questo punto il controllo ritorna alla funzione loop() che valuta se il rover5 leonardo si è allontanato sufficentemente dall’oggetto o necessita di un’ulteriore manovra.

Il video demo del rover5 leonardo

Nel video ho provato il rover5 leonardo sia all’esterno della mia abitazione sia in casa, con oggetti in giro e pavimento scivoloso, guarda cosa è successo:

Realizza anche tu il tuo rover5 leonardo e mandami i video o commenta questo articolo per sapere dove comprare i componenti o come aggiungere nuove funzioni.

Buon divertimento !!!

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

Permanent link to this article: https://www.mauroalfieri.it/elettronica/rover5-leonardo-montaggio-e-collaudo.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.