Měření vlhkosti a teploty betonu s Arduino: Kompletní návod

V tomto komplexním návodu se podíváme na různé typy senzorů vlhkosti a teploty, které lze použít s platformou Arduino. Zaměříme se na jejich zapojení, programování a praktické využití, zejména s ohledem na měření vlhkosti betonu, ale i v dalších aplikacích jako jsou chytré domácnosti nebo meteostanice.

Teploměr a vlhkoměr AM2120

Teploměr a vlhkoměr AM2120 je vstupní modul pro Arduino, který obsahuje senzor AM2120 od firmy Aosong. Tento senzor dokáže měřit teplotu a vlhkost ve svém okolí a je jak tvarem, tak i vlastnostmi velmi podobný oblíbeným modulům DHT11 a DHT22.

Technické parametry AM2120

  • Rozsah měření teploty: -40 až +80 °C s přesností ±0,5 °C.
  • Rozsah měření vlhkosti: 0-99,9 % relativní vlhkosti (RH) s přesností ±3 %.
  • Napájení: 3,3-5,5 V.

Zapojení AM2120 s Arduino

Pro úspěšné propojení senzoru AM2120 a Arduino desky stačí zapojit celkem 3 vodiče:

  • Propojte VCC s 5V Arduina.
  • Propojte DATA s pinem D5.
  • Propojte GND se zemí Arduina.

Ukázkový kód a jeho vysvětlení pro AM2120

Pro úspěšné nahrání ukázkového kódu je nutné stáhnout a naimportovat knihovnu DHT. Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny společně s nastavením čísla propojovacího pinu. S touto informací následně vytvoříme objekt modulu z knihovny, u kterého zadáváme dva parametry: propojovací pin a typ senzoru (použijeme typ DHT22, který má stejnou komunikaci jako AM2120).

V podprogramu setup zahájíme komunikaci po sériové lince a poté zahájíme komunikaci se senzorem.

Čtěte také: Tipy pro výběr vlhkoměru na dřevo

V prvním kroku nekonečné smyčky loop načteme postupně teplotu a vlhkost do vytvořených lokálních proměnných. V dalším kroku provedeme kontrolu obou údajů pomocí funkce isnan(), která kontroluje, jestli jsou obě proměnné čísla (isnan znamená „is not a number“ - „není to číslo“). Pokud se jedna nebo obě proměnné dostanou do stavu NaN (Not a Number - „není číslo“), vytiskneme chybovou hlášku po sériové lince. Pokud ale kontrolou projdeme, vytiskneme následně oba získané údaje na sériovou linku.

AM2120 je další senzor ze série oblíbených senzorů DHT/AM. Dokáže měřit teplotu a vlhkost v běžně využívaném rozsahu a s použitelnou přesností pro domácí měření. Velkou výhodou je pak velmi příznivá cena, která se pohybuje právě mezi senzory DHT11 a DHT22, které komunikují po jednom vodiči jako AM2120. Senzor tedy můžeme použít v projektech, jako je domácí meteostanice, řízení vytápění či další využití v chytrých domácnostech.

Teploměr a vlhkoměr DHT22 a DHT11

Čidla teploty a vlhkosti DHT22 a DHT11 jsou velmi populární a pro jejich plné využití v projektech s Arduinem máme podrobný návod. Senzor dosáhl své popularity nejen díky skvělým výkonům v oblasti měření, ale také díky velice jednoduchému zapojení.

Zapojení DHT22

Začneme tím nejzákladnějším, zapojíme senzor DHT22 podle schématu. Proč je tam rezistor, když to funguje i bez něj? Je to kvůli sběrnici. Rezistor v tomto případě je tzv. „pull-up rezistor“ a slouží k tomu, aby vodič sběrnice táhl napěťově nahoru, k logické jedničce (měkké jedničce). V praxi to znamená, že zabráníme rušení, tudíž může být vodič delší. A proč právě 10 kΩ? Je to „zlatá střední cesta“. Pokud by však byl vodič mnohem delší, musíme hodnotu pull-up rezistoru snížit.

