0. Co je Arduino?
vývojová platforma pro mikrokontrolery
Arduino je open-source platforma založená na mikrokontroleru ATMega od firmy Atmel a grafickém vývojovém prostředí, které vychází z prostředí Wiring (prostředí pro výuku programování). Arduino může být použito k vytváření samostatných interaktivních zapojení nebo může být použito jako rozšíření osobního počítače.
Motivace
O Arduinu je toho na internetu napsáno nepřeberné množství. Informace se dají tedy najít,
ale někdy je to dost práce.
Na naší škole vedu již 9 rokem kroužek robotiky. Začínáme se stavebnicí FischerTechnik,
potom staví kluci roboty většinou s využitím Merkuru nebo si sami vyrábí kompletně
mechanickou část (jsme strojaři). Jako elektroniku nadále používají řídicí jednotku z
FischerTechniku.
Ale letos se sami začali pídit po tom, jak to funguje a tak jsem se
rozhodl zkusit Arduino. Kluky to docela chytlo, a proto začínám psát seriál
"Jak s Arduinem začít".
Obsahem bude nejen vlastní programování, ale i trocha elektroniky (ta strojařům chybí)
a hlavně kompletní návody, jak danou úlohu sestavit, naprogramovat a další náměty na úpravy.
Každý týden by tedy měla být nová lekce pro kroužek. Pokud někomu tento seriál
pomůže, tak budu rád a hlavně budu vděčný za přimomínky a nápady.
Jen poznámka na úvod: za léta praxe v učitelském povolání jsem si ověřil, že je nutné
informace pečlivě odměřovat a podávat je postupně. Proto na mnoha místech si dovolím
značná zjednodušení (hlavně u elektroniky), takže odborníci to budou muset překousnout,
ale pro ně tyto články stejně nejsou určeny.
Popis
Mozkem Arduina je něco, co se odborně nazývá jednočipový mikropočítač (mikrokontroler).
Je to v podstatě kompletní počítač v jednom integrovaném obvodě. Obsahuje vše potřebné
pro svoji funkci (aritmeticko-logickou jednotku, řadič, paměť a další součásti nazývané
takovými to cizími slovy).
Stačí tedy jen připojit napájení a už může fungovat, ale pozor, aby něco užitečného dělal,
musí mít program. Ovšem není to počítač, který znáte (PC) - nemá ani klávesnici, myš, monitor,
ale naopak dokáže věci, které PC neumí - např. řídit robota.
Kromě vlastního mikrokontroleru je na desce i obvod pro spojení s PC, které potřebujeme
pro nahrání programu do Arduina. Dále zde najdeme stabilizátor napětí a
konektory, přes které budeme připojovat různá zařízení.
Parametry
A teď trošku konkrétněji. Různých typů Arduina (a jeho klonů) existuje nepřeberné množství.
My budeme používat jedno z nejobyčejnějších Arduino Diecimila, Duemilanove nebo novější
Arduino Uno.
U nich je použit mikrokontroler ATMEL ATmega328 s hodinovou frekvencí 16 MHz (to oproti PC, které
má dnes taktovací frekvenci cca 3 GHz vypadá dost uboze, ale zdání klame. Arduino dokáže
generovat signály s přesností v řádu mikrosekud a o tom se může sebenadupanějšímu PC jen zdát).
Stejně tak i paměť je na dnešní poměry docela malá: programová paměť FLASH 32kB a
paměť dat RAM 2 kB. Ovšem pokud s ní bude trošku hospodařit (a ne s ní plýtvat, jako programátoři
PC), tak zjistíte, že se tam vejde opravdu hodně.
A teď to nejdůležitějsí, co lze k Arduinu připojit - jednoduše všechno. Ale teď vážně.
Na připojovací konektory je vyvedeno celkem 20 pinů (nožiček) mikrokontroleru. Ty lze použít
na vstup signálů do počítače nebo pro ovládání zařízení k němu připojených.
Zapojení konektorů |
K dispozici máme 14 digitálních vstupů/výstupů, můžeme si tak zvolit, zda
signál vstupuje do mikrokontroleru nebo naopak mikrokontroler signál posílá ven.
Digitální (číslicové) znamená, že rozlišujeme pouze dvě hodnoty signálu. Obvykle je označujeme
jako logickou 0 a 1. Logické nule odpovídá napětí 0V a logické jedničce 5V (ve skutečnosti
je to trošku složitější, ale to zatím nepotřebujeme řešit).
Zbývajících 6 pinů jsou analogové vstupy. Ty umožňují "měřit" napětí na ně přivedené
v rozsahu 0-5V (rozlišení je 10 bitů, tzn. rozeznávají 1024 různých hodnot, tedy měří
napětí s rozlišením cca 4,88 mV). Pokus se nám digitálních vstupů/výstupů nedostává,
lze i analogové vstupy použít jako digitální.
Mikrokontroler obsahuje i množství dalších vestavěných periferií (seriovou linku,
sběrnici I2C, čítače, ...) jejichž vstupy a výstupy jsou společné s některými
digitálními a analogovými piny. Proto, když budeme tyto periferii využívat, musí vzít
v úvahu na kterých pinech jsou vyvedeny.
Programování
Pro programování se využívá vývojového prostředí Arduino
založené na projektu Wiring.
Vlastní programovací jazyk je jazyk C/C++ doplněný o množství knihoven, které zajišťují
obsluhu vlastního hardwaru mikrokontroleru.
Proto při programování nemusíme řešit jak to v mikrokontroleru
funguje (řešit taková cizí slova jako registr, port, stack, ...), ale můžeme se
plně věnovat vlastnímu algoritmu (tedy řešení úlohy). Toto je dle mého názoru
to, co zajistilo obrovské rozšíření Arduina a umožnilo, tak proniknout "laikům"
do světa mikrokontrolerů.