Ardubot (2.díl)

Hned po uveřejnění minulého článku, jsem začal přemýšlet, jak Ardubota dále vylepšit. Jako nejlepší se mi zdál nápad vybavit ho malou bezdrátovou kamerou pracující v pásmu 2,4 GHz. Přijímač lze snadno připojit k televizoru, na kterém pak můžeme sledovat, kam robot jede. Zároveň jsem si hned ze začátku určil jako cíl, že kamera musí být pohyblivá v horizontálním i vertikálním směru. Vznikne tak v podstatě něco jako tanková věž s otáčením i elevací.

Toho lze snadno dosáhnout pomocí modelářských serv, ale ukázalo se, že větší problém bude výroba potřebných dílů z plexiskla, které jsem na PC navrhnul. Cenové nabídky firem, které byly ochotné díly z barevného plexiskla vyříznout laserem, se pochybovaly všechny nad 500Kč, což bylo přibližně maximum, kolik jsem byl ochoten investovat. Nezbývalo mi tedy než díly zhotovit sám, nicméně nepodařilo se mi za příznivou cenu sehnat ani plexisklo rozumné velikosti. Běžně se totiž barevné plexisklo prodává v tabulích 2 x 3 metry, což je pro daný účel trochu moc. Skončil jsem tedy u čirého plexiskla s označením Hobbyglass (obr. 1), které je možné zakoupit v obchodech typu Hornbach či Baumax. Dostupná je tloušťka 2 nebo 4 mm a velikosti 50 x 25 cm, 50 x 50 cm a více. Pro výrobu dílu bohatě postačilo plexisklo 50 x 25 cm tloušťky 2 mm.

Stavba

Postupoval jsem tak, že jsem si výkres s díly nechal vytisknout na samolepicí fólii (obr.2) a nalepil na plexisklo místo původní ochranné fólie. Podle takovéto šablony jsem vyvrtal potřebné otvory a pak díly vyříznul a zabrousil (obr. 3). Nakonec jsem je ještě nastříkal modelářským sprejem na lexanové karoserie (obr. 4). Barevná vrstva je samozřejmě náchylná k poškrábání, proto je třeba s tím počítat při manipulaci a během stavby umístit díly nastříkanou stranou dovnitř nebo prostě tak, aby se snížila možnost podření.

Nyní je třeba rozhodnout, kterou verzi věže postavíme, protože jsem navrhnul dva horní díly. Jeden základní 6 a druhý prodloužený 6*, který přečnívá dopředu a má navíc dva montážní otvory například pro další IR senzor. Dal jsem prozatím přednost základní verzi bez senzoru, proto se prodloužený díl na dalších fotografiích už neobjeví.

Na obrázku číslo 5 jsou všechny potřebné díly, včetně dvou serv Hitec HS-81. Soupis najdete na konci článku. Začneme tím, že do dílu 1, který bude tvořit horní palubu, namontujeme první servo pomocí dvou šroubů M3x10. Například servotesterem nastavíme neutrál a nasadíme i upravený kříž, ten má na průměr 3 mm rozšířené dva protější otvory s roztečí středů 36 mm. Nepoužitá ramena kříže jsem odřízl, proto výsledek na fotografii už kříž rozhodně nepřipomíná (obr. 6).

Teď se pustíme do stavby věže. Na spodní díl 5 přišroubujeme (M3x10) upravenou upevňovací konzolu s průměrem otvorů 3 mm, dá se zakoupit v modelářských obchodech jako díl pro montáž podvozků. Vzhledem k tomu, že k uchycení nám stačí jeden otvor, přebývající stranu konzoly jsem odřízl. (obr. 7 a 8)

Přichystáme si materiál dle obrázku 9. Do vrchního dílu 6 nachystáme do rohů čtyři šrouby M3x20, do dvou středních otvorů šrouby M3x25 a na ně distanční sloupky (obr. 10).

Mezi distanční sloupky umístíme druhé servo, které bude sloužit k naklápění kamery, je vhodné ho zafixovat například kouskem oboustranné lepicí pásky. Dbejte na to, aby poloha unašeče odpovídala obrázku 11. Pak oba díly sešroubujeme (obr. 12), velmi důležité je, aby unašeč serva byl v jedné přímce s otvorem v konzole.

Celek pak přišroubujeme na páku prvního serva a výsledek by měl vypadat jako na obrázku 13. Unašeč serva pro naklápění kamery musí být blíže zadnímu okraji věže, takže i kablík bude vycházet přibližně nad otvorem v palubě, kterým ho protáhneme dolů. Obrázek 14 zachycuje díly potřebné na stavbu naklápěcí plošiny pro kameru. Bílé kolečko pochází z příslušenství serva HS-81, je třeba na něm rozšířit dva otvory s roztečí středů 12 mm na průměr 2 mm a opatrně odříznout límeček kolem středního otvoru, který by jinak překážel při montáži na díl z plexiskla.

Smontované boky naklápěcí plošiny pro kameru se musí shodovat s obrázkem 15. K přichycení kolečka na plexi díl 3 použijeme šroubky M2x8, zbývající šroub M3x15 přitáhneme nízkou matkou bez pojistky k druhému boku plošiny (díl 2). Je nezbytné opravdu použít nízkou matku, protože na větší s pojistkou nebude v konstrukci místo. Nastavíme servo do neutrálu a díl 3 přišroubujeme (obr. 16)

Dokončíme plošinu umístěním boku 2 tak, že šroub zasuneme do konzoly, a přidáním horního dílu 4. Tento celek (obr. 17) slepíme například lepidlem na plastikové modely. Zde ovšem narážíme na výraznou slabinu konstrukce, která se při testování objevila. Závěs plošiny tvořený šroubem v konzole se otáčí až moc volně a při pomalém pohybu serva docházelo k rozkmitání. Tento problém jsem vyřešil následujícím způsobem: Šroub tvořící závěs (obr. 15 vlevo) skoro úplně vyšroubujeme, opatrně vychýlíme boční díl 2 (záleží, jak dobře jsme lepili, ale hrozí ulomení!) a mezi matku a konzolu vložíme malý gumový kroužek. Ten se dá obvykle koupit jako těsnění, ale zde bude pod tlakem vychýleného bočního dílu vytvářet tření, které celému závěsu přidá mírnou tuhost. Tím je celá konstrukce věže hotová, stačí na plošinu namontovat bezdrátovou kameru.

Elektronika

Horní palubu Ardubota ještě vylepšíme modrobílým LCD displejem 16 x 2 znaky (označení GME MC1602E-SBL/H), který nahradí původní menší displej. Zapojení je naprosto shodné, pomocí původního schématu a datasheetu displeje to určitě každý zvládne. Navíc jsem u tohoto displeje zapojil i podsvětlení. Displej při montáži do paluby podložíme 3mm distančními sloupky a použijeme šrouby M2,5x12. V palubě ještě zbývá 5 mm otvor, který je možné osadit například vypínačem do panelu, ten pak nahradí tlačítko z původního schématu.

Celou přídavnou palubu pak přišroubujeme na distanční sloupy nachystané na Ardubotovi. Vzhledem k tomu, že kabelů výrazně přibylo, je třeba si při montáži i demontáži paluby dávat pozor. Pro serva a podsvícení displeje musíme také zajistit napájení, k tomu slouží low drop stabilizátor napětí L4940V05, přikládám jen malé schéma zapojení, protože zbytek je shodný s minulým. Pravděpodobně vás zarazí, že jsem zapojil signální vodiče serv na piny Arduina, které jsou označeny jako analogové vstupy. Opravdu se nejedná o chybu, ale ostatní volné piny jsem už vyčerpal. Piny nesou označení Analog In, protože jsou vybaveny A/D převodníky, nicméně dají se použít i jako klasické výstupy.

Chtěl bych také upozornit na jednu věc, kterou jsem v minulém článku opomněl. Pokud připojujeme Arduino k PC pomocí USB kabelu, je nutné předtím odpojit z pinů Rx a Tx vodiče vedoucí k bluetooth modulu. V případě, že tak neučiníme, komunikace a nahrávání programů nefunguje. Zároveň musíme pamatovat na to, že pokud je Arduino připojeno k USB, port pro něj slouží i jako napájení, poskytuje napětí 5V a maximálně 500mA. Vzhledem k zapojení palubní elektroniky Ardubota, je toto napětí rozvedeno i na ostatní komponenty (Serva, displej a podobně…), ty během uploadu programů nepotřebujeme, a proto doporučuji od palubní elektroniky odpojit pin Arduina označený 5V. Předešlé úkony lze provést vytažením konektorů, což se ale díky velkému množství kabelů na palubě ukázalo jako nepohodlné. Řešením tohoto nedostatku se budu zabývat v dalším článku.

Programování

Serva jsme úspěšně namontovali, ale nyní si ještě musíme ukázat, jak je pomocí Arduina ovládat s využitím knihovny servo.h. Modelářská serva se řídí pulzem dlouhým 1 až 2 ms, opakujícím se každých 20 ms, neutrálu odpovídá pulz 1,5 ms. Nicméně nad tímto nebudeme muset přemýšlet, protože knihovna servo.h to udělá za nás a polohu serva zadáváme ve stupních. Rozsah hodnot je 0 až 180°, neutrálu odpovídá 90°, ale pozor! Tyto hodnoty jsou někdy nad mechanické možnosti běžných modelářských serv! V případě, že zadáte polohu například 180° nebo 0°, servo nemá šanci ji dosáhnout, dojede na doraz a pak motor stále poběží ve snaze dosáhnout požadované výchylky. V případě, že servo včas neodpojíte nebo nenastavíte polohu v jeho mechanickém rozsahu, může dojít k poškození. Proto budu dále používat krajní polohy maximálně 20° a 160°.

Nejdůležitější příkazy pro práci se servy vysvětluje vzorový program 1, který nedělá nic jiného, než že servo nastaví do neutrálu pomocí příkazu write() a jeho polohu uloží do proměnné x. K získání aktuální polohy serva slouží tedy příkaz read(), nicméně ve skutečnosti nijak aktuální polohu nezjišťuje, do proměnné x uloží polohu serva, která byla zadána jako poslední příkazem write(). Z toho vyplývá, že například nezjístíte, že servo požadované polohy nedosáhlo například z důvodu mechanického zablokování. Pro úplnost dodám, že v kódu chybí funkce loop(), takže pokud byste ho chtěli kompilovat a nahrát do Arduina, je nutné ji připsat i kdyby neobsahovala žádný příkaz.

Příkaz write()pro naše použití má však jedno výrazné úskalí. Serva reagují velmi svižně a prudká změna poloha kamery je jednak nesmyslná a zároveň nadměrně namáhá konstrukci věže. Proto si budeme muset napsat funkci, která do požadované polohy servo přesune hezky pomalu. Mé řešení si můžete prohlédnout ve vzorovém programu 2. Funkci otaceni_veze() předáme v parametru hodnotu úhlu, do kterého chceme servo nastavit. Ta ji porovná se současnou polohou a rozhodne, zda je nutné přičítat nebo odečítat. Pak se spustí cyklus for, který s pauzami vždy o kousek posune servo, dokud nedosáhne požadované polohy. Takovouto funkci jistě každý zvládne upravit i pro naklápění serva, nicméně je třeba postupovat opatrně a vyzkoušet krajní polohy. Doporučuji přibližně 60 a 120°.

Provoz Ardubota s kamerou

Pochopitelně jsem použití kamery na Ardubotovi otestoval a objevil jsem bohužel významné nevýhody. Ačkoliv se přímo nabízí využít dálkové ovládání pomocí bluetooth, projevuje se v přenosu zvuku i kamery rušení, protože kamera i bluetooth pracují v pásmu 2,4 GHz. Konkrétně 4 kanál, na který je z výroby naladěná má kamera, není na takový provoz nejvhodnější. Další poznámka se týká samotné konstrukce věže. Bohužel při jízdě, zejména na tuhém povrchu jako je například plovoucí podlaha, Ardubot na pásech poměrně drncá. Vzhledem k tomu, že jak otáčecí, tak naklápěcí mechanizmus mají určité vůle, kamera se samozřejmě klepe. Na výsledném obrazu se to sice pochopitelně projeví, ale základní účel rozhodně ohrožen není. Vidíme, kam jedeme a jinak je přenos obrazu i zvuku bezproblémový.

- Stránka vytvořena 10. listopad 2010 -
- Článek vyšel v řijnovém čísle časopisu Robot Revue -