- Componenti richiesti:
- Modulo sensore a ultrasuoni:
- Spiegazione del circuito:
- Come funziona:
- Spiegazione della programmazione:
I robot sono macchine che riducono gli sforzi umani nei lavori pesanti automatizzando le attività in industrie, fabbriche, ospedali ecc. La maggior parte dei robot viene eseguita utilizzando alcune unità di controllo o componenti come un pulsante, telecomando, joystick, PC, gesti e eseguendo alcuni comandi utilizzando il controller o il processore. Ma oggi siamo qui con un Robot Automatico che si muove in modo autonomo senza eventi esterni evitando tutti gli ostacoli sul suo cammino, sì stiamo parlando di Robot Evitando Ostacoli. In questo progetto, abbiamo utilizzato Raspberry Pi e il driver del motore per guidare il robot e il sensore a ultrasuoni per rilevare gli oggetti nel percorso del robot.
In precedenza abbiamo trattato molti Robot utili, li puoi trovare nella nostra sezione Progetti di robotica.
Componenti richiesti:
- Raspberry Pi
- Modulo sensore a ultrasuoni HC-SR04
- ROBOT Chassis completo di vite
- Motori DC
- L293D IC
- Ruote
- Tagliere per il pane
- Resistenza (1k)
- Condensatore (100nF)
- Cavi di collegamento
- Alimentazione o Power bank
Modulo sensore a ultrasuoni:
Un Obstacle Avoider Robot è un robot automatizzato e non ha bisogno di essere controllato utilizzando alcun telecomando. Questi tipi di robot automatizzati hanno alcuni sensori di "sesto senso" come rilevatori di ostacoli, rilevatori di suoni, rilevatori di calore o rilevatori di metalli. Qui abbiamo eseguito il rilevamento degli ostacoli utilizzando i segnali a ultrasuoni. A tale scopo, abbiamo utilizzato il modulo sensore a ultrasuoni.
I sensori a ultrasuoni sono comunemente usati per rilevare oggetti e determinare la distanza dell'ostacolo dal sensore. Questo è un ottimo strumento per misurare la distanza senza alcun contatto fisico, come la misurazione del livello dell'acqua nel serbatoio, la misurazione della distanza, il robot che evita gli ostacoli, ecc. Quindi qui abbiamo rilevato l'oggetto e misurato la distanza utilizzando il sensore a ultrasuoni e il Raspberry Pi.
Il sensore a ultrasuoni HC-SR04 viene utilizzato per misurare la distanza nell'intervallo da 2 cm a 400 cm con una precisione di 3 mm. Il modulo sensore è costituito da un trasmettitore a ultrasuoni, un ricevitore e il circuito di controllo. Il sensore a ultrasuoni è costituito da due occhi circolari di cui uno viene utilizzato per trasmettere l'onda ultrasonica e l'altro per riceverla.
Possiamo calcolare la distanza dell'oggetto in base al tempo impiegato dall'onda ultrasonica per tornare al sensore. Poiché il tempo e la velocità del suono sono noti, possiamo calcolare la distanza con le seguenti formule.
- Distanza = (tempo x velocità del suono nell'aria (343 m / s)) / 2.
Il valore viene diviso per due poiché l'onda viaggia avanti e indietro coprendo la stessa distanza, quindi il tempo per raggiungere l'ostacolo è solo la metà del tempo totale impiegato.
Quindi abbiamo calcolato la distanza (in centimetri) dall'ostacolo come di seguito:
pulse_start = time.time () while GPIO.input (ECHO) == 1: #Controlla se ECHO è HIGH GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distanza = round (distanza, 2) avgDistance = avgDistance + distanza
Dove pulse_duration è il tempo tra l'invio e la ricezione del segnale ultrasonico.
Spiegazione del circuito:
Il circuito è molto semplice per questo robot che evita gli ostacoli usando Raspberry Pi. Un modulo sensore a ultrasuoni, utilizzato per rilevare oggetti, è collegato ai pin 17 e 27 GPIO di Raspberry Pi. Un Motor Driver IC L293D è collegato a Raspberry Pi 3 per pilotare i motori del robot. I pin di ingresso del driver del motore 2, 7, 10 e 15 sono collegati rispettivamente ai pin GPIO di Raspberry Pi 12, 16, 20 e 21. Qui abbiamo utilizzato due motori CC per guidare il robot in cui un motore è collegato ai pin di uscita 3 e 6 del driver del motore IC e un altro motore è collegato ai pin 11 e 14 del driver del motore IC.
Come funziona:
Il funzionamento di questo robot autonomo è molto semplice. Quando il robot è acceso e inizia a funzionare, Raspberry Pi misura le distanze degli oggetti di fronte ad esso utilizzando il modulo sensore a ultrasuoni e memorizza in una variabile. Quindi RPi confronta questo valore con valori predefiniti e prende le decisioni di conseguenza per spostare il robot a sinistra, a destra, in avanti o indietro.
Qui in questo progetto, abbiamo selezionato una distanza di 15 cm per prendere qualsiasi decisione da Raspberry Pi. Ora, ogni volta che Raspberry Pi si trova a una distanza inferiore a 15 cm da qualsiasi oggetto, Raspberry Pi arresta il robot e lo sposta indietro e poi lo gira a sinistra oa destra. Ora, prima di spostarlo di nuovo in avanti, Raspberry Pi controlla nuovamente se è presente un ostacolo entro un raggio di 15 cm di distanza, se sì, ripete di nuovo il processo precedente, altrimenti sposta il robot in avanti fino a quando non rileverà di nuovo qualsiasi ostacolo o oggetto.
Spiegazione della programmazione:
Stiamo usando il linguaggio Python qui per il programma. Prima della codifica, l'utente deve configurare Raspberry Pi. Puoi controllare i nostri tutorial precedenti per Introduzione a Raspberry Pi e Installazione e configurazione del sistema operativo Raspbian Jessie in Pi.
La parte di programmazione di questo progetto gioca un ruolo molto importante per eseguire tutte le operazioni. Prima di tutto, includiamo le librerie richieste, inizializziamo le variabili e definiamo i pin per sensore a ultrasuoni, motore e componenti.
importa RPi.GPIO come ora di importazione GPIO #Importare la libreria dell'ora GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Dopo di ciò, abbiamo creato alcune funzioni def forward (), def back (), def left (), def right () per muovere il robot rispettivamente in avanti, indietro, sinistra o destra e def stop () per fermare il robot, verificare le funzioni nel codice riportato di seguito.
Quindi, nel programma principale, abbiamo avviato il sensore a ultrasuoni e abbiamo letto il tempo tra la trasmissione e la ricezione del segnale e abbiamo calcolato la distanza. Qui abbiamo ripetuto questo processo per 5 volte per una migliore precisione. Abbiamo già spiegato il processo di calcolo della distanza utilizzando il sensore a ultrasuoni.
i = 0 avgDistance = 0 per i nell'intervallo (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) while GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time () while GPIO.input (ECHO) == 1: #Controlla se ECHO è HIGH GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distanza = round (distance, 2) avgDistance = avgDistance + distance
Infine, se il Robot trova un ostacolo davanti ad esso, dopo aver preso la distanza dall'ostacolo, abbiamo programmato il Robot per prendere un percorso diverso.
if avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag == 0): right () flag = 1 else: left () flag = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () flag = 0
Il codice completo per questo robot Raspberry Pi per evitare gli ostacoli è fornito di seguito con un video dimostrativo.