Programování DHT senzorů

Tento program má jednoduchý úkol - zjistit naměřené hodnoty a vypsat je na sériové lince. Nezapomeňte importovat knihovny! Jedná se o knihovnu DHT a "neviditelnou" knihovnu "Adafruit_Sensor-master", která je nezbytná pro chod. Knihovny jsou ke stažení na konci návodu.

Čtěte také: Princip a využití vlhkoměrů a teploměrů

Co vlastně to „nan“ znamená? Znamená to, že veličina nebyla naměřená / zpracovaná. V každém případě se jedná o chybu měření. To, že se nám veličina z nějakého důvodu nenaměří, neopravíme, ale zařídíme, aby se například tato chyba nezapsala na SD kartu nebo se neposlala dál ke zpracování. Proč vlastně vzniká chyba? V datasheetu čidla DHT22 se dočtete: „Sampling rate = 0.5 Hz“, což je jediná nevýhoda tohoto senzoru. V překladu to znamená, že můžete dostat nová data pouze jednou za 2 sekundy (proto je delay 2000).

Mezi zajímavé Arduino projekty, kde se dá využít senzor DHT, patří například motorizovaný kulový ventil. V tomto návodu jsme si ukázali, jak používat senzory DHT, jejich zapojení, programování a jednoduché příklady.

Teploměr a vlhkoměr DHT12

Teploměr a vlhkoměr DHT12 je vstupní modul pro Arduino, který obsahuje novější senzor DHT12. Tento modul je nástupcem oblíbeného modulu DHT11. Tato novější verze komunikuje po sběrnici I2C a díky jejím vlastnostem ji můžeme zařadit někde mezi senzory DHT11 a DHT22.

Technické parametry DHT12

  • Rozsah měření teploty: -20 až +60 °C s přesností ±0,5°C.
  • Rozsah měření vlhkosti: 20-95 % RH (relativní vlhkost) s přesností ±5 % RH.

Zapojení DHT12 s Arduino

Pro úspěšné propojení modulu DHT12 a Arduino desky stačí zapojit celkem 4 vodiče:

  • Propojte „+“ s 5V Arduina.
  • Propojte SDA s pinem A4.
  • Propojte „-“ se zemí Arduina.
  • Propojte SCL s pinem A5.

Ukázkový kód a jeho vysvětlení pro DHT12

Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu DHT. Ukázkový kód obsahuje na svém začátku připojení potřebných knihoven a inicializaci modulu z knihovny.

Čtěte také: Měření vlhkosti s Brennenstuhl

V podprogramu setup provedeme v prvním kroku zahájení komunikace po sériové lince a následně načteme stav připojeného senzoru do proměnné. Tento stav v dalším kroku zkontrolujeme, jestli je vše v pořádku. Pokud ano, vypíšeme informaci po sériové lince a pokračujeme dále. Pokud se objeví nějaká chyba, vypíšeme o ní detaily po sériové lince.

Nekonečná smyčka loop začíná vyčtením všech údajů ze senzoru. Tyto údaje můžeme poté načíst do samostatných proměnných, kdy údaje o teplotě a vlhkosti je ještě nutné podělit 10, abychom získali správné hodnoty.

DHT12 je zajímavý vstupní modul pro Arduino. Je to nástupce starší generace DHT11 a DHT22, kdy ho díky jeho parametrům můžeme zařadit mezi dva zmíněné. Hodí se do všech projektů, kde potřebujeme měřit teplotu a vlhkost s rozumnou přesností, jako například domácí meteostanice, bezdrátová čidla a podobně.

Půdní vlhkoměry (rezistivní a kapacitní)

