- Come costruire un ostacolo evitando il robot utilizzando il sensore a ultrasuoni
- Componenti richiesti
- Schema elettrico
- Robot che evita gli ostacoli utilizzando Arduino - Codice
Il Robot per evitare ostacoli è un dispositivo intelligente in grado di rilevare automaticamente l'ostacolo di fronte ed evitarlo ruotando se stesso in un'altra direzione. Questo design consente al robot di navigare in un ambiente sconosciuto evitando le collisioni, che è un requisito primario per qualsiasi robot mobile autonomo. L'applicazione del robot per evitare gli ostacoli non è limitata ed è ora utilizzato nella maggior parte delle organizzazioni militari che aiuta a svolgere molti lavori rischiosi che non possono essere svolti da nessun soldato.
In precedenza abbiamo costruito Robot per evitare ostacoli utilizzando Raspberry Pi e utilizzando il microcontrollore PIC. Questa volta costruiremo un ostacolo evitando robot utilizzando un sensore a ultrasuoni e Arduino. Qui un sensore a ultrasuoni viene utilizzato per rilevare gli ostacoli sul percorso calcolando la distanza tra il robot e l'ostacolo. Se il robot trova un ostacolo cambia direzione e continua a muoversi.
Come costruire un ostacolo evitando il robot utilizzando il sensore a ultrasuoni
Prima di andare a costruire il robot, è importante capire come funziona il sensore a ultrasuoni perché questo sensore avrà un ruolo importante nel rilevare l'ostacolo. Il principio di base dietro il funzionamento del sensore a ultrasuoni è annotare il tempo impiegato dal sensore per trasmettere i raggi ultrasonici e ricevere i raggi ultrasonici dopo aver colpito la superficie. Quindi ulteriormente la distanza viene calcolata utilizzando la formula. In questo progetto, viene utilizzato il sensore a ultrasuoni HC-SR04 ampiamente disponibile. Per utilizzare questo sensore, verrà seguito un approccio simile spiegato sopra.
Quindi, il perno Trig di HC-SR04 è alto per almeno 10 us. Viene trasmesso un raggio sonico con 8 impulsi di 40 KHz ciascuno.
Il segnale quindi colpisce la superficie e ritorna indietro e catturato dal pin Echo del ricevitore dell'HC-SR04. Il perno Echo era già alto in quel momento mandando alto.
Il tempo impiegato dalla trave per tornare indietro viene salvato in variabile e convertito in distanza utilizzando calcoli appropriati come di seguito
Distanza = (tempo x velocità del suono nell'aria (343 m / s)) / 2
Abbiamo utilizzato il sensore a ultrasuoni in molti progetti, per saperne di più sul sensore a ultrasuoni, controllare altri progetti relativi al sensore a ultrasuoni.
I componenti per questo ostacolo che evita il robot possono essere trovati facilmente. Per realizzare il telaio, è possibile utilizzare qualsiasi telaio giocattolo o può essere personalizzato.
Componenti richiesti
- Arduino NANO o Uno (qualsiasi versione)
- Sensore a ultrasuoni HC-SR04
- Modulo driver motore LM298N
- Motori DC 5V
- Batteria
- Ruote
- Telaio
- Cavi per ponticelli
Schema elettrico
Lo schema elettrico completo per questo progetto è fornito di seguito, come puoi vedere utilizza un Arduino nano. Ma possiamo anche costruire un ostacolo evitando il robot usando Arduino UNO con lo stesso circuito (segui lo stesso pinout) e codice.
Una volta che il circuito è pronto, dobbiamo costruire il nostro ostacolo evitando l'auto assemblando il circuito su un telaio robotico come mostrato di seguito.
Robot che evita gli ostacoli utilizzando Arduino - Codice
Alla fine di questo progetto viene fornito il programma completo con un video dimostrativo. Il programma includerà la configurazione del modulo HC-SR04 e l'invio dei segnali ai pin del motore per spostare la direzione del motore di conseguenza. Nessuna libreria verrà utilizzata in questo progetto.
Per prima cosa definire il pin di attivazione e di eco di HC-SR04 nel programma. In questo progetto il trig pin è collegato a GPIO9 e il pin echo è collegato a GPIO10 di Arduino NANO.
int trigPin = 9; // trig pin di HC-SR04 int echoPin = 10; // Spilla eco di HC-SR04
Definire i pin per l'ingresso del Motor Driver Module LM298N. L'LM298N dispone di 4 pin di ingresso dati utilizzati per controllare la direzione del motore ad esso collegato.
int revleft4 = 4; // Moto inverso del motore sinistro int fwdleft5 = 5; // Movimento in ForWarD del motore sinistro int revright6 = 6; // Moto inverso del motore destro int fwdright7 = 7; // Movimento in avanti del motore destro
Nella funzione setup () , definire la direzione dei dati dei pin GPIO utilizzati. I quattro pin Motor e Trig pin sono impostati come OUTPUT e Echo Pin è impostato come Input.
pinMode (revleft4, OUTPUT); // imposta i pin del motore come output pinMode (fwdleft5, OUTPUT); pinMode (revright6, OUTPUT); pinMode (fwdright7, OUTPUT); pinMode (trigPin, OUTPUT); // imposta il trig pin come output pinMode (echoPin, INPUT); // imposta il pin echo come input per catturare le onde riflesse
Nella funzione loop () , ottenere la distanza da HC-SR04 e in base alla distanza spostare la direzione del motore. La distanza mostrerà la distanza dell'oggetto che si trova davanti al robot. La distanza viene presa facendo esplodere un raggio di ultrasuoni fino a 10 us e ricevendolo dopo 10us. Per ulteriori informazioni sulla misurazione della distanza utilizzando il sensore a ultrasuoni e Arduino, segui il collegamento.
digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); // invia onde per 10 us delayMicroseconds (10); durata = pulseIn (echoPin, HIGH); // riceve onde riflesse distanza = durata / 58,2; // converti in ritardo di distanza (10);
Se la distanza è maggiore della distanza definita significa che non ci sono ostacoli sul suo percorso e si muoverà in avanti.
if (distanza> 19) { digitalWrite (fwdright7, HIGH); // vai avanti digitalWrite (revright6, LOW); digitalWrite (fwdleft5, HIGH); digitalWrite (revleft4, LOW); }
Se la distanza è inferiore alla distanza definita per evitare l'ostacolo, significa che c'è un ostacolo davanti. Quindi, in questa situazione, il robot si fermerà per un po 'e si muoverà all'indietro, dopodiché si fermerà di nuovo per un po' e poi girerà in un'altra direzione.
if (distanza <18) { digitalWrite (fwdright7, LOW); // Ferma digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); ritardo (500); digitalWrite (fwdright7, LOW); // movebackword digitalWrite (revright6, HIGH); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, HIGH); ritardo (500); digitalWrite (fwdright7, LOW); // Ferma digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); ritardo (100); digitalWrite (fwdright7, HIGH); digitalWrite (revright6, LOW); digitalWrite (revleft4, LOW); digitalWrite (fwdleft5, LOW); ritardo (500); }
Ecco come un robot può evitare gli ostacoli sul suo percorso senza rimanere bloccato da nessuna parte. Trova il codice completo e il video di seguito.