Hardware | Programování | IoT

Pojďme programovat elektroniku: Nakupuji cetky v Číně a sleduji stropní zářivky v Arduino IDE

  • Chytré součástky i celé počítače jsou levné
  • Arduino pořídíte za pár desetikorun
  • Dnes si vyzkoušíme jeho vývojové prostředí

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.

678197148
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.

312952059
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.

331658396
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.

748418977
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.

395871657 818045242 271032386 47093420
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.

746785726
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.

960013212 943779615
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.

503799309
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.

850510903 908938812
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.

641558676 357880826
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.

892311799 668469502
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í.

529424159 768078164
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é.

Diskuze (47) Další článek: Nad superinteligencemi by měl mít kontrolu celý svět, tvrdí expert z Googlu na umělou inteligenci

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,