Partiamo col cervello del nostro robot, ovvero la Raspberry Pi 3 Model B:
Abbiamo preferito questa scheda ad Arduino in quanto ha una potenza di calcolo davvero interessante, consente di aggiungere facilmente la camera, ha il WiFi integrato ed è compatibile con tutti i moduli disponibili già per Arduino.
Per caricare il sistema operativo e tutti i programmi abbiamo utilizzato una MicroDrive 8GB Classe 10.
La Raspberry, come la maggior parte della componentistica necessita di essere alimentata; noi abbiamo scelto un’unica alimentazione per tutto il robot. Ci siamo affidati ad una PowerBank Lumsing da 10000mA la quale può garantire senza problemi molte ore di funzionamento senza cali di tensione, per questo motivo preferita al pacco batterie. Essa dispone di 3 uscite USB, 2 delle quali sono a 2.1 A attraverso le quali alimentiamo Raspberry e motori.
Questa PowerBank è stata acquistata su Amazon ad un prezzo davvero basso in confronto alla sua capacità.
Di fondamentale importanza per raggiungere gli obiettivi della competizione è la Camera. Noi abbiamo scelto la rev. 1.3 che monta un’ottica a 5Mpx, che sono più che sufficienti, registra video in Full HD e si aggancia facilmente nell'apposito reparto della Raspberry.
Fondamentali per il movimento del robot sono i 2 Motori DC 3-6V con ruote in gomma.
Ad ogni motore è stato saldato un Condensatore in ceramica da 100uF che evita eventuali problemi di interferenza dovuti allo strofinio delle spazzole dei motori.
Per controllare i motori abbiamo usato il Driver L298N che grazie a un doppio ponte H permette il controllo dei motori.
E' costituito da una serie di circuiti e da ponticelli che permettono l'attivazione/disattivazione dei motori collegati. Esso viene alimentato direttamente dalla PowerBank tramite un cavetto USB tagliato appositamente.
Prima di arrivare al Driver la corrente passa da un bottone On/Off a cui è collegato anche un Led verde, collegato ad una resistenza di 1Kohm per indicare l’accensione dei motori.
Per il rilevamento degli ostacoli abbiamo usato 7 dei sensori Infrarossi. Di questi 4 sono posizionati nel secondo piano alimentati a 5V e servono per individuare ed evitare gli ostacoli, 1 si trova sotto il primo piano e si attiva quando l’oggetto è abbastanza vicino da poter essere catturato, mentre gli altri 2 si trovano all'interno della presa e consentono di evitare gli ostacoli quando la presa viene abbassata, in quanto altrimenti avremmo dovuto tarare troppo lontano gli altri infrarossi e questo causava problemi. Sul sensore è presente un regolatore per aumentare o diminuire la distanza a cui viene rilevato l’ostacolo. Questo tipo di sensore è composto da un diodo emettitore ed un ricevitore; l’emettitore invia un raggio infrarosso e ritorna nel ricevitore quando incontra un ostacolo. Questo sistema però soffre parecchio la luce solare, motivo per cui le nostre prove, come anche la competizione, avvengono a finestre chiuse per evitare rumore proveniente da possibili raggi solari.
Un altro sensore, per individuare la presenza di ostacoli, è il modulo sonar HC-SR04 il quale consente di determinare mediante l’emissione di ultrasuoni la distanza a cui si trova un oggetto. Il range va da 4 cm a 4 metri. Si alimenta a 5V e usa 2 pin della Raspberry. Poiché il pin della Raspberry sopportano una tensione massima di 3.3V è necessario utilizzare delle resistenze, 1Kohm e 2Kohm, per creare un partitore che ne limiti la tensione di ritorno. Questo sensore però è molto sensibile alle inclinazioni, infatti se il sonar non è orientato quasi perfettamente in perpendicolare all'ostacolo le misure daranno valori totalmente errati.
Il robot necessita di muoversi, non solo avanti e indietro, ma esso deve eseguire anche delle rotazioni di un preciso angolo. Per misurare l’angolo di rotazione abbiamo usato il modulo Giroscopio MPU6050 6 assi. Questo modulo va alimentato a 5V e si collega ai due ingressi SDA ed SCL della Raspberry e tramite codice si procede al corretto indirizzamento, in questi due ingressi consentono di collegare più moduli assieme variando l’indirizzo.
Un altro modulo che consente di determinare le rotazioni, questa volta in senso assoluto in quanto prende le informazioni del campo magnetico terrestre, è il magnetometro HMC5883L. Esso ci restituisce dei valori in Gauss che poi tramite codice vengono tradotti in angoli da 0 a 360, dove 0 è il Nord terrestre.
Per il nostro sistema di presa abbiamo usato due servo motori SG-90. Questo tipo di servo motore viene alimentato a 5V e consente movimenti rotazionali di 180°, esso viene gestito da codice usando una PWM a 50Hz.
I componenti hardware si collegano alla Raspberry attraverso dei Jumper di varie misure, 10 o 20 cm. Per rendere più ordinato il progetto utilizziamo una Breadboard; questa ci consente inoltre di usare soltanto 2 pin Vcc (3.3V e 5V) e 2 di Ground per alimentare tutta la componentistica.