Skúsenosti s vytvorením prvého robota na Arduine ("lovec" robotov)

Ahoj

V tomto článku chcem opísať proces zostavovania môjho prvého robota pomocou Arduina. Materiál bude užitočný pre iných začiatočníkov, ako som ja, ktorí si chcú vyrobiť nejaký „samobežiaci vozík“. Článok je popisom fáz práce s mojimi dodatkami na rôznych nuansách. Odkaz na finálny kód (s najväčšou pravdepodobnosťou nie najideálnejší) je uvedený na konci článku.

Skúsenosti s vytvorením prvého robota na Arduine ("lovec" robotov)

Vždy, keď to bolo možné, zapojil som do účasti aj môjho syna (8 rokov). Čo presne s tým fungovalo a čo nie - tomu som venoval časť článku, možno to bude pre niekoho užitočné.

Všeobecný popis robota

Najprv pár slov o samotnom robotovi (idea). Na začiatku som naozaj nechcel zostavovať niečo štandardné. Zároveň bola zostava komponentov celkom štandardná - podvozok, motory, ultrazvukový snímač, čiarový snímač, LED diódy, výškový reproduktor. Spočiatku bol z tejto „polievkovej súpravy“, ktorá stráži svoje územie, vynájdený robot. Ide smerom k páchateľovi, ktorý prekročil kruhovú čiaru, a potom sa vráti do stredu. Táto verzia však vyžadovala nakreslenú čiaru a navyše matematiku, aby ste zostali neustále v kruhu.

Preto som po premýšľaní trochu zmenil nápad a rozhodol som sa urobiť „loveckého“ robota. Na štarte sa otočí okolo svojej osi a vyberie si blízky cieľ (osobu). Ak je „korisť“ detekovaná, „lovec“ zapne blikajúce svetlá a sirénu a začne k nej jazdiť. Keď sa osoba vzdiali/utečie, robot si vyberie nový cieľ a prenasleduje ho atď. Takýto robot nepotrebuje obmedzený okruh a môže pracovať v otvorených priestoroch.

Ako vidíte, je to veľmi podobné hre na doháňanie. Hoci sa nakoniec robot neukázal ako dostatočne rýchly, poctivo komunikuje s ľuďmi okolo seba. Obľubujú ho najmä deti (niekedy sa však zdá, že sa chystajú pošliapať, srdce im zaplesá...). Myslím si, že je to dobré riešenie na popularizáciu technického dizajnu.

Štruktúra robota

Takže sme sa rozhodli pre nápad, poďme ďalej rozloženie. Zoznam prvkov sa skladá z toho, čo by mal robot vedieť. Všetko je tu celkom zrejmé, takže sa okamžite pozrime na číslovanie:

Skúsenosti s vytvorením prvého robota na Arduine ("lovec" robotov)

„Mozgy“ robota sú doska arduino uno (1); bol v súprave objednanej z Číny. Pre naše účely to úplne stačí (zameriavame sa na počet použitých pinov). Z tej istej stavebnice sme zobrali hotový podvozok (2), na ktorom sú uchytené dve hnacie kolesá (3) a jedno zadné (voľne sa otáčajúce) (4). Súprava tiež obsahovala pripravený priestor na batérie (5). V prednej časti robota je ultrazvukový senzor (HC-SR04) (6), vzadu je motorový ovládač (L298N) (7), v strede je LED blikač (8) a trochu na na strane je výškový reproduktor (9).

Vo fáze rozloženia sa pozrieme na:

- aby všetko sedelo
- byť vyrovnaný
- byť racionálne umiestnený

Naši čínski kolegovia to už čiastočne urobili za nás. Priestor pre ťažké batérie je teda umiestnený v strede a hnacie kolesá sú umiestnené približne pod ním. Všetky ostatné dosky sú ľahké a môžu byť umiestnené na periférii.

nuansy:

  1. Podvozok zo súpravy má veľa výrobných otvorov, ale stále som neprišiel na to, aká je v nich logika. Motory a akumulátor boli zaistené bez problémov, potom sa začalo s „nastavovaním“ vŕtaním nových otvorov na zaistenie tej či onej dosky.
  2. Veľkou pomocou boli mosadzné regály a iné upevňovacie prvky z úložných priestorov (niekedy sme ich museli dostať von).
  3. Cez svorky som pretiahol prípojnice z každej dosky (opäť som ich našiel v sklade). Veľmi pohodlné, všetky drôty pekne ležia a nevisia.

Jednotlivé bloky

Teraz to prejdem bloky a o každom vám poviem osobne.

priehradka na batérie

Je jasné, že robot musí mať dobrý zdroj energie. Možnosti sa môžu líšiť, ja som zvolil možnosť so 4 AA batériami. Celkovo dávajú približne 5 V a toto napätie je možné priamo priviesť na 5V kolík dosky arduino (obísť stabilizátor).

