Zkušenosti s vytvářením prvního robota na Arduinu (robot "lovec")

Dobrý den.

V tomto článku chci popsat proces stavby svého prvního robota na Arduinu. Materiál bude užitečný i dalším nováčkům, jako jsem já, kteří by chtěli vyrobit nějakou «autonomní platformu». Článek představuje popis jednotlivých fází práce s mými dodatky k různým nuancím. Odkaz na finální kód (pravděpodobně ne úplně ideální) je uveden na konci článku.

Zkušenosti s vytvářením prvního robota na Arduinu (robot "lovec")

Pokud to šlo, zapojoval jsem do práce svého syna (8 let). Co se nám dařilo a co ne — tomu jsem věnoval část článku, možná to někomu přijde vhod.

Obecný popis robota

Nejdříve několik slov o samotném robotu (myšlenka). Nechtěl jsem na začátku stavět nic typického. Zároveň byl soubor komponentů docela standardní — podvozek, motory, ultrazvukový senzor, senzor čáry, LED diody, repráček. Na základě tohoto „polévkového balíčku“ jsem přišel s robotem, který hlídá své území. Přijíždí k narušiteli, který překročil čáru kruhu, a poté se vrací do centra. Nicméně v této variantě byla potřeba nakreslená čára a také trochu matematiky, abych neustále zůstal v kruhu.

Proto po některých úvahách jsem trochu změnil myšlenku a rozhodl se postavit robota-„lovce“. Na začátku se otáčí kolem své osy, vybírá si blízký cíl (člověka). Pokud je „obeť“ nalezena, „lovec“ zapne maják a sirénu a začne se k ní sunout. Když se člověk vzdálí/odběhne, robot si vybírá novou cíl a pronásleduje ho, a tak dále. Takovému robotu není potřeba omezený kruh, může fungovat na otevřeném prostranství.

Jak vidíte, to v mnohém připomíná hru „na honěnou“. Ačkoli nakonec robot nebyl až tak rychlý, důsledně interaguje s lidmi kolem sebe. Dětem se to obzvlášť líbí (někdy to vypadá, že ho brzy rozmačkají, až se srdce svírá…). Myslím, že pro popularizaci technického konstruování je to dobré řešení.

Struktura robota

Takže jsme se dohodli na myšlence, přejdeme k uspořádání. Seznam prvků se tvoří z toho, co by robot měl umět. Tady je to docela jasné, takže se hned podíváme na číslování:

Zkušenosti s vytvářením prvního robota na Arduinu (robot "lovec")

Mozky robota — deska Arduino Uno (1); byla v objednaném soupravném balení z Číny. Pro naše účely je to zcela dostačující (s orientací na počet použitých pinů). Z této soupravy jsme vzali hotové šasi (2), na které jsou upevněna dvě hnací kola (3) a jedno zadní (volně rotující) (4). Také v sadě byl hotový bateriový box (5). Vpředu robota je ultrazvukový senzor (HC-SR04) (6), vzadu — ovladač motorů (L298N) (7), na středu — blikající LED dioda (8), a kousek stranou — piezo reproduktor (9).

V fázi kompozice se díváme:

— aby se všechno vešlo
— aby to bylo vyvážené
— aby bylo rozumně rozmístěno

Částečně to už udělali za nás čínští kolegové. Takže těžký bateriový box je umístěn ve středu a přibližně pod ním jsou hnací kola. Všechny ostatní desky jsou lehké, ty lze umístit na periferii.

Některé nuance:

  1. V šasi ze soupravy je mnoho továrních otvorů, ale jaká je v nich logika — to jsem prostě nepochopil. Motory a akumulátorový blok se upevnily bez problémů, dál začalo «půdění» s vrtáním nových otvorů, abych upevnil tu či onu desku.
  2. Osvědčily se mosazné stojany a jiný spojovací materiál ze zásob (někdy jsem se musel improvizovat).
  3. Kabely od každé desky jsem provlékl skrze svorky (opět jsem našel v zásobách). Velmi pohodlné, všechny dráty leží hezky a neplandají.

Samostatné bloky

Nyní projdu bloky a osobně povím o každém z nich.

Bateriový box

Je jasné, že robot musí mít dobrý zdroj energie. Varianty mohou být různé, zvolil jsem variantu se 4 AA bateriemi. Celkem dávají přibližně 5 V, a toto napětí lze přímo přivést na pin 5V desky Arduino (obejdeme stabilizátor).

Určitá obezřetnost, samozřejmě, byla, ale toto řešení je zcela funkční.

Protože je zapotřebí napájení všude, pro pohodlí jsem udělal ve středu robota dva konektory: jeden «sdílí» zem (vpravo), a druhý — 5 V (vlevo).

Zkušenosti s vytvářením prvního robota na Arduinu (robot "lovec")

Motory a ovladač

Nejprve něco o uchycení motorů. Uchycení je tovární, ale je vyrobeno s velkými tolerancemi. Jinými slovy, motory se mohou "vychylovat" o pár milimetrů vlevo a vpravo. Pro naše potřeby to není kritické, ale jinde to může mít vliv (robota začne odvádět na stranu). Pro jistotu jsem motory nastavil přesně paralelně a zafixoval lepidlem.

Zkušenosti s vytvářením prvního robota na Arduinu (robot "lovec")

Pro řízení motorů, jak jsem již psal výše, se používá ovladač L298N. Podle dokumentace má tři piny na každý motor: jeden pro změnu rychlosti a dva pro směr otáčení. Tady je jeden důležitý bod. Zjistil jsem, že pokud je napájecí napětí 5 V, potom regulace rychlosti prostě nefunguje! To znamená, že buď se motor vůbec netočí, nebo točí naplno. Taková zvláštnost, kvůli které jsem "zabil" několik večerů. Nakonec jsem našel zmínku někde na jednom z fór.

Obecně vzato, nízká rychlost otáčení byla potřebná při otáčení robota – aby měl čas prozkoumat prostor. Ale protože s tímto plánem nic nevzešlo, musel jsem to udělat jinak: malé otočení – zastavení – otočení – zastavení a tak dále. Opět, není to tak elegantní, ale funkční.

Ještě dodám, že po každém sledování robot zvolí náhodný směr nového otočení (ve směru nebo proti směru hodinových ručiček).

Ultrazvukový senzor

Zkušenosti s vytvářením prvního robota na Arduinu (robot "lovec")

Ještě jedna součást, kde jsem musel hledat kompromisní řešení. Ultrazvukový senzor na skutečných překážkách poskytuje nestabilní údaje. To bylo vlastně očekávané. Ideálně funguje někde na závodech, kde jsou hladké, rovné a kolmé povrchy, ale pokud se před ním "míchají" nohy někoho jiného – je potřeba zavést dodatečné zpracování.

Jako takové zpracování jsem nastavil mediánový filtr na tři měření. Podle testů na skutečných dětech (během testů žádné dítě nebylo zraněno!), se ukázalo, že to je zcela dostatečné pro normalizaci údajů. Fyzika je zde jednoduchá: máme signály, které se odrážejí od požadovaných objektů (dávající požadovanou vzdálenost) a odrážející se od vzdálenějších, například zdí. Druhé představují náhodné odchylky v měřeních jako 45, 46, 230, 46, 46, 45, 45, 310, 46… Právě tyto náhodné odchylky mediánový filtr odstraňuje.

Po všech zpracováních máme vzdálenost k nejbližšímu objektu. Pokud je menší než určité prahové množství, aktivujeme alarm a vydáváme se přímo na "porušitele".

Maják a siréna

Snad nejjednodušší prvky ze všech uvedených. Jsou vidět na fotografiích výše. O hardwaru zde není co psát, proto nyní přejdeme k kódu.

Program řízení

Podrobně rozepisovat kód nemá smysl, kdo potřebuje — odkaz je na konci článku, tam je vše dost čitelné. Obecnou strukturu by však bylo dobré vysvětlit.

První, co jsem musel promyslet: robot je zařízení reálného času. Přesněji řečeno, vzpomenout, protože se elektrotechnice věnuji už dříve i nyní. Takže hned zapomínáme na volání delay(), které má v oblibě mnoho příkladů a které prostě "zmrazuje" program na určenou dobu. Místo toho, jak radí zkušení lidé, zavádíme časovače pro každý blok. Uběhla požadovaná doba — provedli jsme akci (zvýšili jas LED diody, zapnuli motor atd.).

Časovače mohou být vzájemně propojeny. Například bzučák pracuje synchronně s majákem. To trochu zjednodušuje program.

Samozřejmě, všechno rozdělíme na jednotlivé funkce (maják, zvuk, otáčení, pohyb vpřed atd.). Pokud to tak neuděláte, pak už nebude jasné, co odkud a kam.

Nuance pedagogiky

Vše, co bylo popsáno výše, jsem dělal ve volném čase večer. V klidném tempu jsem strávil na robotovi přibližně tři týdny. Na tom bych mohl i skončit, ale slíbil jsem vám ještě povědět o práci s dítětem. Co je v tomto věku možné?

Práce podle instrukce

Každý prvek jsme nejprve ověřovali jednotlivě — LED diody, bzučák, motory, senzory atd. Existuje velké množství hotových příkladů — některé přímo v vývojovém prostředí, jiné lze najít na internetu. To nespochybnitelně potěší. Vezmeme kód, připojíme prvek, ujistíme se, že funguje, a poté už začneme upravovat podle svého úkolu. Připojení podle schématu a pod mým určitým dohledem dítě dělá samo. To je dobré. Umět pracovat důsledně podle instrukce je také důležité.

Pořadí práce ("od konkrétního k obecnému")

Toto je komplikovaný bod. Je třeba si zvyknout na to, že velký projekt („postavit robota“) se skládá z menších úkolů („připojit senzor“, „připojit motory“…), a ty se zase skládají z ještě menších kroků („najít program“, „připojit desku“, „nahrát firmware“…). Když plníme více či méně jasné úkoly nižší úrovně, „uzavíráme“ úkoly střední úrovně, a z nich se už skládá celkový výsledek. Vysvětloval jsem, ale myslím, že si to ještě nějakou dobu neuvědomí. Možná až v pubertě.

Montáž

Vrtání, závity, šrouby, matice, pájení a vůně kolofonia – bez toho se nikam neujdete. Dítě získalo základní dovednost „Práce se páječkou“ – podařilo se mu spájet několik spojů (já jsem trošku pomáhal, nebudu to tajit). Nezapomeňte na vysvětlení bezpečnostních pravidel.

Práce na počítači

Program pro robota jsem psal já, ale podařilo se dosáhnout i nějakých vedlejších výsledků.

Za prvé: angličtina. Ve škole ji teprve začali, proto jsme s „odporom“ rozebírali, co je to pishalka, migalka, yarkost a další transliterace. Pochopili jsme alespoň to. Záměrně jsem se rozhodl nepoužívat rodné anglické slova, protože na tuto úroveň jsme ještě nedošli.

Za druhé: efektivní práce. Učili jsme se horké kombinace kláves, jak rychle provádět typické operace. Občas, když jsme psali program, jsme si se synem vyměnili místa a já jsem říkal, co je potřeba udělat (náhrada, hledání atd.). Musel jsem opakovat znovu a znovu: „vyber dvojitým kliknutím“, „drž Shift“, „drž Ctrl“ a tak dále. Proces učení zde není rychlý, ale myslím, že dovednosti se postupně uloží „do podvědomí“.

Skrytý textMůžete říct, že výše popsané je téměř samozřejmé. Ale upřímně, tuto zimu jsem měl na starosti informatiku v devátých třídách v jedné škole. To je hrůza. Žáci neznají takové elementární věci jako Ctrl + Z, Ctrl + C a Ctrl + V, výběr textu s držení Shiftu nebo dvojitým kliknutím na slovo a další. To při tom, že mají třetí rok školení v informatice… Udělejte si vlastní závěr.

Za třetí: slepá metoda psaní. Komentáře v kódu jsem svěřil dítěti, ať si trénuje. Hned jsme mu správně postavili ruce, aby si prsty postupně zapamatovaly umístění kláves.

Jak vidíte, teprve na začátku. Dovednosti a znalosti budeme dál zdokonalovat, v životě se hodí.

Mimochodem o perspektivě…

Další rozvoj

Robot byl vyroben, jezdí, bliká a pípá. Co teď? Inspirováni dosaženým plánujeme jeho další vylepšení. Máme v úmyslu vytvořit dálkové ovládání — podobně jako u lunárního vozidla. Bylo by zajímavé, sedět u hypotetického ovladače a řídit pohyb robota, který je někde úplně jinde. Ale to už bude jiný příběh…

A na závěr hrdinové tohoto článku (video po kliknutí):

Zkušenosti s vytvářením prvního robota na Arduinu (robot "lovec")

Děkujeme za pozornost!

→ Odkaz na kód

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster