S Arduinem si hraju už asi dva roky. Původně jsem měl v plánu začít psát rovnou konkrétní návody, ale kamarád mě poprosil, abych mu napsal tipy, s čím má začít při budování vlastní automatické domácnosti.

Základní vybavení

Software

Každý projekt je třeba nejprve naprogramovat a nahrát do zařízení. K tomu vám nejlépe poslouží jakýkoliv klasický počítač vybavený USB portem, pomocí kterého připojíme mikropočítač k počítači. K programování pak doporučuji Arduino IDE (s webovou verzí nemám zkušenosti, používám desktopovou verzi). Samotné programování mikropočítače bude pomocí jazyku Wiring, který vychází z C++.

Mikropočítač

Základním vybavením každého arduinovského projektu je mirkopočítač, který to bude vše řídit a do kterého nahrajeme program. Na první pokusy doporučuji použít Arduino Uno R3, se kterým se naučíte základy programování, ovládání různých diod a dalších prvků. K počítači se připojuje pomocí USB kabelu, Arduino obsahuje USB port typ B, pokud jej nemáte třeba od tiskárny, tak doporučuji jej objednat včetně kabelu.

Arduino Uno R3 Arduino v obalu Arduino Uno R3 pinout

Arduino Uno R3 je bohužel příliš velké, chybí mu potřebná konektivita (existují různé ethernet shieldy a moduly pro komunikaci po bezdrátové síti od 433 MHz až po WiFi, ale to jen zvyšuje cenu Arduina) a v porovnání s tím, co umí, je jeho cena poměrně vysoká. Dřív nebo později vás přestane bavit a vy se vrhnete do poznávání dalších mikropočítačů.

Já postupně zakotvil u třech mikropočítačů založených na čipu ESP8266. Jsou jimi (od největšího) NodeMCU V3, WeMos D1 mini (pro) a ESP01. Součástí čipu ESP8266 již je WiFi, takže se všechny tyto moduly hodí k programování „internetu věcí“. Všechny tyto mikropočítače lze programovat v Arduino IDE pomocí jazyka Wiring.

Do všech zmíněných mikropočítačů je možné nahrát jednoduchý webserver, díky kterému se značně rozšiřuje možnost jejich použití. Čip ESP8266 zvládá i HTTPS. Můžete jim tak přidělit webovou adresu a ovládat je přes internet odkudkoliv.

NodeMCU

Název NodeMCU původně odkazoval na použitý firmware, ale vžil se nakonec pro celé zařízení. Použitý čip ESP8266 obsahuje (stejně jako všechna ostatní zařízení založená na tomto čipu) 32bitový procesor s instrukční sadou RICS, 160 kB RAM a WiFi standardu 802.11 b/g/n. NodeMCU pak navíc obsahuje 4 MB uživatelskou paměť a 30 pinů (z nich je 13 digitálních a 1 analogový).

NodeMCU NodeMCU zespodu NodeMCU pinout (zdroj: IoT Bytes)

NodeMCU je poměrně velké zařízení (49 × 24,5 mm), využíval jsem ho proto jen ve větších projektech, kde je možné využít větší množství pinů, jinak jsem kvůli velikosti volil menší mikropočítač.

WeMos D1 mini (pro)

Kompaktní modul o rozměru 34,2 × 25,6 mm a váze 3 gramy („pro“ je ještě o půl gramu lehčí). Obsahuje 11 digitálních I/O pinů a jeden pin analogový.

Používám dvě jeho verze: WeMos D1 miniWeMos D1 mini pro, které jsou shodné rozměrově, počtem i provedením pinů i použitým ESP8266EX čipem. Liší se pouze tím, že verze „pro“ má externí anténu a větší vestavěnou flash paměť (16 MB oproti 4MB).

WeMos D1 mini a mini pro včetně externí antény Rozšiřující shieldy pro WeMos D1 mini (pro): relé shild a protoboard shield Vlastní design WeMos D1 mini shieldu Wemos D1 mini pro pinout (zdroj: laskarduino)

Velkou výhodou WeMosu jsou shieldy, tedy rozšiřující moduly, kterých je dostupných velké množství. Shieldy mají shodné rozměry i piny s WeMosem, jde je tak zapojit nad sebe a vrstvit je. Pokud se nechcete starat o hardware, objednáte si ke svému WeMosu vybrané shieldy, do mirkopočítače nahrajete program a je hotovo.

Existuje třeba shield s OLED displejem, relé shiled, který umožní ovládat 230V zařízení jako je třeba lampa, shield pro baterii a v neposlední řadě protoboard shiled, díky kterému si můžete vytvořit zcela vlastní shiled. Já se pustil cestou, kdy si navrhuji vlastní design shieldů (o tom bude jeden z příštích článků). To je také vlastnost, na základě které jsem se pro WeMos rozhodl jako pro základ pro svou meteostanici.

ESP01

Nejmenší z čipů založených na ESP8266 (rozměr 14,3 × 24,8 mm). ESP01 není větší než poštovní známka, obsahuje jen 8 pinů a seženete ho do 2 dolarů. Je tak malý, že se na něj nevešlo USB, takže si pro jeho programování budete muset koupit převodník, do kterého ho zasunete.

Neobsahuje žádné analogové ani I2C piny (více informací níže), digitální piny obsahuje 3. ESP01 je vhodný pro ovládání nějakého digitálního modulu v zařízení, které potřebujete mít co nejmenší.

Já jsem ho dlouhou dobu používal ve spojitosti s DS18B20 (více informací níže) jako domácí miniteploměr, který odesílal teplotu na server.

Nepájivé pole a kabely

Nepájivé pole usnadňuje veškerou hru s eletrotechnikou. Je to vlastně destička plná děr, které jsou v určitém směru propojeny. Do nich pak stačí zapojit mikropočítač a moduly a vzájemně je propojit. Návody pro Arduino jsou vytvářeny včetně zapojení v nepájivém poli, což hru s Arduinem zjednodušuje.

Různé velikosti nepájivého pole Příklad návodu na zapojení pomocí nepájivého pole (zdroj:adafruit.com)

Nepájivé pole se prodává v různých velikostech, doporučuji si jich koupit hned několik, určitě je využijete při testování sensorů. K nepájivému poli je potřeba objednat i nějaké kabely s konektory dupont v různých délkách i kombinacích samec/samice.

Elektrotechnické součástky

Hodit se vám budou také sada nejpoužívanějších rezistorů, sada různobarevných LED diod. V některých projektech využijete i potenciometr, přepínač či tranzistor 2N3904, ale to už rozhodně není povinné vybavení.

Pájka

Dlouhou dobu jsem používal levnou čínskou mikropájku, ale nedávno jsem si pořídil Digitální pájecí stanici Parkside PLSD 48 A1 z Lidlu za 599 Kč a musím ji doporučit každému. Balení obsahuje i pár gramů cínu, po jeho vyplýtvání si kupte cínovou trubičkovou pájku, která v sobě obsahuje již i tavidlo.

Stavíme meteostanici

Postupem času zjistíte, že vlastně nepotřebujete, aby byl mikropočítač vybaven velkým množstvím GPIO pinů, protože se dá sehnat řada senzorů s podporou sběrnice I2C. Na dva vodiče, které sběrnice používá, lze připojit až 128 různých zařízení. Každé zařízení pak má vlastní adresu, díky které probíhá komunikace s mikropočítačem.

V reálném použití je pak množství zařízení, které k I2C připojíte, nižší, protože většina zařízení má z výroby určitou přednastavenou adresu, která je pro stejná pro všechna zařízení daného typu. Někdy pak jde pomocí pájky změnit adresu zařízení na jinou (opět přednastavenou). Je však poměrně těžké najít senzory, jejichž adresy by spolu kolidovaly a při stavby meteostanice vás žádné omezení nečeká, protože každý senzor nepoužijete více než jednou.

Jak Arduino Uno R3, tak NodeMCU V3, tak i WeMos D1 mini (pro) obsahují podporu I2C sběrnice již v základu.

Teploměr (a vlhkoměr)

Teploměrů je na trhu celé množství a liší se jak kvalitou, tak i přesností. Často je teploměr součástí jiného senzoru, třeba barometru, ale jejich kvalita je většinou pochybná. Vyzkoušel jsem mnoho teploměrů a původně jsem dost stavěl na čipech DS18B20, u nichž je výhodou jak nízká cena, tak podpora 1-Wire sběrnice, díky které lze mít na jednom vodiči i několik těchto senzorů. Maximální délka vodiče je pak 100 metrů s 20 zařízeními.

Avšak kvalita jednotlivých teploměrů DS18B20 z Číny byla tragická, dva různé měřily i s několikastupňovou odchylkou, proto jsem je opustil. Vyzkoušel jsem pár dalších teploměrů, četl různé testy. Nakonec jsem se rozhodl pro čipy SHT31, které měří vlhkost i teplotu a mají výbornou přesnost (±2 % vlhkost / ±0,3 °C) za odpovídající cenu, takže je mohu s klidným srdcem doporučit.

Dle testů je kvalitní alternativou také čip HTU21D. Setkat se lze i s čipy SHT71, které jsou velmi přesné, ale také velmi drahé (stojí trojnásobek SHT31). Jako nevhodnou alternativu bych zmínil čipy DHT11 (měří teplotu v rozsahu 0–50 °C s přesností ±1 °C a vlhkost v rozmezí 20–90 % s přesností ±4 %) a DHT22 (měří teplotu v rozsahu -40 – +80 °C s přesností ±0,5 °C a vlhkost v rozmezí 0–100 % s přesností ±2 %), jichž je Aliexpress plný.

Barometr

Barometr potřebuje ke své funkčnosti teploměr, proto jsou vyráběné čipy opatřené teploměrem, avšak ten nedosahuje nijak závratné přesnosti, proto nedoporučuji použít jej pro měření teploty. Je zbytečné šetřit místem na úkor kvality měření. Jako barometr doporučuji sensor BME280.

Ten snímá kromě tlaku a teploty i vlhkost. Jeho rozsah je -40 až +85 °C, u vlhkosti 0 až 100 % a u tlaku 300 až 1100 hPa. Rozlišení měřených veličin je 0,01 °C, 0,008 % u vlhkosti a 0,18 Pa u tlaku. Přesnost je pak ±1 °C, ±3 % a ±1 Pa.

Senzory světla

Pro měření intenzity osvětlení je vhodné kombinovat dva senzory. TSL2561, který měří intenzitu viditelného světla v luxech v rozsahu 0,1 až 40 tisíc luxů.

A k němu sensor VEML6075, který dokáže změřit intenzitu jak UVA, tak UVB záření. Tento senzor doporučuji uzavřít do obalu z křemičitého skla, protože klasické sklo UV záření nepropouští. Já k tomu účelu koupil zkumavku z křemičitého skla od firmy SIOT.

Senzor deště

Je věc, kterou ještě chci vyřešit, protože mi moc nevyhovuje prodávaný dešťový senzor, resp. kvalita jeho výstupů – měří totiž déšť jako vlhkost na destičce. Ta ale přetrvává i po dešti a chvíli trvá, než uschne.

Senzor prachu

Množství prachu v ovzduší dokáže změřit optický senzor GP2Y1014AU0F, který je natolik přesný, že dokáže detekovat i cigaretový kouř.

Senzor plynů

Zatím nemám vyzkoušeno, ale na trhu je několik různých senzorů, které umí měřit různé plyny. Já mám vyhlédnutý MICS-6814, který dokáže měřit CO, NO2, ethanol C2H5OH, H2, NH3, metan CH4, propan C3H8 a iso-butan C4H10.

Pár dalších postřehů