Tapasztalat az első robot létrehozásában az Arduino-n (robot "vadász")

Helló

Ebben a cikkben az első robotom Arduino segítségével történő összeszerelésének folyamatát szeretném leírni. Az anyag hasznos lesz a hozzám hasonló kezdőknek, akik valamilyen „önfutó kocsit” szeretnének készíteni. A cikk a munka szakaszainak leírása a különféle árnyalatokkal kapcsolatos kiegészítéseimmel. A cikk végén található egy link a végső kódhoz (valószínűleg nem a legideálisabb).

Tapasztalat az első robot létrehozásában az Arduino-n (robot "vadász")

Amikor csak lehetett, a fiamat (8 éves) bevontam a részvételbe. Pontosan mi működött vele és mi nem - a cikk egy részét ennek szenteltem, talán hasznos lesz valakinek.

A robot általános leírása

Először néhány szó magáról a robotról (gondolat). Nem igazán akartam valami szabványt összeállítani az elején. Ugyanakkor az alkatrészkészlet meglehetősen szabványos volt - alváz, motorok, ultrahangos érzékelő, vonalérzékelő, LED-ek, magassugárzó. Kezdetben ebből a „leveskészletből” találtak ki egy robotot, amely a területét őrzi. A körvonalat átlépő szabálysértő felé hajt, majd visszatér a középpontba. Ehhez a verzióhoz azonban húzott vonalra volt szükség, plusz plusz matematikára, hogy mindig a körben maradjon.

Ezért némi gondolkodás után némileg megváltoztattam az ötletet, és úgy döntöttem, hogy készítek egy „vadász” robotot. Kezdetben megfordul a tengelye körül, és kiválaszt egy közeli célpontot (személyt). Ha a „zsákmányt” észleli, a „vadász” felkapcsolja a villogó lámpákat és a szirénát, és elindul felé. Amikor a személy eltávolodik/elszökik, a robot kiválaszt egy új célpontot és üldözi azt, és így tovább. Egy ilyen robotnak nincs szüksége korlátozott körre, és nyílt területeken is működhet.

Amint látja, ez nagyon hasonlít egy felzárkózási játékhoz. Bár a robot végül nem bizonyult elég gyorsnak, őszintén kommunikál a körülötte lévőkkel. A gyerekek kifejezetten szeretik (néha azonban úgy tűnik, hogy mindjárt tapossák, kihagy a szívük...). Szerintem ez egy jó megoldás a műszaki tervezés népszerűsítésére.

Robot szerkezet

Tehát eldöntöttük az ötletet, lépjünk tovább elrendezés. Az elemek listája abból áll össze, hogy mire kell képes a robot. Itt minden teljesen nyilvánvaló, ezért azonnal nézzük meg a számozást:

Tapasztalat az első robot létrehozásában az Arduino-n (robot "vadász")

A robot „agya” egy arduino uno tábla (1); Kínából rendelt készletben volt. Célunknak ez teljesen elég (a felhasznált csapok számára összpontosítunk). Ugyanebből a készletből vettünk egy kész alvázat (2), amelyre két hajtókerék (3) és egy hátsó (szabadon forgó) (4) van rögzítve. A készlet egy kész elemtartót is tartalmazott (5). A robot előtt ultrahangos szenzor (HC-SR04) (6), hátul egy motormeghajtó (L298N) (7), középen egy LED-es villogó (8), és egy kicsit a az oldalon egy magassugárzó található (9).

Az elrendezés szakaszában a következőket nézzük:

- hogy minden passzoljon
- kiegyensúlyozottnak lenni
- racionálisan elhelyezni

Kínai kollégáink ezt részben már megtették helyettünk. Tehát a nehéz akkumulátorrekesz középen van elhelyezve, a meghajtó kerekek pedig körülbelül alatta. Az összes többi tábla könnyű, és a perifériára helyezhető.

árnyalatok:

  1. A készletből származó alvázon sok gyári lyuk van, de még mindig nem jöttem rá, hogy mi a logika bennük. A motorokat és az akkumulátorcsomagot gond nélkül rögzítették, majd elkezdődött a „beállítás” új lyukak fúrásával, hogy ezt vagy azt a táblát rögzítsék.
  2. A tárolóhelyiségek sárgaréz állványai és egyéb rögzítőelemei nagy segítséget jelentettek (néha ki kellett szedni őket).
  3. A gyűjtősíneket az egyes táblákról a bilincseken keresztül vezettem át (megint a raktárban találtam). Nagyon kényelmes, minden vezeték szépen fekszik és nem lóg.

Egyedi blokkok

Most átmegyek blokkok és mindegyikről személyesen mesélek.

Elemtartó

Nyilvánvaló, hogy a robotnak jó energiaforrással kell rendelkeznie. A lehetőségek változhatnak, én a 4 db AA elemes opciót választottam. Összességében körülbelül 5 V-ot adnak, és ezt a feszültséget közvetlenül az arduino kártya 5 V-os érintkezőjére lehet kapcsolni (a stabilizátor megkerülésével).

Persze volt némi óvatosságom, de ez a megoldás teljesen működőképes.

Mivel mindenhol áramra van szükség, a kényelem kedvéért két csatlakozót készítettem a robot közepén: az egyik „elosztja” a földet (jobb oldalon), a második pedig 5 V (bal oldalon).

Tapasztalat az első robot létrehozásában az Arduino-n (robot "vadász")

Motorok és vezető

Először is a motorok felszereléséről. A tartó gyári, de nagy tűréssel készül. Vagyis a motorok néhány millimétert billeghetnek jobbra-balra. A mi feladatunk szempontjából ez nem kritikus, de néhol lehet hatása (a robot elkezd oldalra mozdulni). Minden esetre szigorúan párhuzamosan állítottam a motorokat, és ragasztóval rögzítettem.

Tapasztalat az első robot létrehozásában az Arduino-n (robot "vadász")

A motorok vezérlésére, ahogy fentebb is írtam, az L298N drivert használjuk. A dokumentáció szerint minden motorhoz három tüske van: egy a fordulatszám változtatásához és egy pár csap a forgásirányhoz. Itt van egy fontos szempont. Kiderült, hogy ha a tápfeszültség 5 V, akkor a sebességszabályozás egyszerűen nem működik! Vagyis vagy egyáltalán nem fordul, vagy maximumra fordul. Ez az a tulajdonság, ami miatt "megöltem" néhány estét. Végül valahol az egyik fórumon találtam egy említést.

Általánosságban elmondható, hogy a robot forgatásakor alacsony forgási sebességre volt szükségem - hogy legyen ideje pásztázni a teret. De mivel ebből az ötletből nem lett semmi, másképp kellett csinálnom: egy kis kanyar - stop - kanyar - stop stb. Megint nem olyan elegáns, de működőképes.

Azt is hozzáteszem, hogy minden üldözés után a robot véletlenszerű irányt választ az új fordulathoz (az óramutató járásával megegyező vagy ellentétes).

ultrahangos érzékelő

Tapasztalat az első robot létrehozásában az Arduino-n (robot "vadász")

Egy újabb hardver, ahol kompromisszumos megoldást kellett keresnünk. Az ultrahangos érzékelő instabil számokat produkál valós akadályokon. Valójában ez várható volt. Ideális esetben valahol olyan versenyeken működik, ahol sima, egyenletes és merőleges felületek vannak, de ha valakinek "villogna" előtte a lába, akkor további feldolgozást kell bevezetni.

Mint ilyen feldolgozást beállítottam medián szűrő három számra. Valódi gyerekeken végzett tesztek alapján (egyetlen gyerek sem sérült meg a tesztek során!) teljesen elegendőnek bizonyult az adatok normalizálására. A fizika itt egyszerű: vannak jeleink, amelyekről visszaverődnek szükséges tárgyakat (megadva a szükséges távolságot), és visszaverődik a távolabbiakról, például falakról. Ez utóbbiak véletlenszerű kibocsátások a mérések során, 45, 46, 230, 46, 46, 45, 45, 310, 46... Ezeket vágja le a mediánszűrő.

Az összes feldolgozás után megkapjuk a távolságot a legközelebbi objektumtól. Ha egy bizonyos küszöbérték alatt van, akkor bekapcsoljuk a riasztót és egyenesen a „behatoló” felé hajtunk.

Villogó és sziréna

Talán a legegyszerűbb elemei a fentiek közül. A fenti fényképeken láthatók. Itt nincs mit írni a hardverről, úgyhogy most lépjünk tovább kód.

Irányító program

Nem látom értelmét a kód részletes leírásának, kinek van szüksége rá - a link a cikk végén található, ott minden jól olvasható. De jó lenne elmagyarázni az általános szerkezetet.

Az első dolog, amit meg kellett értenünk, hogy a robot egy valós idejű eszköz. Pontosabban emlékezni, mert korábban is és most is elektronikával foglalkozom. Tehát azonnal elfelejtjük a kihívást késleltetés(), amelyet előszeretettel használnak példavázlatokban, és amely egyszerűen „lefagy” a program egy meghatározott időre. Ehelyett, ahogy tapasztalt emberek tanácsolják, minden blokkhoz időzítőt vezetünk be. A szükséges intervallum lejárt - a művelet végrehajtásra került (növelte a LED fényerejét, bekapcsolta a motort és így tovább).

Az időzítők összekapcsolhatók. Például a magassugárzó szinkronban működik a villogóval. Ez egy kicsit leegyszerűsíti a programot.

Természetesen mindent külön funkciókra bontunk (villogó fények, hang, fordulás, előrehaladás stb.). Ha ezt nem teszi meg, akkor nem fogja tudni kitalálni, mi honnan és honnan jön.

A pedagógia árnyalatai

A fent leírtakat esténként szabadidőmben csináltam. Nyugodt módon körülbelül három hetet töltöttem a roboton. Ez itt véget is érhetett volna, de megígértem, hogy mesélek a gyerekkel való munkáról is. Mit lehet tenni ebben a korban?

Dolgozzon az utasítások szerint

Először minden részletet külön ellenőriztünk - LED-ek, magassugárzók, motorok, érzékelők stb. Nagyon sok kész példa van - néhány közvetlenül a fejlesztői környezetben, mások az interneten találhatók. Ez mindenképpen boldoggá tesz. Fogjuk a kódot, összekapcsoljuk az alkatrészt, megbizonyosodunk arról, hogy működik, majd elkezdjük módosítani a feladatunknak megfelelően. A gyerek az ábra szerint és az én felügyeletem alatt köti össze a kapcsolatokat. Ez jó. Ezenkívül szigorúan az utasítások szerint kell dolgoznia.

A munkavégzés rendje ("különlegestől az általánosig")

Ez egy nehéz pont. Meg kell tanulnod, hogy egy nagy projekt („robot készítés”) apró feladatokból áll („érzékelő csatlakoztatása”, „motorok csatlakoztatása”...), ezek pedig még kisebb lépésekből állnak („találj egy program”, „kártya csatlakoztatása.” „, „firmware letöltése”...). Az alsó szint többé-kevésbé érthető feladatainak elvégzésével „lezárjuk” a középszint feladatait, és ezekből alakul ki az összeredmény. Kifejtettem, de szerintem a felismerés nem jön el egyhamar. Valahol valószínűleg serdülőkorig.

Telepítési

Fúrás, menetek, csavarok, anyák, forrasztás és a gyanta szaga – hol lennénk nélküle? A gyermek megkapta a „Forrasztópákával való munka” alapkészséget - több csatlakozást sikerült forrasztania (kicsit segítettem, nem rejtem el). Ne feledkezzünk meg a biztonsági magyarázatról.

Számítógépes munka

Megírtam a programot a robotra, de így is sikerült néhány kedvező eredményt elérni.

Először: angol. Nemrég kezdték el az iskolában, ezért nehezen találtuk ki, mi is az a pishalka, migalka, yarkost és más átírások. Ezt legalább megértettük. Szándékosan nem használtam angol anyanyelvű szavakat, mivel még nem értük el ezt a szintet.

Másodszor: hatékony munka. Megtanítottuk a gyorsbillentyűkombinációkat és a szabványos műveletek gyors végrehajtását. Időnként, amikor a programot írtuk, a fiammal helyet cseréltünk, és elmondtam, hogy mit kell tenni (csere, keresés stb.). Újra és újra el kellett ismételnem: „dupla kattintás kijelölés”, „Shift tartása”, „Ctrl lenyomva tartása” és így tovább. A tanulási folyamat itt nem gyors, de úgy gondolom, hogy a készségek fokozatosan „az alkéregben” rakódnak le.

Rejtett szövegMondhatni, hogy a fentiek szinte nyilvánvalóak. De őszintén szólva idén ősszel lehetőségem nyílt egy iskolában informatikát tanítani a 9. osztályban. Ez szörnyű. A tanulók nem ismerik az olyan alapvető dolgokat, mint a Ctrl + Z, Ctrl + C és Ctrl + V, a szöveg kijelölése a Shift billentyű lenyomva tartása közben vagy a szóra való dupla kattintás stb. Ez annak ellenére van így, hogy a számítástechnika harmadik évében tanultak... Vonja le a következtetést.

Harmadszor: érintéses gépelés. A kódban szereplő megjegyzéseket a gyerekre bíztam, hogy gépeljen (had gyakoroljon). Azonnal helyesen helyeztük el a kezünket, hogy az ujjaink fokozatosan emlékezzenek a billentyűk helyére.

Amint látja, még csak most kezdjük. Továbbra is fejlesztjük képességeinket és tudásunkat, hasznosak lesznek az életben.

Egyébként a jövőről...

További fejlődés

A robot elkészült, hajt, pislog és sípol. És most? Az elért eredményektől inspirálva azt tervezzük, hogy tovább finomítjuk. Van egy ötlet, hogy készítsünk egy távirányítót - mint egy holdjárót. Érdekes lenne egy távirányítónál ülve irányítani egy teljesen más helyen közlekedő robot mozgását. De az egy másik történet lesz...

És a végén valójában ennek a cikknek a hősei (videó kattintással):

Tapasztalat az első robot létrehozásában az Arduino-n (robot "vadász")

Спасибо за внимание!

Kód link

Forrás: will.com

Hozzászólás