Nedavno (asi pred pul rokem ) jsem objevil projekt Arduino. Je to programovaci jazyk (podobny C), vyvojove prostredi a zkusebni deska. Procesor se pouziva od Atmelu, konkretne je to rada ATmega. Jak uvadi reklama na Google – "postavte si cokoli od blikajici led po robota". Jestlize chcete vice teorie, podivejte se na root.cz, kde vysel o Arduinu zajimavy clanek.
Prvni a nejjednodusi moznosti, jak zacit, je koupit si hotovou vyvojovou desku. Je jich hned nekolik. Nejnovejsi je Duemilanove z roku 2009. Velkou vyhodou je vestaveny FTDI prevodnik (RS-232 z Atmelu to prevede na USB). Zajimava je i moznost stahnout si soubory pro Eagle a vyrobit si desku doma. Pro domaci vyrobu bude ovsem moudrejsi pouzit jednostrannou desku bez SMD soucastek. Pro zajemce mohu doporucit cesky obchod arduino.cz cena je necelych 800Kc.
Koupe desky je zajimava moznost, nicmene mne se zda zbytecna. Po pohledu na schema je jasne videt, ze stacit dodrzet minimum veci:
- 16MHz krystal
- pro komunikaci s PC bud pouzit FTDI prevodnik (bohuzel je jenom SMD), nebo MAX-232; v pripade potreby USB neco podobneho (obsahuje taky FTDI prevodnik)
- musi se dodrzet vstupni vystupni piny (viz ATmega8-Arduino-Pin-Mapping)
- musi byt stejny procesor (nebo kompatibilni)
- tlacitko RESET (zmackne se pred nahravanim programu z PC)
A to je vsechno!
Vyhoda kupovane desky je ta, ze uz ma nahrany bootloader – ten umoznuje nahravani programu do Atmela pres seriovy port. Pri domaci vyrobe si budete muset nahrat bootloader samy. Ja pouzivam svuj oblibeny procesor ATmega8 – sice ma 8KB flash, ale asi 1kB zabere bootloader. V pripade potreby vice mista pro program je mozne pouzit jiny procesor, napr. ATmega168 s 16KB flash.
Nejdriv ze vseho zacnete stazenim vyvojoveho prostredi. To je dostupne pro Windows, Mac OS X a Linux a dokonce se nemusi instalovat.
Pro nahrani bootloaderu do procesoru pouzijte nejaky profi programator, nebo STK-200. Posledni moznost je pouzit primo software Arduino:
Nahrani pres Arduino se provadi take po paralelnim portu – tady je originalni schema (dapa). Z obrazku ale neni jasne, o jaky typ programatoru se jedna (prehled nekolika programatoru). Tato informace se da najit v Arduino softwaru – soubor programmers.txt v adresari s programem arduino/hardware/programmers.txt.
Tato metoda me bohuzel nefungovala. Asi jsem spatne zapojil dapa programator . Proto jsem pouzil svuj oblibeny STK-200. Jeste je potreba nastavit pojistky.
Nahrani zavadece do Atmelu
Zavadec je dodavan spolu s arduinem. Naleznete ho ve slozce s rozbalenym arduinem – arduino/hardware/arduino/bootloaders/atmega8. Je to ten soubor ATmegaBOOT.hex. jestlize na to mate cas, znalosti a naladu, muzete si ho sami upravit a zkomilovat; na to jsou zbyvajici dva soubory ATmegaBOOT.c a Makefile.
Pro nahrani programu do Atmelu pouzivam program uisp. Pravdepodobne bude ve zdrojich balicku vasi distribuce (treba v ubuntu). Postup je jednoduchy. Nejdriv prejdete do adresare se souborem ATmegaBOOT.hex. Potom je vhodne nacist modul pro paralelni port a nastavit mu prava:
1 |
<em> sudo modprobe parport sudo chmod 777 /dev/parport0</em> |
pak nasleduje nastaveni pojistek:
1 |
<em> /usr/bin/uisp -dpart=ATmega8 -dprog=stk200 -dserial=/dev/parport0 --wr_fuse_l=0xdf --wr_fuse_h=0xca</em> |
a nakonec nahrani samotneho zavadec (do flash):
1 |
<em> /usr/bin/uisp -dpart=ATmega8 -dprog=stk200 -dserial=/dev/parport0 --erase --upload if=ATmegaBOOT.hex -v</em> |
pro informaci o pouzitych parametrech uisp doporucuji procist man uisp
Na Windows by to melo jit podobne. Misto /dev/parport0 se musi nastavit -dlpt=0x378 – netestoval jsem . Dalsi drobny problem bude s uisp pod windows. Na domovskych strankach maji pouze zdrojaky a navod na kompilaci. Takze nezbyva, nez si uisp zkompilovat, nebo nekde sehnat jiz hotovy exe soubor.
Pro nahravani by melo jit take pouzit avrdude – netestoval jsem.
Po nahrani zavadece zbyde v ATmega8 jeste 7168 bajtu:
Po nahrani bootloaderu se uz program do procesoru nahrava pres seriovy port. Bootloader ceka vzdy nekolik vterin po startu (privedeno napajeni) nebo resetu (pin 1 proti zemi) na novy program. Pokud v teto dobe od PC pres RS-232 nic neobdrzi, spusti program z vnitrni flash pameti.
Pri praci je nutne dodrzet toto mapovani pinu:
napriklad digitalni I/O pin PD7 je pres vyvojove prostredi dostupny jako digital pin 7. Digital pin 13 pouziva zavadec pro informaci o sve cinnosti (na originalni desce je tam LED) – je mozne ho normalne v programu pouzivat.
A takhle vypada propojeni Arduino a pocitace (RS-232 slouzi pro nahravani programu):
V Arduino je to potreba taky nastavit (pouzitou desku a seriovy port – na Windows COM1…):
V pistim dile ukazu, jak rozblikat LEDku . Ty hodne nedockave odkazuji na Arduino Learning. Je tam k dispozici velke mnozstvi navodu od blikani ledky, az po vypsani "Hello, world!" na LCD display. Dalsi potrebna vec je reference jazka.
Dalsi clanky o AVR.