- Kako izraditi robota koji izbjegava prepreke pomoću ultrazvučnog senzora
- Komponente potrebne
- Kružni dijagram
- Robot koji izbjegava prepreke pomoću Arduino - koda
Robot za izbjegavanje prepreka inteligentan je uređaj koji može automatski osjetiti prepreku ispred sebe i izbjeći ih okretanjem u drugom smjeru. Ovaj dizajn omogućuje robotu da se kreće u nepoznatom okruženju izbjegavajući sudare, što je primarni uvjet za bilo koji autonomni mobilni robot. Primjena robota za izbjegavanje prepreka nije ograničena i koristi se u većini vojnih organizacija koje sada pomažu u obavljanju mnogih rizičnih poslova koje nijedan vojnik ne može raditi.
Prethodno smo napravili robota za izbjegavanje prepreka koristeći Raspberry Pi i koristeći PIC mikrokontroler. Ovaj put ćemo izgraditi robota za izbjegavanje prepreka pomoću ultrazvučnog senzora i Arduina. Ovdje se ultrazvučni senzor koristi za otkrivanje prepreka na putu izračunavanjem udaljenosti između robota i prepreke. Ako robot pronađe bilo kakvu prepreku, mijenja smjer i nastavlja se kretati.
Kako izraditi robota koji izbjegava prepreke pomoću ultrazvučnog senzora
Prije nego što krenete u izradu robota, važno je razumjeti kako ultrazvučni senzor radi jer će ovaj senzor imati važnu ulogu u otkrivanju prepreka. Osnovni princip rada ultrazvučnog senzora je bilježenje vremena potrebnog senzoru za prijenos ultrazvučnih zraka i primanje ultrazvučnih zraka nakon udara u površinu. Zatim se daljina izračunava pomoću formule. U ovom se projektu koristi široko dostupni ultrazvučni senzor HC-SR04. Da biste koristili ovaj senzor, slijedit će se gore objašnjeni pristup.

Dakle, Trig pin HC-SR04 napravljen je visoko za najmanje 10 nas. Zvučna zraka se prenosi s 8 impulsa od po 40KHz.

Signal zatim pogodi površinu i vrati se natrag te zabilježi prijemnik Echo pin HC-SR04. Pin za odjek već je bio visoko u vrijeme slanja.

Vrijeme potrebno zraci da se vrati natrag sprema se u varijablu i pretvara u udaljenost pomoću odgovarajućih izračuna kao u nastavku
Udaljenost = (Vrijeme x Brzina zvuka u zraku (343 m / s)) / 2
U mnogim smo projektima koristili ultrazvučni senzor, kako bismo saznali više o ultrazvučnom senzoru, provjerili druge projekte koji se odnose na ultrazvučni senzor.
Komponente za ovog robota koji izbjegava prepreke mogu se lako pronaći. Za izradu šasije može se koristiti bilo koja šasija za igračke ili se može napraviti po mjeri.
Komponente potrebne
- Arduino NANO ili Uno (bilo koja verzija)
- HC-SR04 ultrazvučni senzor
- LM298N Pogonski modul motora
- 5V istosmjerni motori
- Baterija
- Kotačići
- Šasija
- Jumper žice
Kružni dijagram
Kompletna shema sklopa za ovaj projekt dana je u nastavku, kao što vidite, koristi Arduino nano. Ali također možemo napraviti prepreku koja izbjegava robota koristeći Arduino UNO s istim krugom (slijedite isti pinout) i kodom.

Jednom kada je krug spreman, moramo izgraditi svoj automobil koji izbjegava prepreke sastavljanjem kruga na vrhu robotske šasije kao što je prikazano dolje.

Robot koji izbjegava prepreke pomoću Arduino - koda
Kompletni program s demonstracijskim video zapisom dan je na kraju ovog projekta. Program će uključivati postavljanje HC-SR04 modula i iznošenje signala na motorne pinove kako bi se u skladu s tim pomaknuo smjer motora. U ovom se projektu neće koristiti knjižnice.
Prvo definirajte trig i echo pin HC-SR04 u programu. U ovom projektu trig pin je povezan s GPIO9, a echo pin je povezan s GPIO10 od Arduino NANO.
int trigPin = 9; // trig pin HC-SR04 int echoPin = 10; // Odjeljak HC-SR04
Definirajte iglice za ulaz modula pogonskog motora LM298N. LM298N ima 4 ulazne pinove koji se koriste za kontrolu smjera motora koji je spojen na njega.
int revleft4 = 4; // REVerse kretanja lijevog motora int fwdleft5 = 5; // ForWarD kretanje lijevog motora int revright6 = 6; // OBRATNO kretanje desnog motora int fwdright7 = 7; // ForWarD kretanje desnog motora

U funkciji setup () definirajte smjer podataka korištenih GPIO pinova. Četiri klina motora i klin Trig postavljeni su kao IZLAZ, a Echo pin kao ulaz.
pinMode (revleft4, IZLAZ); // postavljanje pinova motora kao izlaznog pinMode (fwdleft5, OUTPUT); pinMode (revright6, IZLAZ); pinMode (fwdright7, IZLAZ); pinMode (trigPin, IZLAZ); // postavljamo trig pin kao izlazni pinMode (echoPin, INPUT); // postaviti eho pin kao ulaz za hvatanje reflektiranih valova
U funkciji loop () dobijte udaljenost od HC-SR04 i na temelju udaljenosti pomaknite smjer motora. Udaljenost će pokazati udaljenost objekta koja dolazi ispred robota. Udaljenost se uzima pucanjem ultrazvučne zrake do 10 us i primanjem nakon 10 us. Da biste saznali više o mjerenju udaljenosti pomoću ultrazvučnog senzora i Arduina, slijedite vezu.
digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); // slanje valova za 10 us delayMicroseconds (10); trajanje = pulsIn (echoPin, HIGH); // primamo udaljenost odbijenih valova = trajanje / 58,2; // pretvori u kašnjenje na daljinu (10);
Ako je udaljenost veća od definirane udaljenosti, znači da na putu nema prepreke i kretat će se u smjeru naprijed.
if (udaljenost> 19) { digitalWrite (fwdright7, HIGH); // pomicanje naprijed digitalWrite (revright6, LOW); digitalWrite (fwdleft5, HIGH); digitalWrite (revleft4, LOW); }
Ako je udaljenost manja od definirane udaljenosti kako bi se izbjegla prepreka, znači da postoji neka prepreka. Dakle, u ovoj situaciji robot će se neko vrijeme zaustaviti i nakon toga opet zaustaviti na neko vrijeme, a zatim se okrenuti u drugom smjeru.
if (udaljenost <18) { digitalWrite (fwdright7, LOW); // Zaustavi digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); kašnjenje (500); digitalWrite (fwdright7, LOW); // premještanje povratne riječi digitalWrite (revright6, HIGH); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, HIGH); kašnjenje (500); digitalWrite (fwdright7, LOW); // Zaustavi digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); kašnjenje (100); digitalWrite (fwdright7, HIGH); digitalWrite (revright6, LOW); digitalWrite (revleft4, LOW); digitalWrite (fwdleft5, LOW); kašnjenje (500); }
Dakle, ovo je način na koji robot može izbjeći prepreke na svom putu, a da nigdje ne zapne. Kompletni kod i video pronađite u nastavku.

