- Szükséges alkatrészek:
- Ultrahangos érzékelő modul:
- Áramkör magyarázat:
- Hogyan működik:
- Programozási magyarázat:
A robotok olyan gépek, amelyek csökkentik az emberi erőfeszítéseket a nehéz munkákban azáltal, hogy automatizálják az ipar, a gyárak, a kórházak stb. Feladatait. A robotok nagy részét valamilyen vezérlőegység vagy alkatrészek, például nyomógomb, távirányító, joystick, PC, gesztusok és valamilyen parancs végrehajtása vezérlő vagy processzor használatával. De ma egy automata robotkal vagyunk itt, amely önállóan mozog mindenféle külső esemény nélkül, elkerülve az útjában lévő összes akadályt, igen, az akadálykerülő robotról beszélünk. Ebben a projektben a Raspberry Pi és a Motor meghajtót használtuk a robot és az ultrahangos érzékelő meghajtására a robot útjában lévő tárgyak észleléséhez.
Korábban számos hasznos robotról számoltunk be, amelyeket a Robotics projektek részben talál.
Szükséges alkatrészek:
- Raspberry Pi
- HC-SR04 ultrahangos érzékelő modul
- ROBOT alváz csavarral
- DC motorok
- L293D IC
- Kerekek
- Kenyérlap
- Ellenállás (1k)
- Kondenzátor (100nF)
- Csatlakozó vezetékek
- Tápegység vagy Power bank
Ultrahangos érzékelő modul:
Az Obstacle Avoider robot egy automatizált robot, amelyet nem szükséges távirányítóval vezérelni. Az ilyen típusú automatizált robotok rendelkeznek néhány „hatodik érzék” érzékelővel, például akadályérzékelőkkel, hangérzékelőkkel, hőérzékelőkkel vagy fémdetektorokkal. Itt elvégeztük az akadályok detektálását ultrahangjelekkel. Erre a célra ultrahangos érzékelő modult használtunk.
Az ultrahangos érzékelőket általában objektumok észlelésére és az akadály távolságának meghatározására használják az érzékelőtől. Ez egy nagyszerű eszköz a távolság fizikai érintkezés nélküli mérésére, mint például a vízszintmérés a tartályban, a távolságmérés, az akadályelhárító robot stb. Tehát itt észleltük az objektumot, és ultrahangos érzékelő és Raspberry Pi segítségével mértük a távolságot.
A HC-SR04 ultrahangos érzékelőt a 2–400 cm közötti távolság 3 mm pontossággal történő mérésére használják. Az érzékelő modul ultrahangos adóból, vevőből és a vezérlő áramkörből áll. Az ultrahangos érzékelő két kör alakú szemből áll, amelyek közül az egyiket az ultrahangos hullám továbbítására, a másikat pedig annak fogadására használják.
Kiszámíthatjuk az objektum távolságát az ultrahangos hullám által az érzékelőhöz való visszatéréshez szükséges idő alapján. Mivel a hang ideje és sebessége ismert, a következő képletekkel számíthatjuk ki a távolságot.
- Távolság = (Idő x Hangsebesség levegőben (343 m / s)) / 2.
Az érték el van osztva kettővel, mivel a hullám előre és hátra halad ugyanolyan távolságot lefedve. Így az akadály eléréséhez szükséges idő csak a teljes idő fele.
Tehát kiszámoltuk az akadálytól való távolságot (centiméterben) az alábbiak szerint:
pulse_start = time.time () míg GPIO.input (ECHO) == 1: # Ellenőrizze, hogy az ECHO HIGH GPIO.output (led, Hamis) pulse_end = time.time () pulse_duration = pulse_end - pulse_start távolság = pulse_duration * 17150 távolság = kör (távolság, 2) avgDistance = avgDistance + távolság
Ahol az impulzus időtartama az ultrahangos jel küldése és vétele közötti idő.
Áramkör magyarázat:
Az áramkör nagyon egyszerű ehhez az akadálykerülő robothoz a Raspberry Pi használatával. Az objektumok észlelésére használt ultrahangos érzékelő modul a Raspberry Pi GPIO 17. és 27. érintkezőjéhez csatlakozik. A robotmotorok vezetéséhez egy motorvezérlő IC L293D csatlakozik a Raspberry Pi 3-hoz. A motorvezérlő 2., 7., 10. és 15. bemeneti pólusa a Raspberry Pi GPIO 12., 16., 20. és 21. számú csatlakozójához van csatlakoztatva. Itt két egyenáramú motort használtunk a robot meghajtására, amelyben az egyik motor az IC motorvezérlő 3 és 6 kimeneti tüskéihez, egy másik motor pedig az IC motorvezérlő 11 és 14 tűjéhez csatlakozik.
Hogyan működik:
Ennek az autonóm robotnak a működtetése nagyon egyszerű. Amikor a robot be van kapcsolva és elindul, a Raspberry Pi az ultrahangos érzékelő modul használatával méri az előtte lévő tárgyak távolságát, és egy változóban tárolja. Ezután az RPi összehasonlítja ezt az értéket az előre definiált értékekkel, és ennek megfelelően hoz döntéseket a robot balra, jobbra, előre vagy hátra mozgatására.
Ebben a projektben 15 cm távolságot választottunk a Raspberry Pi bármilyen döntésének meghozatalához. Most, amikor a Raspberry Pi bármely objektumtól kevesebb mint 15 cm-es távolságot kap, akkor a Raspberry Pi megállítja a robotot, és visszahelyezi, majd jobbra vagy balra fordítja. Mielőtt újra előreléptetné, a Raspberry Pi újra ellenőrzi, hogy van-e akadály a 15 cm-es tartományon belül, ha igen, akkor ismét megismétli az előző folyamatot, ellenkező esetben mozgassa előre a robotot, amíg újra nem észlel akadályt vagy tárgyat.
Programozási magyarázat:
Itt Python nyelvet használunk a Programhoz. Kódolás előtt a felhasználónak konfigurálnia kell a Raspberry Pi programot. Megtekintheti a Raspberry Pi használatának megkezdéséhez, valamint a Raspbian Jessie OS telepítéséhez és konfigurálásához szükséges korábbi oktatóanyagainkat.
A projekt programozási része nagyon fontos szerepet játszik az összes művelet végrehajtásában. Először is felvesszük a szükséges könyvtárakat, inicializáljuk a változókat és meghatározzuk az ultrahangos érzékelők, motorok és alkatrészek csapjait.
RPi.GPIO importálása GPIO-ként importálási idő # Időtár importálása GPIO.setwarnings (hamis) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Utána létrehoztunk néhány funkciót def előre (), def hátra (), balra balra (), jobbra () , hogy a robot előre, hátra, balra vagy jobbra haladjon, és def stop () a robot leállításához, ellenőrizze az alább megadott kód funkcióit.
Ezután a fő programban elindítottuk az ultrahangos érzékelőt, és leolvassuk a jel átvitelének és vételének idejét, és kiszámítottuk a távolságot. Itt a jobb pontosság érdekében ötször megismételtük ezt a folyamatot. Az ultrahangos érzékelő segítségével már elmagyaráztuk a távolság kiszámításának folyamatát.
i = 0 átl. távolság: 0 az i tartományban (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) míg GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time (), míg GPIO.input (ECHO) == 1: # Ellenőrizze, hogy az ECHO HIGH GPIO.output (led, Hamis) pulzus_vég = idő.idő () impulzus időtartama = impulzus_ vége - impulzusállomás távolsága = impulzus időtartama * 17150 távolság = kör (távolság, 2) avgDistance = avgDistance + távolság
Végül, ha a robot valamilyen akadályt talál maga előtt, akkor miután eltávolodtunk az akadálytól, beprogramoztuk a robotot, hogy más útvonalon haladjon.
if avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag == 0): right () flag = 1 másik: bal () zászló = 0 idő. Alszik (1,5) leáll () idő. Alszik (1) más: előre () zászló = 0
A Raspberry Pi akadályok elkerülésére szolgáló robot teljes kódját az alábbiakban adjuk meg, bemutató videóval.