Půdní vlhkoměry jsou vstupní moduly pro Arduino, které umožňují detekovat vlhkost půdy a substrátů. Jsou vhodné pro vytváření chytrých květináčů a truhlíků s automatickou zálivkou.

Půdní rezistivní vlhkoměr

Sada se skládá z měřící sondy a zesilovače signálu. Výstupem měřícího zesilovače je jak analogový výstup, tak digitální signál, u kterého můžeme nastavit detekční práh pomocí trimru na modulu. Záleží tedy pak na nás, jestli chceme provádět sami detekci hodnoty analogového výstupu nebo číst pouze logickou hodnotu 0 a 1.

Zapojení rezistivního půdního vlhkoměru s Arduino

Pro úspěšné propojení modulu vlhkoměru a Arduino desky je nutné zapojit celkem 4 vodiče:

  • Propojte VCC s pinem D4 (napájecí pin VCC jsme připojili na datový pin Arduina, abychom mohli programově zapínat napětí pro modul).
  • Propojte GND se zemí Arduina.
  • Propojte D0 s pinem D3.
  • Propojte A0 s pinem A0.

Pro piny VCC a D0 pak můžeme zvolit i jiné digitální piny, podobně jako pro A0 zvolit jiný analogový pin.

Ukázkový kód a jeho vysvětlení pro rezistivní půdní vlhkoměr

Ukázkový kód obsahuje na svém začátku nastavení čísel propojovacích pinů společně s vytvořením proměnné, do které budeme ukládat čas poslední kontroly. V podprogramu setup nejprve zahájíme komunikaci po sériové lince. V dalším kroku nastavíme směry všech propojovacích pinů a vypneme napájecí napětí pro modul vlhkoměru.

Nekonečná smyčka loop obsahuje důležitou if podmínku, která kontroluje rozdíl aktuálního času a poslední kontroly. Pokud je tento rozdíl větší než tři sekundy, provedeme samotné měření (v praxi použijeme například desetiminutový interval, tzn. 600 000 ms). Na začátku měření zapneme napájecí napětí pro měřící modul a vyčkáme 100 ms pro ustálení napětí. Následně načteme do proměnných analogovou a digitální hodnotu. Pro ukázku nyní můžeme vypsat hodnotu analogového vstupu po sériové lince a provést kontrolu digitálního vstupu. Pokud je tedy tento vstup aktivní, vypíšeme si o tom informaci po sériové lince. Zde bychom také mohli přidat kontrolu překročení určité hodnoty, při které se například sepne čerpadlo (if (analog > 100) {..}). Po kontrole digitálního vstupu pak pro správné formátování textu vytiskneme nový řádek, vypneme napětí pro modul vlhkoměru a uložíme do časové proměnné aktuální čas.

Půdní vlhkoměr je jednoduše použitelný vstupní modul pro Arduino. Pokud se pak dostane vlhkost pod námi nastavenou hranici, můžeme to vlhkoměrem detekovat a spustit například automatickou zálivku nebo informovat uživatele, aby zalití provedl sám. Jak jste si mohli všimnout v programu, ovládáme u modulu nejen načítání dat, ale také zapínáme a vypínáme napětí pro jeho napájení. Toto chování je zvoleno pro dosažení co největší životnosti měřící sondy. Pokud bychom totiž nechali sondu běžet stále, velmi rychle by začala degradovat díky probíhající elektrolýze mezi jejími elektrodami. Řešením je provádět měření jednou za čas, přičemž tím i ušetříme elektrickou energii.

Půdní kapacitní vlhkoměr

Půdní kapacitní vlhkoměr je pokročilejší variantou již déle prodávaného vlhkoměru s rezistivní sondou. Ta měla totiž problémy s výdrží, protože na sondě byla odhalená měď. Tento problém ale řeší právě tato kapacitní sonda, která nejen pracuje na jiném principu, ale také je její měřící část plně zakryta izolačním lakem. Veškerá elektronika a samotná měřící část se nachází na jedné desce plošných spojů. A tato deska je také z většiny pokryta antikorozním lakem, který by ji měl ochránit před degradací. Výstupní informací je pak proměnný analogový výstup.

Zapojení kapacitního půdního vlhkoměru s Arduino

Pro úspěšné propojení modulu vlhkoměru a Arduino desky je nutné zapojit celkem 3 vodiče:

  • Propojte GND se zemí Arduina.
  • Propojte VCC s 5V Arduina.
  • Propojte AOUT s pinem A0.

Pro pin AOUT pak můžeme zvolit jiný analogový pin.

Ukázkový kód a jeho vysvětlení pro kapacitní půdní vlhkoměr

Ukázkový kód obsahuje na svém začátku nastavení čísla propojovacího pinu a vytvoření proměnné pro ukládání naměřených hodnot. V podprogramu setup pak zahájíme komunikaci po sériové lince, abychom mohli odesílat údaje do počítače.

Na začátku nekonečné smyčky vždy načteme data ze senzoru do proměnné a poté vytiskneme vše po sériové lince. Následně je uvedena v programu ukázka detekce zvolené hranice, kdy jsem pro ukázku vytvořil if podmínku, která je aktivována při hodnotě větší než 500. V tomto případě se vytiskne ještě informace o překročení hranice po sériové lince. Já jsem v tomto návodu použil jednoduchý postup pro měření, při kterém je modul stále napájen, ale pro reálné použití doporučuji postupovat podobně, jako v tomto starším návodu s rezistivním vlhkoměrem, kde se napájení spíná.

Srovnávací tabulka vlhkoměrů a teploměrů pro Arduino

Typ senzoru Měřená veličina Rozsah Přesnost Komunikace Počet vodičů Poznámky
AM2120 Teplota, Vlhkost T: -40 až +80 °C, V: 0-99,9 % RH T: ±0,5 °C, V: ±3 % RH 1-Wire (podobně jako DHT22) 3 Vhodný pro domácí meteostanice, řízení vytápění
DHT22 Teplota, Vlhkost T: -40 až +80 °C, V: 0-99,9 % RH T: ±0,5 °C, V: ±2-5 % RH 1-Wire 3-4 (s pull-up rezistorem) Nutný pull-up rezistor pro stabilitu sběrnice. Omezená rychlost samplování (jednou za 2s).
DHT11 Teplota, Vlhkost T: 0 až +50 °C, V: 20-90 % RH T: ±2 °C, V: ±5 % RH 1-Wire 3-4 (s pull-up rezistorem) Základní senzor, méně přesný než DHT22.
DHT12 Teplota, Vlhkost T: -20 až +60 °C, V: 20-95 % RH T: ±0,5 °C, V: ±5 % RH I2C 4 Nástupce DHT11, komunikace po I2C. Vhodný pro bezdrátová čidla.
Půdní rezistivní vlhkoměr Vlhkost půdy (mění se v závislosti na vlhkosti) (relativní) Analogový a digitální výstup 4 Sonda citlivá na elektrolýzu, doporučeno spínání napájení pro prodloužení životnosti.
Půdní kapacitní vlhkoměr Vlhkost půdy (mění se v závislosti na vlhkosti) (relativní) Analogový výstup 3 Antikorozní ochrana, delší životnost sondy, doporučeno spínání napájení pro reálné použití.

Jay a Jamie, žijící v Texasu, kde dochází k velkým výkyvům vzdušné vlhkosti a teploty, se rozhodli postavit si vlastní vlhkoměr a teploměr do dílny, aby ochránili své truhlářské projekty. Kutilská dvojice navrhla krásnou skříňku z ořechového dřeva s vestavěným displejem zobrazujícím aktuální teplotu. To je jen jeden z mnoha příkladů, jak lze tyto senzory využít v praktických projektech.

tags: #arduino #vlhkomer #beton #návod

Oblíbené příspěvky: