Před dvěma měsíci jsem si dal smělý cíl: Postavím si meteostanici, která bude ukládat údaje o teplotě, atmosférickém tlaku a dalších veličinách kamsi na internet, bude kreslit grafy, provádět analýzy a já o tom napíšu sérii článků pro naprosté zelenáče, jejichž znalost zapojování obvodů začíná u výměny žárovky a končí u zapojení SSD disku v notebooku.
V prvním článku jsme si popsali základní principy sbírání dat z jednoduchých analogových senzorů a v pokračování jsme se podívali, co dělat s naměřenými daty na internetu, jak je automatizovaně proměnit v grafy třeba pomocí Google Apps Scriptu a tak dále.
Cílem našeho seriálu bude meteostanice s dálkovou venkovní sondou, která bude zasílat údaje do domácí centrály. Bude se tedy jednat o dva komunikující mikropočítače. Zatím jsme ale teprve na začátku.
Dnes se ve stručnosti podíváme na samotné vývojové prostředí Arduino IDE, poněvadž právě tento mikropočítač bude používat i moje meteostanice. Tedy abych byl přesnější, klon Arduina ve verzi Pro Mini využije venkovní sonda, která bude z blízkého parku zasílat údaje o počasí do mého bytu v pátém patře.
Arduino a cetky z Asie
Každý začátečník, který si chce vyrobit nějaký ten obvod, si samozřejmě položí otázku, co si má vlastně koupit za mikropočítač, který bude vše řídit. Stavebnice Arduino zdaleka není jediná, ale má tu výhodu, že se díky své popularitě stala určitým standardem, takže i mnohé jiné prototypovací mikropočítače nabízejí stejný způsob programování a určitou míru kompatibility. A vzhledem k tomu, že je Arduino otevřená platforma, e-shopy pro bastlíře a eBay jsou plné všemožných čínských klonů doslova za pár desetikorun.
Prototypovací mikropočítač Arduino Uno
Stavebnice Arduino dnes cílí na celé spektrum potřeb od velkého Arduina Mega, po maličké Arduino Gemma, nicméně tradičním modelem pro vstup do tohoto světa je Arduino Uno a to hlavně z toho důvodu, že je deska počítače zpravidla připravená pro okamžité použití, má všechna potřebná rozhraní pro experimentování a skvělou komunitní dokumentaci. To v praxi znamená, že vyjma USB kabelu nepotřebujete nic dalšího, abyste do počítače nahráli svůj program.
U menších variant Arduina zpravidla USB konektor na mikropočítači chybí, protože se předpokládá napájení spíše z baterie a logika USB jednoduše zavazí. Pokud si to začátečník neuvědomí, bude muset dokoupit převodník, který přepojí USB na šest vodičů sériové linky, které se již zapojí na desku mikropočítače na patřičné piny.
Arduino Pro Mini je většinou dodávané v surovém stavu. Bez pájky to už bude složité.
Leckterý začátečník si možná řekne, že toto se jej určitě nebude nikdy týkat, ale cena mikropočítačů na eBay a dalších tržištích je natolik nízká (a to i při objednávkách po jednom kusu), že se brzy přistihnete u toho, že nakupujete mnohé součástky jen tak – do sbírky. Třeba se budou hodit. Při politice často bezplatného zaslání z Asie až k vám domů a při placení skrze bezpečný PayPal je to opravdu snadné a návykové. Jediné, co si tedy u jednotlivých objednávek ze zemí mimo EU musíte hlídat, je hranice 22 eur. Pokud ji překročíte, celní poplatek a DPH může zásilku nepříjemně prodražit.
Podobným cenám se těžko vzdoruje, jen si budete muset počkat
Kdesi v Číně nyní plní kontejner, který přiveze hned několik klonů Arduina a dalších desek i mně, to mi však nebrání v tom, abych si jej vyzkoušel už dnes. Jak už jsem totiž napsal výše, výrobci ostatních prototypovacích počítačů se často snaží o kompatibilitu vývoje a mnohdy i hardwarového návrhu.
Týká se to i mých dvou počítačů, které jsem představil v prvním dílu. Zatímco výkonný Intel Edison (dvoujádrový Atom) byl osazený na desce kompatibilní s Arduino Uno, maličký mikropočítač s Wi-Fi Photon se zase programoval totožným jazykem. Díky tomu může začátečník využít ohromné komunitní dokumentace na internetu, kde již vaši předchůdci dávno řešili (a zpravidla vyřešili) všechny klasické problémy. Chcete rozblikat diodu? Chcete změřit teplotu? Chcete napájet Arduino pomoci fotovoltaického článku za pár dolarů? Stačí ta tři slova napsat do Googlu.
Cetky z Asie: Primitivní jednosměrný 433MHz vysílač/přijímač a zdroj energie pro nepájivé pole s regulovaným výstupem 3,3 V a 5 V. Vlastně tyto součástky přímo nepotřebuji, ale pokud stojí doslova pár korun, proč je také nepřikoupit? Takto musí přemýšlet každý začínající bastlíř, jinak mu nakonec bude vždy něco chybět, poněvadž každý projekt se v čase vyvíjí a nároky rostou.
Jelikož na své Arduino Uno stále čekám, pro demonstraci jeho vývojového prostředí použiji další prototypovací a s Arduinem (téměř) kompatibilní mikropočítač od Intelu – Galileo druhé generace s exotickým 32bitovým procesorem Quark, jehož výkon i paměťové prostředky dalece převyšují moje potřeby.
Intel Galileo poslouží jako náhrada za Arduino, je s ním totiž kompatibilní
První program v Arduino IDE
Zprovoznění Arduina se všemi potřebnými porty je jednoduché. Stačí nainstalovat USB ovladač pro sériovou komunikaci a konečně i Arduino IDE, v jehož nastavení už poté stačí jen zvolit COM port, na kterém je mikropočítač skrze USB připojený k PC, a také jeho model.
USB ovladač nainstalovaný, Galileo identifikované na COM4 a konečně jednoduché vývojové prostředí Arduino IDE, které ještě nastavím pro danou prototypovací desku
Tím by měla pro začátečníka veškerá konfigurace skončit a může začít psát svůj první program – tzv. sketch, který poté klepnutím na jedno tlačítko přeloží a nahraje do mikropočítače, který jej okamžitě začne zpracovávat.
Programovací jazyk Arduina vychází z jazyka Wiring pro mikrokontrolery a má stejný zápis jako C/C++. Oproti ostatním se liší i strukturou programu. Ten má dvě klíčové funkce: setup a loop, které dohromady suplují obvyklou hlavní proceduru main, a zpracují se po startu programu.
Prostředí Arduino IDE a jednoduchý kód
Zatímco setup slouží především k základní konfiguraci programu, nastavení vstupů a výstupů, loop představuje smyčku, která se bude opakovat stále dokola.
Když tedy do smyčky loop napíšu Serial.println(“Ahoj”), Arduino bude tento text posílat stále dokola do připojeného počítače skrze sériovou linku, která je dostupná buď přímo v Arduino IDE, anebo lze použít jakýkoliv jiný klient pro COM (třeba Putty aj.).
Smyčku můžeme zpomalit příkazem delay(čas v ms), který zpracovávání pozastaví na určitý čas. Pokud bychom tedy napsali:
Serial.println(“Ahoj”);
delay(2000);
program pošle do počítače zprávu s řádkem „Ahoj“ jen každé dvě sekundy.
Program je už přeložený a nahraný do mikropočítače a skrze sériovou linku posílá do portu COM4 každé dvě sekundy pozdrav
Pro delší časové prodlevy (třeba odečet teploty ze senzoru jen jednou za pár minut) se pak používají speciální knihovny, které se postarají o to, aby se po dobu prodlevy na mikropočítači vypnula hromada logických obvodů až na časovač, takže Arduino, přestože na to není zcela navržené, v době spánku spotřebuje naprosté minimum energie, a o jeho chod se tak může postarat třeba i na dlouhé měsíce baterie.
Plotr tedy osciloskop
Arduino IDE disponuje ještě jednou výbornou funkcí – plotrem. Ten se hodí pro případy, kdy potřebujete pro testovací účely zobrazit numerické hodnoty. Dejme tomu, že k mikropočítači připojíte LDR – fotorezistor. O něm jsme si v první části také povídali, takže jen zopakuji, že se jedná o drobnou součástku citlivou na osvětlení, čili se v obvodu sníží, nebo naopak zvýší elektrické napětí, které pak mikropočítač převede na celé číslo.
Galileo a náš obvod s fotorezistorem a podobné logické schéma zapojení
Pokud do Arduina pošlu primitivní program níže, mikropočítač každých 10 ms přečte hodnotu z analogového pinu, na který je připojený fotorezistor a číslo bez dalších řečí pošle sériovou linkou do počítače. V sériovém monitoru bych se v tom ale při této rychlosti příliš nevyznal. Viděl bych jen smršť čísel.
// Fotorezistor je připojený na analogový pin A0
int pin = 0;
void setup()
{
// Nastav komunikaci na sériové lince
Serial.begin(9600);
}
void loop()
{
// Napiš do sériové linky hodnotu z A/D převodníku pro pin A0
Serial.println(analogRead(pin));
// Počkej 10 ms a vše opakuj
delay(10);
}
Proto je tu i plotr, který rozpozná, že z mikropočítače posílám jen číselné hodnoty a zobrazí je na časové ose. V podstatě tedy bude fungovat jako jednoduchý osciloskop.
Textový výpis a funkce plotru, pokud do sériové linky posílám číselné údaje. Všimněte si, jak intenzita osciluje, což je dáno osvětlením v místnosti – zářivkovými kancelářskými světly
Data o osvětlení jsou pro plotr naprosto ideální, fotorezistor totiž reaguje na sebemenší změnu prakticky okamžitě, a pokud na něj posvítíte běžnou kancelářskou zářivkou, vykreslí se krásná sinusoida, protože fotorezistor zachytí i její poblikávání.
A takto vypadá plotr, pokud fotorezistor ozařují stropní zářivky (nízké oscilující hodnoty), načež zapnu stolní lampu (taktéž zářivka). V plotru je patrné problesknutí zářivky.
Tak a zářivkou dnes skončíme. Já do příštího pokračování rozbalím všechny obálky z Číny a konečně si vyzkoušíme jak provoz mikropočítače na baterii, tak bezdrátovou komunikaci mezi sondou a centrálou. Možná vás překvapí, jak to bude jednoduché.