Robotautó építés és vezérlés Arduino-val: Részletes útmutató

Az Arduino-vezérlésű robotautók kiváló eszközök a programozás és az elektronika alapjainak elsajátításához, miközben remek szórakozást is nyújtanak. Ez a cikk részletesen bemutatja a robotautók felépítését, vezérlését és a hozzájuk kapcsolódó programozási alapelveket.

Az Arduino robotautó platformok áttekintése

Számos készlet áll rendelkezésre a robotautók építéséhez, a kezdő szinttől a haladóig. Ezek a készletek integrált megoldást kínálnak a robotika tanulásához és oktatásához.

4 kerekű robot platformok

Léteznek például 4 kerekű robot platform KIT-ek, amelyek tartalmazzák az Arduinot, hozzá pajzsot, szenzort, szervót stb. Négy független motor hajtja őket, erős L298N-es motorvezérlővel. Egyedül az akku nem tartozék, de 7-12V-ig bármilyen akku, elem, újratölthető elem köthető rá. Sőt, tartalmaz akku tartót és töltőt szabvány 18650-es lítiumos zárt cellákhoz a szett. A car is 23cm in length and 12cm in width. It can be connected to 7V~12V voltage and carries multiple sensor modules to realize various functions you want. Ezek a készletek szabad felhasználásra készültek, amiből például vonalkövető robot, vagy akadályelkerülő robot is építhető.

Egyensúlyozó robot autók

Az Arduino-vezérlésű egyensúlyozó robot autó egy nagyszerű eszköz a programozás alapjainak elsajátításához. Ezek a kétkerekű robot autók Arduino Uno vezérléssel működnek, könnyen programozhatók és bővíthetők. Speciális algoritmusok gondoskodnak az autó stabil egyensúlyáról. A robotautó vezérlése Arduino Uno mikrovezérlővel valósul meg, egyensúlyozó algoritmusok használatával. Az autó egy háromrétegű szerkezet, amelynek teherbírása meghaladja a 2 kg-t. Kialakítása egyszerű és moduláris, könnyedén bővíthető és testreszabható. Egy komplett, összeszerelt egyensúlyozó robot autót, amely készen áll a használatra, csak csatlakoztatni kell az Androidos applikációhoz, és kezdődhet a móka! Az egyensúlyozó robot autó stabil, strapabíró és tartós kétkerekű mérleg jármű. Az autót Android mobil alkalmazással lehet irányítani, bluetooth kapcsolaton keresztül. Segítségével a gyermekek játszva megtanulhatják a programozási alapokat.

Alapvető komponensek és összeállítás

Egy kis robotautó elkészítéséhez számos alapvető alkatrészre van szükségünk. Ez egy építőkészlet szabad felhasználásra készült, de nem egy konkrét leírás vagy program alapján.

Robotika és AI Magyarországon

Szükséges alkatrészek egy DIY projekthez

Amire szükségünk van az két DC motor, egy Arduino mikrovezérlő, egy L298N motorvezérlő, valamint egy Joystick, amivel irányíthatjuk az autónkat. Valamint szükségünk van egy lemezre vagy funérlapra (3mm) vagy plexire, amiből kitudjuk alakítani a kisautónk vázát. Ha a lap megvan akkor már csak rá kell erősíteni a fém forgó kereket. Tápellátásként pedig 3db 3,7V-os Li-ion akkumulátort használunk, amely így összesen 11,1V.

A következő táblázat összefoglalja a leggyakoribb alkatrészeket és azok funkcióit:

Alkatrész Funkció Megjegyzés
Arduino mikrovezérlő A robot "agya", amely feldolgozza a parancsokat és vezérli a motorokat és szenzorokat. Arduino Uno, Nano, vagy más kompatibilis
DC motor A kerekek meghajtásáért felelős. Két vagy négy darab szükséges.
L298N motorvezérlő Szabályozza a motorok forgásirányát és sebességét (PWM). Erős és gyakran használt modul.
Joystick Az autó manuális irányítására szolgál (vezetékes vagy vezeték nélküli). X és Y tengely értékekkel.
Akkumulátor / Elem Tápellátást biztosít az elektronikának és a motoroknak. Pl. 18650-es Li-ion, 7-12V tartományban.
Robot alváz / váz Az alkatrészek rögzítésére szolgáló szerkezet. Plexi, fa, fém lap.

Összeszerelési tippek

Első lépésként a kerék meghajtó motorokra fogjuk a kábeleket ráforrasztani, ezért ehhez a minimális forrasztási munkához szükségünk lesz egy forrasztópákára is. Forrasszuk rá mind a négy motorra a 22 AWG kábeleket, ugyanúgy mint az a fotón látható. Csatlakoztassuk az Ultrasonic szenzor kábeleit a motor vezérlő modulhoz a képen látható módon. A videóban bemutatott kerék motort egy két oldalán ragadó ragasztóval ragasztottam fel a plexi lapra, ami nem egy jó megoldás mivel 2 darab motornál fél nap múlva levált a ragasztás. Gondoltam teszek egy próbát és felragasztom a kerék motorokat is ezzel, hát megint nem volt szerencsém, mivel ez a ragasztó is elengedte a motorokat. Mondanom sem kell, hogy azóta is úgy ott vannak a helyükön, mintha odaragasztották volna őket.

Vezetékes vezérlés programozása

Az Arduino IDE-vel, Arduino Sketch-ben, vagy direktben AVR programozókkal is könnyedén programozható a platform. Fontos, mielőtt elkezdenéd ezt a projektet mindenképp tekintsd meg az előző 17. projektet, ahol az L298N típusú motorvezérlőről van szó, valamint H- hídkapcsolatról és PWM jelről. Ezen dolgok ismerete elengedhetetlenek ebben a projektben.

Joystick vezérlés alapjai

Most pedig nézzük meg a programkódot. Miután definiáltuk a pineket, a joystickról érkező tengelyértékeket (X, Y tengely) olvassuk le a loop szekcióban elsőként. A joystick két potméterből áll, amelyek az Arduino analóg bemeneteihez vannak kötve. Az értéke 0-1023-ig terjed. Amikor a joystick középen áll (alaphelyzet) akkor mindkét potméter értéke kb. 512 értéken áll. Ahogy a fenti képen is látható a Joystick alaphelyzetéhez egy tolerancia határt definiálunk. Ez a tartomány 470-550-ig terjed.

Power Rangers Játékok

Mozgás irányítása (Y tengely)

Tehát ha a joystick Y tengelyét visszafelé mozgatjuk és az érték 470 alá esik akkor a két motor forgási iránya megfordul és elindul az autó hátrafelé. A 470-0 tartományt a PWM jelnek megfelelően 0-255 -re konvertáljuk. Ez a PWM tartomány lényegében a motor sebességét adja. Ahogy növekszik ebben a tartományban az érték (PWM) úgy nő a motor sebessége. Hasonló a helyzet, ha a Joystick Y tengelyét előre mozgatjuk, az érték meghaladja az 550-et és a motorok elindulnak előre. Az 550-1023 tartományt pedig 0-255 szakaszra konvertáljuk. Ha a joystick középen marad a sebesség 0 lesz. Az Y tengely a hátramenet miatt 470-0 → 0-255 tartományra konvertáljuk. Ahogy növekszik ebben a tartományban az érték (PWM) úgy nő a motor sebessége. Az Y tengely a előremenet miatt 550-1023 → 0-255 tartományra konvertáljuk. Ahogy növekszik ebben a tartományban az érték (PWM) úgy nő a motor sebessége.

Fordulás irányítása (X tengely)

Most pedig nézzük meg, hogyan használjuk az X tengely az autó jobb és bal irányú vezérlésére. Konvertáljuk az X tengely 470-0 tartományát 0-255 tartományra. A tartomány meghatározása 0 és 255 között. Először konvertálnunk kell az X tengely értékét 0-255 ös tartományra. A balra történő mozgáshoz ezt az értéket használjuk, hogy a bal oldali motor sebességét csökkentsük és a jobb oldaliét növeljük. Itt az aritmetikai függvények miatt két további „if” állítást használunk arra, hogy a motor fordulatszámát, sebességét 0-255 tartományra korlátozzuk. A metódus ugyan ez, ha a fordulást másik irányba szeretnénk, hogy bekövezzen. Konvertáljuk az X tengely 470-0 tartományát 0-255 tartományra. A tartomány meghatározása 0 és 255 között. Konvertáljuk az X tengely 550-1023 tartományát 0-255 tartományra. A tartomány meghatározása 0 és 255 között.

Sebesség optimalizálása

Az alkalmazott feszültségtől és a motortól függően alacsonyabb fordulatszámnál a motor nem tud mozogni és zümmögő hangot produkál. Az általam használt motorok esetén a motorok zümmögő hangot adtak, ha a PWM jel nem érte el a 70-et. Ezért módosítottam a 0-255 tartományt 70-255 közötti sebességre.

Hogyan vezéreljünk egy DC motort L298N meghajtóval és Arduino Uno-val?

Vezeték nélküli vezérlés Bluetooth segítségével

A következő 19. projektben pedig ezt az autót fogjuk kiegészíteni úgy, hogy vezeték nélkül is lehessen irányítani. A segítségünkre egy bluetooth modul lesz, valamint egy Androidos okostelefon. Ebben a rövid projektben bemutatjuk neked hogyan tudod az előző projektben elkészített vezetékes irányítású robotautót úgy módosítani, hogy azt vezeték nélkül lehessen vezérelni.

Bluetooth modulok és Master-Slave kapcsolat

A vezetéknélküli kommunikációt egy HC-05 típusú bluetooth modul fogja szolgáltatni számunkra. Természetesen a vezetéknélküli kommunikációra más modulok is megtennének mint pl.: NRF24L01 vagy a HC-12 adóvevő modul. A vezetéknélküli vezérlésre két különböző lehetőséget fogok mutatni. Az egyik az amikor saját „távirányítót” készítünk. A másik pedig amikor egy Androidos okostelefonre készítjük el saját alkalmazásunkat és azon keresztül irányítjuk az autót. Amire szükségünk van az két DC motor egy Arduino mikrovezérlő, egy L298N motorvezérlő valamint egy Joystick, amivel irányíthatjuk az autónkat. Valamint szükségünk van még két darab Bluetooth modulra, amely a kommunikációért felel. Elsőként a bluetooth kommunikációval kezdjük, mivel ki kell alakítani a Master-Slave kapcsolatot. Ezt könnyedén megtudjuk tenni. A Joystick lesz a Master (mester) eszközünk mivel az fogja közvetíteni a robot felé, hogy merre akarjuk irányítani. Az Arduino robotautó pedig fogja betölteni a Slave (szolga) opciót.

E-HDI váltófejlődés a Peugeot-nál

Adatküldés és -fogadás

Az előző projektben létrehozott programkódot használjuk, ahol közvetlenül vezetéken keresztül tudtuk vezérelni az autót. A vezetéknélküli kommunikációhoz csak néhány módosítást kell elvégezni. Küldi az értékeket a Slave HC-05 Bluetooth eszköznek. Serial.write(xAxis/4); Osztja az értéket (0-1023 tartomány) 4-el ezzel elérve a konvertálást 0-255 tartományra. A mintakód a Master eszközön egészen egyszerű. Csak le kell olvastatnunk az X és az Y tengely értékeit a Joystickról, amellyel ténylegesen szabályozzuk a motor sebességét és ezeket az értékeket küldjük el a Slave bluetooth eszköznek. Itt megkell hogy említsem, hogy a Joystick analóg értékeit (0-1023) átkell konvertálnunk 0-255 tartományra. Ez azért tesszük mert a 0-255 tartomány az 1 byte és az gyorsabban elküldhető mint 4 byte (0-1023) a Bluetooth eszközzel. 1byte-ot pedig sokkal könnyebb fogadni is a Slave oldalon. Tehát ha a master oldalon a két értéket (X,Y tengelyértékek) vagyis 2 byte-ot elküldtük a bluetooth eszközön keresztül akkor a slave oldalon ezeket az elküldött értékeket kell olvasni a Serial.read() paranccsal. Először az X majd az Y tengelyértékeket olvassuk le. HC-05 Slave mintakód változása: Olvassuk a bejövő adatokat a Joystickról amelyet a Master Bluetooth eszköz közvetít. Most pedig az értékeket vissza kell konvertálni 0-255 tartományról 0-1023 tartományra, amely sokkal testreszabottabb a motorvezérlő kódnak.

Okostelefonos vezérlés

Most pedig nézzük, hogyan kell az Arduino robotautónkat egy okostelefonnal irányítani. A kapcsolási rajz nem változott, mivel csak a irányításra használt eszközt változtattuk meg. Tehát tulajdonképpen az Joystick szerepét az okostelefon veszi át. Az Android applikációt a már korábban használt MIT App Inventor segítségével készítjük el. A serial.read függvényt használjuk ezen esetben is. Amire szükségünk van az az, hogy az okostelefonból beérkező X,Y értékeket átkonvertáljuk 0-1023 tartományra, amely a motorvezérlés miatt szükséges. A konvertálási érték függ az applikáció „Canvas” méretétől. Az X és az Y értékek, amelyeket az applikációból nyertem ki az 60 -220 tartomány. A map() függvényt használva pedig könnyedén tudjuk konvertálni a megfelelő értékre. xAxis = map(x, 220, 60, 1023, 0); // Konvertáljuk az értékeket 0-1023 tartományra. Az applikációban ugyancsak láthatjuk, hogy amikor a virtuális Joystickot megérintjük és előre irányt választunk akkor előre megy az autónk. Elengedve azt pedig visszatér középállapotba amely az autó megállását eredményezi. Olvassa a bejövő értékeket az okostelefon appjáról.

Haladó funkciók és oktatási lehetőségek

A robotautók platformok kiválóan alkalmasak a STEM (tudomány, technológia, mérnöki tudományok, művészetek és matematika) oktatásra, a kezdőktől a professzionálisokig.

Többfunkciós bővítőpanel

Egyes készletek többfunkciós Drive Expansion Board-ot tartalmaznak, amelyet kifejezetten az UNO fejlesztőkártyához terveztek, és kábel nélkül közvetlenül behelyezhető az UNO fejlesztőkártyába. A visszafordulás elleni védelemmel, a túláramvédelemmel, az akkumulátor alacsony feszültség elleni védelmével és más áramkörökkel hatékonyan védi a tápegységet és a bővítőkártyát. Fedélzeti gombok, berregő, RGB lámpa, infravörös vevő és különféle érzékelő interfészek is megtalálhatók rajta. Világító ultrahangos, világító kettő az egyben, gyönyörű és praktikus.

Szenzorok és modulok

  • Ultrahangos távolságmérő modul: A távolságmeghatározáson és az akadálykerülésen kívül az ultrahangos modul különféle színek fényét is képes programkódon keresztül vezérelni, mint például az okos robot kedves szemeit.
  • Háromutas járőrvonal-érzékelő: Analóg kimenetet használ, amely a program paramétereinek beállításával számos összetett környezethez tud alkalmazkodni.
  • Elforgatható kamerafej: Függőleges és horizontális 180°-ban forgatható, könnyen rögzíthető bármilyen szögből, ahol videót vagy képet szeretne készíteni. A két szabadságfokú kamerafejet két szervó vezérli, vízszintes irányban 0 és 180 fok között, függőlegesen 0 és 180 fok között elforgatható. Ez az intelligens robot * bit4 fejlesztői kártya alapján lett kifejlesztve, OV2640 kameraberendezéssel, amely képes megvalósítanifotó és videó média funkció * .

Programozási környezetek

A szett szoftvert sem tartalmaz, de az interneten és szakirodalomban rengeteg Arduino tutorial, firmware, szabad felhasználású kód és tervek találhatóak a szett és az összes szenzor használatához, programozásához. Napjainkban már magyar nyelven is erősek a fórumok, szakkörök és tanfolyamok is. Támogatás a scratch 3.0 programozáshoz. Alapszintű C IDE programozás: C számítógépes nyelven alapuló kód. Mint említettem, az előre megírt programoknak köszönhetően programozási tudás nélkül is megépíthetőek a legtöbb robot projektek. Mindegyik általam megépített robotikával kapcsolatos projekthez biztosítani fogom az előre megírt program kódokat, így Neked ezzel semmi dolgod nem lesz csak annyi, hogy feltöltsd a programot az Arduino UNO hardverre.

Tanulási előnyök

A robotautók nagyszerű motivációs eszközök a gyerekek számára, hogy megtanulják a számítógépes gondolkodást és programozást. Átjárót biztosít a STEM/STEAM (tudomány, technológia, mérnöki tudományok, művészetek és matematika) világába a tanulók számára az alapfokútól a középfokig. A rajta elérhető funkciók bővítésének lehetőségével még a főiskolai hallgatók és a korosztálytól függetlenül hobbibarátok is profitálhatnak a végtelen lehetőségek gondolkodásából és feltalálásából. A távirányítótól kezdve az egyedi feladatok programozásán és a tervezési kihívások megoldásán keresztül szórakoztatóvá teszi a robotika, elektronika és programozás tanulását, és gyakorlaton alapuló gőzoktatást biztosít. Segítségével az emberek gyakorlati tapasztalatokat szerezhetnek a programozásról, az elektronikai összeszerelésről és a robotikai ismeretekről. Ez egy integrációs megoldás a robotika tanulásához, és oktatáshoz készült. Kiváló tanulási eszköz: Játékosan sajátíthatók el a programozás alapjai.

tags: #robot #auto #vezerles #arduino