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

Haló

V tomto článku chci popsat proces sestavení mého prvního robota pomocí Arduina. Materiál bude užitečný pro další začátečníky, jako jsem já, kteří si chtějí vyrobit nějaký druh „samoběžícího vozíku“. Článek je popisem fází práce s mými doplňky na různých nuancích. Odkaz na finální kód (s největší pravděpodobností ne nejideálnější) je uveden na konci článku.

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

Kdykoli to bylo možné, zapojil jsem do účasti svého syna (8 let). Co přesně s tím fungovalo a co ne - tomu jsem věnoval část článku, snad se to někomu bude hodit.

Obecný popis robota

Nejprve pár slov o samotném robotovi (myšlenku). Na začátku jsem opravdu nechtěl sestavovat něco standardního. Přitom sestava komponent byla vcelku standardní – šasi, motory, ultrazvukový senzor, linkový senzor, LED diody, výškový reproduktor. Zpočátku byl z této „polévkové sady“ vynalezen robot, který hlídá své území. Jede směrem k pachateli, který překročil kruhovou čáru, a poté se vrací do středu. Tato verze však vyžadovala nakreslenou čáru a navíc matematiku, aby zůstala neustále v kruhu.

Proto jsem po chvíli přemýšlení poněkud změnil myšlenku a rozhodl se vyrobit „loveckého“ robota. Na startu se otočí kolem své osy a vybere si blízký cíl (osobu). Pokud je „kořist“ detekována, „lovec“ rozsvítí blikající světla a sirénu a začne se k ní rozjíždět. Když se osoba vzdálí/uteče, robot si vybere nový cíl a pronásleduje jej, a tak dále. Takový robot nepotřebuje omezený kruh a může pracovat na otevřených plochách.

Jak vidíte, je to hodně jako hra na dohánění. I když se nakonec robot neukázal jako dostatečně rychlý, poctivě komunikuje s lidmi kolem sebe. Líbí se to hlavně dětem (někdy to ale vypadá, že se chystají ušlapat, srdce jim zaplesá...). Myslím, že je to dobré řešení pro popularizaci technického designu.

Struktura robota

Takže jsme se rozhodli pro nápad, pojďme na to rozložení. Seznam prvků se skládá z toho, co by měl robot umět. Vše je zde zcela zřejmé, takže se okamžitě podívejme na číslování:

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

„Mozky“ robota jsou deska arduino uno (1); byl v sadě objednané z Číny. Pro naše účely to celkem stačí (zaměříme se na počet použitých pinů). Ze stejné stavebnice jsme převzali již hotový podvozek (2), na kterém jsou uchycena dvě hnací kola (3) a jedno zadní (volně otočné) (4). Sada také obsahovala připravený prostor pro baterie (5). V přední části robota je ultrazvukový senzor (HC-SR04) (6), vzadu je ovladač motoru (L298N) (7), uprostřed je LED blikač (8) a trochu na straně je výškový reproduktor (9).

Ve fázi rozvržení se podíváme na:

- aby vše sedělo
- být vyrovnaný
- být racionálně umístěn

Částečně to za nás již udělali naši čínští kolegové. Prostor pro těžké baterie je tedy umístěn uprostřed a hnací kola jsou umístěna přibližně pod ním. Všechny ostatní desky jsou lehké a lze je umístit na periferii.

Nuance:

  1. Podvozek ze stavebnice má spoustu továrních děr, ale stále jsem nepřišel na to, jaká je v nich logika. Motory a bateriová sada byly zajištěny bez problémů, poté začalo „seřízení“ s vrtáním nových otvorů pro zajištění té či oné desky.
  2. Velkým pomocníkem byly mosazné regály a další spojovací prvky ze skladovacích prostor (někdy jsme je museli dostat ven).
  3. Protáhl jsem přípojnice z každé desky přes svorky (zase jsem je našel na skladě). Velmi pohodlné, všechny dráty pěkně leží a nevisí.

Jednotlivé bloky

Teď to projdu bloky a o každém vám řeknu osobně.

přihrádka na baterie

Je jasné, že robot musí mít dobrý zdroj energie. Možnosti se mohou lišit, zvolil jsem variantu se 4 AA bateriemi. Celkově dávají přibližně 5 V a toto napětí lze přímo přivést na 5V pin desky arduino (obejít stabilizátor).

Samozřejmě jsem měl určitou opatrnost, ale toto řešení je docela funkční.

Vzhledem k tomu, že napájení je potřeba všude, pro pohodlí jsem vytvořil dva konektory ve středu robota: jeden „distribuuje“ zem (vpravo) a druhý - 5 V (vlevo).

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

Motory a řidič

Nejprve o montáži motorů. Držák je tovární výroby, ale vyrobený s velkými tolerancemi. Jinými slovy, motory se mohou kývat o několik milimetrů doleva a doprava. Pro náš úkol to není kritické, ale v některých místech to může mít vliv (robot se začne pohybovat do strany). Pro každý případ jsem nastavil motory přísně paralelně a zafixoval je lepidlem.

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

K ovládání motorů, jak jsem psal výše, slouží ovladač L298N. Podle dokumentace má pro každý motor tři piny: jeden pro změnu otáček a pár pinů pro směr otáčení. Je zde jeden důležitý bod. Ukazuje se, že pokud je napájecí napětí 5 V, pak regulace otáček prostě nefunguje! To znamená, že se buď netočí vůbec, nebo se točí na maximum. To je funkce, která mě přiměla „zabít“ pár večerů. Nakonec jsem někde na jednom z fór našel zmínku.

Obecně řečeno, při otáčení robota jsem potřeboval nízkou rychlost otáčení - aby měl čas naskenovat prostor. Ale protože z tohoto nápadu nic nebylo, musel jsem to udělat jinak: malá otočka - stop - otočka - stop atd. Zase ne tak elegantní, ale funkční.

Zde také dodám, že po každém pronásledování si robot zvolí náhodný směr pro nový obrat (ve směru nebo proti směru hodinových ručiček).

Ultrazvukový senzor

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

Další kus hardwaru, kde jsme museli hledat kompromisní řešení. Ultrazvukový senzor produkuje nestabilní čísla na skutečných překážkách. Vlastně se to dalo čekat. Ideálně to funguje někde na soutěžích, kde jsou hladké, rovné a kolmé povrchy, ale pokud se před tím někomu „blikají“ nohy, je potřeba zavést dodatečné zpracování.

Jako takové zpracování jsem nastavil střední filtr na tři počty. Na základě testů na skutečných dětech (při testech se žádné dítě nezranilo!) se ukázalo jako zcela dostačující k normalizaci dat. Fyzika je zde jednoduchá: máme signály odražené od nutné objektů (uvádějících potřebnou vzdálenost) a odražených od vzdálenějších, např. stěn. Posledně jmenované jsou náhodné emise při měřeních tvaru 45, 46, 230, 46, 46, 45, 45, 310, 46... Právě ty odřízne mediánový filtr.

Po veškerém zpracování získáme vzdálenost k nejbližšímu objektu. Pokud je nižší než určitá prahová hodnota, zapneme alarm a jedeme přímo k „narušiteli“.

Blikač a siréna

Snad nejjednodušší prvky ze všech výše uvedených. Jsou vidět na fotografiích výše. O hardwaru zde není co psát, takže nyní pojďme k tomu kód.

Řídicí program

Nevidím smysl podrobně popisovat kód, kdo to potřebuje - odkaz je na konci článku, vše je tam docela čitelné. Ale bylo by hezké vysvětlit obecnou strukturu.

První věc, kterou jsme museli pochopit, bylo, že robot je zařízení v reálném čase. Přesněji řečeno, abych si vzpomněl, protože jak dříve, tak nyní stále pracuji v elektronice. Takže na výzvu okamžitě zapomeneme zpoždění(), který rádi používají v ukázkových náčrtech a který jednoduše „zmrazí“ program na určitou dobu. Místo toho, jak radí zkušení lidé, zavádíme časovače pro každý blok. Požadovaný interval uplynul - akce byla provedena (zvýšení jasu LED, zapnutí motoru atd.).

Časovače lze vzájemně propojit. Například výškový reproduktor pracuje synchronně s blikačem. To program trochu zjednodušuje.

Vše samozřejmě rozdělujeme do samostatných funkcí (blikání, zvuk, otáčení, pohyb vpřed a tak dále). Pokud to neuděláte, nebudete schopni zjistit, co odkud a odkud pochází.

Nuance pedagogiky

Vše výše popsané jsem dělal ve volném čase po večerech. V klidu jsem strávil na robotu asi tři týdny. Tady to mohlo skončit, ale také jsem vám slíbil, že vám povím o práci s dítětem. Co se dá v tomto věku dělat?

Pracujte podle návodu

Nejprve jsme zkontrolovali každý detail zvlášť – LED diody, výškový reproduktor, motory, senzory atd. Hotových příkladů je velké množství – některé přímo ve vývojovém prostředí, jiné najdete na internetu. To mě rozhodně těší. Vezmeme kód, připojíme součást, ujistíme se, že funguje, a pak ji začneme měnit, aby vyhovovala našemu úkolu. Dítě provádí zapojení podle schématu a pod nějakým mým dohledem. To je dobré. Musíte také umět pracovat přísně podle pokynů.

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

To je obtížný bod. Musíte se naučit, že velký projekt („vyrobte robota“) se skládá z malých úkolů („připojit senzor“, „připojit motory“...), a ty zase z ještě menších kroků („najít program“, „připojit desku.“ „, „stáhnout firmware“...). Plněním více či méně srozumitelných úkolů nižší úrovně „uzavřeme“ úkoly střední úrovně a z nich se tvoří celkový výsledek. Vysvětlil jsem, ale myslím, že uvědomění nepřijde brzy. Někde, pravděpodobně v dospívání.

Instalace

Vrtání, závity, šrouby, matice, pájení a vůně kalafuny – kde bychom bez toho byli? Dítě získalo základní dovednost „Práce s páječkou“ - podařilo se mu připájet několik spojení (trochu jsem pomohl, nebudu to skrývat). Nezapomeňte na bezpečnostní vysvětlení.

Práce na počítači

Napsal jsem program pro robota, ale přesto se mi podařilo dosáhnout některých příznivých výsledků.

Za prvé: angličtina. Právě s tím začali ve škole, takže jsme se snažili přijít na to, co je to pishalka, migalka, yarkost a další transliterace. Aspoň tohle jsme pochopili. Záměrně jsem nepoužil původní anglická slova, protože jsme ještě nedosáhli této úrovně.

Za druhé: efektivní práce. Naučili jsme kombinace klávesových zkratek a jak rychle provádět standardní operace. Když jsme program psali, pravidelně jsme si se synem vyměnili místa a řekl jsem, co je potřeba udělat (výměna, hledání atd.). Musel jsem opakovat znovu a znovu: „vybrat dvojitým kliknutím“, „podržet Shift“, „držet Ctrl“ a tak dále. Proces učení zde není rychlý, ale myslím si, že dovednosti budou postupně uloženy „v subkortexu“.

Skrytý textDá se říci, že výše uvedené je téměř zřejmé. Ale upřímně, letos na podzim jsem měl možnost učit informatiku v 9. třídě na jedné škole. To je hrozný. Studenti neumí takové základní věci jako Ctrl + Z, Ctrl + C a Ctrl + V, výběr textu při držení Shiftu nebo poklepání na slovo a podobně. A to i přesto, že studovali informatiku ve třetím ročníku... Udělejte si závěr sami.

Za třetí: dotykové psaní. Komentáře v kódu jsem svěřila dítěti k překlepu (ať si procvičí). Ruce jsme hned umístili správně, aby si prsty postupně zapamatovaly umístění kláves.

Jak vidíte, jsme teprve na začátku. Budeme nadále zdokonalovat své dovednosti a znalosti, budou užitečné v životě.

Mimochodem o budoucnosti...

Další vývoj

Robot je vyroben, jede, bliká a pípá. Co teď? Inspirováni tím, čeho jsme dosáhli, ho plánujeme dále zdokonalovat. Existuje nápad vyrobit dálkové ovládání - jako lunární rover. Bylo by zajímavé, sedět u dálkového ovládání, ovládat pohyb robota, který jede na úplně jiném místě. Ale to už bude jiný příběh...

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

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

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

Odkaz na kód

Zdroj: www.habr.com

Přidat komentář