Samozrejme, mal som určitú opatrnosť, ale toto riešenie je celkom funkčné.

Keďže napájanie je potrebné všade, pre pohodlie som v strede robota vytvoril dva konektory: jeden „rozdeľuje“ zem (vpravo) a druhý - 5 V (vľavo).

Skúsenosti s vytvorením prvého robota na Arduine ("lovec" robotov)

Motory a vodič

Najprv o montáži motorov. Držiak je vyrobený v továrni, ale vyrobený s veľkými toleranciami. Inými slovami, motory sa môžu kolísať o niekoľko milimetrov doľava a doprava. Pre našu úlohu to nie je kritické, ale na niektorých miestach to môže mať vplyv (robot sa začne pohybovať do strany). Pre každý prípad som nastavil motory striktne paralelne a pripevnil ich lepidlom.

Skúsenosti s vytvorením prvého robota na Arduine ("lovec" robotov)

Na ovládanie motorov, ako som písal vyššie, slúži ovládač L298N. Podľa dokumentácie má pre každý motor tri kolíky: jeden na zmenu otáčok a dvojicu kolíkov na smer otáčania. Je tu jeden dôležitý bod. Ukazuje sa, že ak je napájacie napätie 5 V, potom ovládanie rýchlosti jednoducho nefunguje! To znamená, že sa neotáča vôbec, alebo sa otáča na maximum. Toto je funkcia, vďaka ktorej som „zabil“ pár večerov. Nakoniec som niekde na jednom z fór našiel zmienku.

Všeobecne povedané, pri otáčaní robota som potreboval nízku rýchlosť otáčania – aby mal čas naskenovať priestor. Ale keďže z tohto nápadu nič nebolo, musel som to urobiť inak: malé otočenie - zastavenie - otočenie - zastavenie atď. Opäť nie také elegantné, ale funkčné.

Tu tiež dodám, že po každom prenasledovaní si robot vyberie náhodný smer pre novú odbočku (v smere alebo proti smeru hodinových ručičiek).

Ultrazvukový senzor

Skúsenosti s vytvorením prvého robota na Arduine ("lovec" robotov)

Ďalší kus hardvéru, pri ktorom sme museli hľadať kompromisné riešenie. Ultrazvukový senzor produkuje nestabilné čísla na skutočných prekážkach. V skutočnosti sa to dalo očakávať. V ideálnom prípade to funguje niekde na súťažiach, kde sú hladké, rovné a kolmé povrchy, no ak sa niekomu pred ním „blikajú“ nohy, treba zaviesť dodatočné spracovanie.

Ako také spracovanie som nastavil stredný filter na tri body. Na základe testov na skutočných deťoch (žiadnemu dieťaťu sa počas testov neublížilo!) sa ukázalo, že na normalizáciu údajov úplne postačuje. Fyzika je tu jednoduchá: od nás sa odrazia signály nevyhnutné predmety (udávajúce požadovanú vzdialenosť) a odrazené od vzdialenejších, napríklad stien. Posledné sú náhodné emisie pri meraniach tvaru 45, 46, 230, 46, 46, 45, 45, 310, 46... Práve tieto odreže stredový filter.

Po celom spracovaní dostaneme vzdialenosť k najbližšiemu objektu. Ak je nižšia ako určitá prahová hodnota, zapneme alarm a ideme priamo k „votrelcovi“.

Blikač a siréna

Možno najjednoduchšie prvky zo všetkých vyššie uvedených. Možno ich vidieť na fotografiách vyššie. O hardvéri tu nie je čo písať, takže prejdime k tomu kód.

Ovládací program

Nevidím zmysel podrobne popisovať kód, kto ho potrebuje - odkaz je na konci článku, všetko je tam celkom čitateľné. Ale bolo by pekné vysvetliť všeobecnú štruktúru.

Prvá vec, ktorú sme museli pochopiť, bolo, že robot je zariadenie v reálnom čase. Presnejšie na zapamätanie, pretože predtým aj teraz stále pracujem v elektronike. Takže na výzvu okamžite zabudneme oneskorenie (), ktorý radi používajú v ukážkových náčrtoch a ktorý jednoducho „zmrazí“ program na určitý čas. Namiesto toho, ako radia skúsení ľudia, zavádzame časovače pre každý blok. Požadovaný interval uplynul - akcia bola vykonaná (zvýšenie jasu LED, zapnutie motora atď.).

Časovače je možné vzájomne prepojiť. Napríklad výškový reproduktor pracuje synchrónne s blikačom. To trochu zjednodušuje program.

Prirodzene, všetko rozdeľujeme do samostatných funkcií (blikanie, zvuk, otáčanie, pohyb vpred atď.). Ak to neurobíte, nebudete schopní zistiť, čo odkiaľ a odkiaľ pochádza.

Nuansy pedagogiky

Všetko popísané vyššie som robil vo voľnom čase po večeroch. V pohode som v robote strávil asi tri týždne. Tu to mohlo skončiť, ale sľúbil som, že vám poviem aj o práci s dieťaťom. Čo sa dá robiť v tomto veku?

Pracujte podľa pokynov

Najprv sme skontrolovali každý detail zvlášť – LED diódy, výškový reproduktor, motory, senzory atď.. Existuje veľké množstvo hotových príkladov – niektoré priamo vo vývojovom prostredí, iné nájdete na internete. Toto ma určite teší. Vezmeme kód, pripojíme súčiastku, uistíme sa, že funguje, a potom ho začneme meniť tak, aby vyhovoval našej úlohe. Dieťa robí spojenia podľa schémy a pod mojím dohľadom. Toto je dobré. Musíte byť tiež schopní pracovať striktne podľa pokynov.

Poradie práce („od konkrétneho k všeobecnému“)

Toto je ťažký bod. Musíte sa naučiť, že veľký projekt („vyrobte robota“) pozostáva z malých úloh („pripojte senzor“, „pripojte motory“...), a tie zase pozostávajú z ešte menších krokov („nájdite program“, „pripojenie dosky.“ „, „stiahnutie firmvéru“...). Plnením viac či menej zrozumiteľných úloh nižšej úrovne „uzavierame“ úlohy strednej úrovne a z nich sa tvorí celkový výsledok. Vysvetlil som, ale myslím si, že uvedomenie nepríde tak skoro. Niekde pravdepodobne v období dospievania.

Inštalácia

Vŕtanie, závity, skrutky, matice, spájkovanie a vôňa kolofónie – kde by sme bez nej boli? Dieťa získalo základnú zručnosť „Práca so spájkovačkou“ - podarilo sa mu spájkovať niekoľko spojení (trochu som pomohol, nebudem to skrývať). Nezabudnite na bezpečnostné vysvetlenie.

Práca s počítačom

Napísal som program pre robota, ale napriek tomu sa mi podarilo dosiahnuť niekoľko priaznivých výsledkov.

Po prvé: angličtina. Práve s tým začali v škole, takže sme sa snažili zistiť, čo sú to pishalka, migalka, jarkost a iné prepisy. Toto sme aspoň pochopili. Zámerne som nepoužíval rodné anglické slová, keďže sme túto úroveň ešte nedosiahli.

Po druhé: efektívna práca. Naučili sme kombinácie klávesových skratiek a ako rýchlo vykonávať štandardné operácie. Z času na čas, keď sme písali program, sme si so synom vymenili miesta a povedal som si, čo treba urobiť (výmena, hľadanie atď.). Musel som opakovať znova a znova: „vybrať dvojitým kliknutím“, „podržať Shift“, „podržať Ctrl“ a tak ďalej. Proces učenia tu nie je rýchly, ale myslím si, že zručnosti sa postupne uložia „v subkortexe“.

Skrytý textMôžete povedať, že vyššie uvedené je takmer zrejmé. Ale, úprimne, túto jeseň som mal možnosť učiť informatiku v 9. ročníku na jednej škole. To je hrozné. Žiaci nepoznajú také základné veci ako Ctrl + Z, Ctrl + C a Ctrl + V, výber textu pri držaní Shiftu či dvojité kliknutie na slovo a pod. A to aj napriek tomu, že študovali informatiku v treťom ročníku... Záver si urobte sami.

Po tretie: dotykové písanie. Komentáre v kóde som zveril dieťaťu, aby písalo (nech cvičí). Ruky sme hneď umiestnili správne, aby si prsty postupne zapamätali umiestnenie kláves.

Ako vidíte, stále len začíname. Budeme pokračovať v zdokonaľovaní našich zručností a vedomostí, budú užitočné v živote.

Mimochodom, o budúcnosti...

Ďalší vývoj

Robot je vyrobený, jazdí, bliká a pípa. Čo teraz? Inšpirovaní tým, čo sme dosiahli, ho plánujeme ďalej zdokonaľovať. Existuje nápad vyrobiť diaľkové ovládanie - ako lunárny rover. Bolo by zaujímavé sediac na diaľkovom ovládači ovládať pohyb robota, ktorý jazdí na úplne inom mieste. Ale to už bude iný príbeh...

A na konci v skutočnosti hrdinovia tohto článku (video kliknutím):

Skúsenosti s vytvorením prvého robota na Arduine ("lovec" robotov)

Ďakujem vám za pozornosť!

Odkaz na kód

Zdroj: hab.com

Pridať komentár