- Hogyan lehet ultrahangos érzékelő segítségével megépíteni az akadályokat elkerülő robotot
- Szükséges alkatrészek
- Kördiagramm
- Akadályok elkerülése a robotoktól az Arduino-Code használatával
Az akadálykerülő robot egy intelligens eszköz, amely automatikusan érzékeli az előtte álló akadályt, és elkerülheti őket azáltal, hogy más irányba fordítja magát. Ez a kialakítás lehetővé teszi a robot számára, hogy ismeretlen környezetben navigáljon az ütközések elkerülése révén, ami minden autonóm mobil robot elsődleges követelménye. Az Akadálykerülés robot alkalmazása nem korlátozott, és a legtöbb katonai szervezetben használják, amely sok olyan kockázatos munkát végez, amelyet egyetlen katona sem végezhet el.
Korábban a Raspberry Pi és a PIC mikrokontroller használatával építettük az Obstacle Avoiding Robotot. Ezúttal ultrahangos érzékelő és Arduino segítségével építünk egy akadálykerülő robotot. Itt ultrahangos szenzort használnak az út akadályainak érzékelésére a robot és az akadály közötti távolság kiszámításával. Ha a robot bármilyen akadályt talál, megváltoztatja az irányt és tovább mozog.
Hogyan lehet ultrahangos érzékelő segítségével megépíteni az akadályokat elkerülő robotot
A robot építése előtt fontos megérteni az ultrahangos érzékelő működését, mert ennek az érzékelőnek fontos szerepe lesz az akadályok észlelésében. Az ultrahangos érzékelő működésének alapelve az, hogy fel kell jegyezni az érzékelő által az ultrahangos sugárzás továbbításához és az ultrahangos sugárzás vételéhez szükséges időt, miután a felszínre került. Ezután a képlet segítségével kiszámoljuk a távolságot. Ebben a projektben a széles körben elérhető HC-SR04 ultrahangos érzékelőt használják. Ennek az érzékelőnek a használatához hasonló megközelítést követünk a fentiekben.
Tehát a HC-SR04 Trig csapja magasra van állítva legalább 10 ember számára. A hangsugarat 8, 40 kHz-es impulzussal továbbítják.
A jel ezután a felszínre kerül és visszatér, és a HC-SR04 vevő Echo csapja rögzíti. Az Echo csap akkor már magasra emelkedett.
A sugár által a visszatéréshez szükséges időt változó értékben menti és távolsággá alakítja át az alábbiakhoz hasonló számításokkal
Távolság = (Idő x Hangsebesség levegőben (343 m / s)) / 2
Számos projektben használtunk ultrahangos érzékelőt, hogy többet tudjunk meg az ultrahangos érzékelőről, ellenőrizzük az ultrahangos érzékelőhöz kapcsolódó más projekteket.
Az akadálykerülő robot alkatrészei könnyen megtalálhatók. Az alváz készítéséhez bármilyen játékváz használható, vagy egyedi gyártásra is alkalmas.
Szükséges alkatrészek
- Arduino NANO vagy Uno (bármilyen verzió)
- HC-SR04 ultrahangos érzékelő
- LM298N motorvezérlő modul
- 5 V DC motorok
- Akkumulátor
- Kerekek
- Alváz
- Jumper huzalok
Kördiagramm
A projekt teljes kapcsolási rajza alább látható, amint láthatja, hogy Arduino nanót használ. De építhetünk akadályt elkerülő robotot is az Arduino UNO használatával, ugyanazzal az áramkörrel (kövesse ugyanazt a pinout-ot) és kóddal.
Miután az áramkör készen áll, meg kell építenünk az akadályokat elkerülni az autót úgy, hogy az áramkört egy robot alváz tetejére állítjuk, az alábbiak szerint.
Akadályok elkerülése a robotoktól az Arduino-Code használatával
A teljes program bemutató videóval a projekt végén található. A program magában foglalja a HC-SR04 modul felállítását és a jelek kimenetét a motor csapokhoz, hogy ennek megfelelően mozogjanak a motor irányában. Ebben a projektben nem használnak könyvtárakat.
Először határozza meg a HC-SR04 triggert és visszhangját a programban. Ebben a projektben a ravasztüske a GPIO9-hez, az echo tű pedig az Arduino NANO GPIO10-hez csatlakozik.
int trigPin = 9; // a HC-SR04 kiváltó csapszegének int echoPin = 10; HC-SR04 visszhangcsapja
Adja meg az LM298N motorvezérlő modul bemenetének csapjait. Az LM298N 4 adatbeviteli tűvel rendelkezik, amelyek vezérlik a hozzá kapcsolt motor irányát.
int revleft4 = 4; // A bal motor fordított mozgása int fwdleft5 = 5; // A bal motor ForWarD mozgása int jobb 6 = 6; // A jobb oldali motor hátramenete int fwdright7 = 7; // A jobb motor ForWarD mozgása
A setup () függvényben adja meg a használt GPIO csapok adatirányát. A négy motorcsap és a kioldócsap OUTPUT, az Echo Pin pedig bemenet.
pinMode (revleft4, OUTPUT); // a motor csapok beállítása kimeneti pinMode (fwdleft5, OUTPUT); pinMode (revright6, OUTPUT); pinMode (fwdright7, OUTPUT); pinMode (trigPin, OUTPUT); // a trig pin beállítása kimeneti pinMode (echoPin, INPUT); // az echo pin beállítása bemenetként a visszavert hullámok rögzítésére
A loop () funkcióban megkapja a távolságot a HC-SR04-től, és a távolság alapján mozgassa a motor irányát. A távolság megmutatja a robot elé kerülő tárgy távolságát. A távolságot úgy mérjük meg, hogy egy ultrahangos sugár felszakad 10 méternél, és 10us után megkapja. Ha többet szeretne megtudni a távolság méréséről az ultrahangos érzékelő és az Arduino segítségével, kövesse a linket.
digitalWrite (trigPin, LOW); késleltetés mikroszekundum (2); digitalWrite (trigPin, HIGH); // küldjön hullámokat 10 us késleltetésMikroszekundum (10); időtartam = pulseIn (echoPin, HIGH); // visszaverődő hullámok vétele = időtartam / 58,2; // konvertálás távolság késleltetéssé (10);
Ha a távolság nagyobb, mint a megadott távolság, akkor nincs akadály az útjában, és az előre halad.
if (távolság> 19) { digitalWrite (fwdright7, HIGH); // továbblépés digitalWrite (revright6, LOW); digitalWrite (fwdleft5, HIGH); digitalWrite (revleft4, LOW); }
Ha az akadály elkerülése érdekében a távolság kisebb, mint a megadott távolság, az azt jelenti, hogy akad valamilyen akadály. Tehát ebben a helyzetben a robot egy ideig megáll, és hátrafelé halad, majd ismét megáll egy darabig, majd másik irányba fordul.
if (távolság <18) { digitalWrite (fwdright7, LOW); // Stop digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); késés (500); digitalWrite (fwdright7, LOW); // movebackword digitalWrite (revright6, HIGH); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, HIGH); késés (500); digitalWrite (fwdright7, LOW); // Stop digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); késés (100); digitalWrite (fwdright7, HIGH); digitalWrite (revright6, LOW); digitalWrite (revleft4, LOW); digitalWrite (fwdleft5, LOW); késés (500); }
Tehát egy robot így elkerülheti az útjában álló akadályokat anélkül, hogy bárhol elakadna. Az alábbiakban megtalálja a teljes kódot és videót.