Druhý pokus o proniknutí do světa robotiky je stejně jako robot první postaven na podvozku závodního RC auta. Cílem je postavit robota, který bude umět autonomně projet zadanou trasu a vyhýbat se překážkám. Při jeho stavbě se chci vyvarovat chyb, které se jeho předchůdce objevily (špatná konstrukce, přehlcení mikrokontroléru, podceňení obecných elektrotechnických pravidel). Robot je popsán na http://dir.adamh.cz/soc/mobilni-robot.pdf jako práce SOČ (3. místo na celostátní přehlídce SOČ 2009).
Jak již bylo zmíněno, základ robota tvoří podvozek závodního RC auta (1:10), na kterém je na dvou ohnutých páscích ze stavebnice Merkur přišroubovaná průhledná plastová bedna, která v sobě skrývá elektroniku. Z krabice je vyvedena zásuvka pro síť (připojení k počítači) a na víku krabice je umístěn 16×2 znakový LCD displej a tři tlačítka, sloužící jako „uživatelské rozhraní“. Jako zdroj energie slouží 6-ti článková baterie, která se běžně v závodních autech používá.
Mozkem robota je upravený router Edimax BR-6104KP (vyvedené I/O, sériový port a upravený napájecí zdroj), na kterém šlape systém s jádrem Linux, konkrétně distribuce Midge. Router startuje z připojeného USB flashdisku. Byl vybrán proto, že je relativně levný, dostatečně výkonný a programy se na něm dají spouštět úžasně jednoduše - přes FTP nahraju program v Perlu a během pár sekund jej můžu spustit. Navíc se dají upravovat přímo na routeru. Další příjemnou funkcí je webový server, který umožňuje řzení přes webvé rozhraní.
K počítači je připojeno WiFi AP (rovněž Edimax), díky kterému lze robota řídit bezdrátově z notebooku nebo třeba „chytrého telefonu“ s WiFi a webovým prohlížečem. Na fotografiích není, protože v robotu zabírá výhled na součáskty a ještě není zcela jisté, jak a kde bude uchyceno.
Počítač komunikuje s okolím pomocí znakového LCD displeje (SIC1602A20) připojeného na sériový port. Vzhledem k tomu, že displej vyžaduje invertovaný signál, jsem mezi něj a počítač zapojit ještě invertor s obvodem 7404, který se o úpravu signálu postará. Dálší periferie a senzory (například ultrazvukový měřič vzdálenosti - sonar SRF02 nebo elektronický kompas CMPS03) jsou připojeny přes sběrnici I2C. Infračervený měřič vzdálenosti GP2D120 je připevněn na mikroservo a měření zpracovává deska s mikrokontrolérem ATmega8, podobným způsobem je zpracováván i inkrementlní enkodér pro měření ujeté vzdálenosti, který je tvořen reflexním IR senzorem QRD114 vestavěným do krytu převodovky. O řízení serv se stará deska s jednočipem ATmega8 běžícím na 8 MHz. Další deska s ATmega8 je použita pro zpracování dat z akcelerometru MMA7260, ten ale zatím není v algoritmech použit. Poslední vychytávkou je bzučák (auto prostě musí umět troubit), který sloužil pro nejjednodušší, ale velice efektní algoritmus vyhýbání se překážkám („pokud narazíš na překážku, zastav a trub tak dlouho, dokud neuhne“) Pro jednoduchou diagnostiku stavu baterie je použit panelový voltmetr.
Časem plánuji zapojit kameru, nejžhavějšími kandidáty jsou:
[Duben 2009] Dálkové ovládání realizované webovým rozhraním je sice flexibilní, ale velice pomalé (skoro sekundová prodleva způsobená webserverem), proto jsem se v Delphi rozhodl napsat aplikaci, která se telnetem spojí s příkazovým řádkem routeru (něco jako SSH) a přes něj posílá příkazy nebo čte senzory (čtení senzorů je realizováno v samostatné relaci) a zároveň v reálném čase vykresluje trasu pohybu (na obrázku je aplikace nepřipojená a v testovacím režimu):
Vizualizace pohybu pak může vypadat například takto: