Meranie vlhkosti pôdy pomocou Arduino

V tomto projekte sa zameriame na monitorovanie a meranie vlhkosti pôdy pomocou mikrokontroléra Arduino. Cieľom je vytvoriť automatizovaný systém zavlažovania, ktorý dokáže efektívne riadiť prísun vody k rastlinám na základe aktuálnej úrovne vlhkosti pôdy, čím prispeje k úspore vody v domácich záhradách.

Ilustračná fotografia záhrady s kvapkovým zavlažovacím systémom

Úvod do merania vlhkosti pôdy

Pri budovaní automatizovaného systému zavlažovania je kľúčové správne posúdiť potrebu vody. Záhradné postrekovače či kvapkové systémy sú bežnými metódami, no ich efektívnosť závisí od presného riadenia množstva dodávanej vody. Meraním pôdnej vlhkosti môžeme zabezpečiť, aby rastliny dostávali presne toľko vody, koľko potrebujú, a predísť tak ich premokreniu alebo naopak, vysychaniu.

Výzvy pri meraní vlhkosti

Je dôležité si uvedomiť, že meranie vlhkosti pôdy pomocou jednoduchých senzorov, ktoré pracujú na princípe vodivosti, je skôr indikáciou ako presným meraním. Vodivosť vody sa môže výrazne líšiť v závislosti od obsahu solí, kyselín alebo zásad. Čistá destilovaná voda má nízku vodivosť, zatiaľ čo voda s vyššou koncentráciou rozpustených látok ju má oveľa vyššiu. To znamená, že senzor meria v prvom rade vodivosť pôdneho roztoku, nie priamo množstvo vody.

Navyše, senzory využívajúce jednosmerný (DC) prúd na meranie vodivosti, ako je to často v prípade jednoduchých sond pripojených k Arduinu, nemusia poskytovať presné výsledky. Elektrolýza pôdneho roztoku môže ovplyvniť meranie a viesť k postupnému poškodeniu sondy.

Pre absolútne meranie vlhkosti pôdy by bolo potrebné použiť iné metódy, napríklad váženie zeminy pred a po vysušení. Metóda s použitím analógového čítania (analogRead()) zo sondy v pôde nám v lepšom prípade poskytne len relatívnu informáciu o vlhkosti.

Schéma porovnania vodivosti rôznych typov vody (graficky znázornené)

Funkcia map() v Arduine

Pri práci s analógovými senzormi v Arduine sa často využíva funkcia map(value, fromLow, fromHigh, toLow, toHigh). Táto funkcia slúži na prevod hodnoty z jednej škály na inú. Napríklad, ak analógový vstup Arduina číta hodnoty od 0 do 1023, môžeme túto škálu previesť na inú, napríklad na stupnicu percentuálnej vlhkosti od 0 do 100.

Príklad použitia funkcie map()

Predpokladajme, že pri úplne suchej pôde senzor odčíta hodnotu 130 a pri úplne nasýtenej pôde 650. Pomocou funkcie map() môžeme tieto hodnoty previesť na percentá:

int rawValue = analogRead(A0); // Prečítanie hodnoty zo senzoraint humidityPercentage = map(rawValue, 130, 650, 100, 0); // Prevod na percentá (100% pre nižšiu hodnotu suššej pôdy)

Je dôležité si uvedomiť, že v tomto príklade je škála prevrátená, pretože nižšia hodnota odporu (vyššia vodivosť) signalizuje vyššiu vlhkosť. Preto prevádzame hodnotu 130 (súchejšia pôda) na 100% a hodnotu 650 (vlhkejšia pôda) na 0%.

Senzor pôdnej vlhkosti

Hlavnou komponentou nášho projektu je snímač pôdnej vlhkosti. Tento modul sa zvyčajne skladá z dvoch častí: samotnej senzorovej sondy a riadiacej dosky.

Komponenty senzora

  • Senzorová sonda: Pozostáva z dvoch vodivých plôšok (často potiahnutých niklom alebo iným odolným materiálom), ktoré sa zapichnú do pôdy. Tieto sondy merajú vodivosť pôdneho roztoku medzi nimi.
  • Riadiaca doska: Obsahuje integrovaný obvod, najčastejšie napäťový komparátor (napríklad LM393), ktorý spracováva signál zo sondy. Na doske sa nachádzajú aj ďalšie komponenty ako LED diódy, rezistory a konektory.
Detailný pohľad na senzor pôdnej vlhkosti s vyznačenými komponentami

Princíp fungovania senzora

Senzor funguje na princípe porovnávania napätia. Riadiaca doska obsahuje potenciometer, ktorým je možné nastaviť citlivosť senzora. Jeden vstup napäťového komparátora je pripojený k potenciometru, zatiaľ čo druhý vstup je spojený so sondou cez delič napätia. Vodivosť pôdy ovplyvňuje napätie na sonde.

  • Vysoká vlhkosť: Pôda má vyššiu vodivosť, čo vedie k nižšiemu napätiu na vstupe komparátora. Výstup komparátora je potom NÍZKY, čo zvyčajne signalizuje dostatok vody (LED dióda sa rozsvieti).
  • Nízka vlhkosť: Pôda má nižšiu vodivosť, čo vedie k vyššiemu napätiu na vstupe komparátora. Výstup komparátora je VYSOKÝ, čo signalizuje nedostatok vody (LED dióda zhasne).

Modul často poskytuje aj analógový výstup, ktorý je priamo úmerný vodivosti pôdy a dá sa použiť na presnejšie meranie vlhkosti pomocou Arduina.

Prepojenie senzora pôdnej vlhkosti s Arduino

Prepojenie senzora pôdnej vlhkosti s Arduinom je pomerne jednoduché. Analógový výstup zo senzora sa pripojí na jeden z analógových vstupných pinov Arduina (napríklad A0).

Požadované komponenty

  • Arduino UNO (alebo iný kompatibilný mikrokontrolér)
  • Modul snímača pôdnej vlhkosti
  • 16x2 LCD displej (voliteľné, na zobrazenie hodnôt)
  • 10kΩ Potenciometer (pre LCD displej, ak sa používa)
  • Prepojovacie vodiče
  • Napájací zdroj pre Arduino

Schéma zapojenia

Konštrukcia obvodu je priamočiara:

  1. Pripojte senzorovú sondu k jej riadiacej doske.
  2. Napájajte riadiacu dosku senzora (zvyčajne pomocou 3.3V alebo 5V z Arduina).
  3. Pripojte analógový výstup (AO) zo senzora k analógovému vstupu Arduina (napríklad A0).
  4. Ak používate LCD displej, pripojte jeho dátové piny (napríklad D4-D7) k digitálnym pinom Arduina (napríklad 2-5) a ovládacie piny (RS, E) k ďalším digitálnym pinom. Potenciometer pripojte k pinom VCC a GND a jeho stierač k pinu kontrastu LCD.
Detailná schéma zapojenia senzora pôdnej vlhkosti, LCD displeja a Arduino UNO

Ako merať pôdnu vlhkosť pomocou Arduina?

Po vykonaní zapojenia je potrebné nahrať do Arduina vhodný program (kód). Kód prečíta analógovú hodnotu zo senzora, spracuje ju a v prípade použitia LCD displeja zobrazí výsledok.

Príklad kódu pre Arduino

Nasledujúci kód je základným príkladom, ako čítať dáta zo senzora pôdnej vlhkosti a previesť ich na percentuálnu hodnotu vlhkosti.

#include <LiquidCrystal.h> // Knihovňa pre LCD displej// Definícia pinov pre LCD displejconst int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;LiquidCrystal lcd(rs, en, d4, d5, d6, d7);// Definícia analógového vstupu pre senzor vlhkosticonst int soilSensorPin = A0;// Hodnoty pre kalibráciu (prispôsobte podľa vašich výsledkov)// Tieto hodnoty zodpovedajú úplne suchej a úplne nasýtenej pôdeint dryValue = 750; // Hodnota pri úplne suchej pôde (príklad)int wetValue = 350; // Hodnota pri úplne nasýtenej pôde (príklad)void setup() { Serial.begin(9600); // Spustenie sériovej komunikácie pre ladenie lcd.begin(16, 2); // Inicializácia LCD displeja lcd.print("Pôdna vlhkost:");}void loop() { int sensorValue = analogRead(soilSensorPin); // Prečítanie hodnoty zo senzora // Prevod surovej hodnoty na percento vlhkosti // Používame funkciu map, pričom prevracame škálu, lebo nižšia hodnota znamená vyššiu vlhkosť int humidityPercentage = map(sensorValue, dryValue, wetValue, 0, 100); // Ochrana pred hodnotami mimo kalibračného rozsahu if (humidityPercentage > 100) { humidityPercentage = 100; } if (humidityPercentage < 0) { humidityPercentage = 0; } Serial.print("Surova hodnota: "); Serial.print(sensorValue); Serial.print("\tVlhkost: "); Serial.print(humidityPercentage); Serial.println("%"); // Zobrazenie na LCD displeji lcd.setCursor(0, 1); // Nastavenie kurzora na druhý riadok lcd.print(" "); // Vyčistenie riadku lcd.setCursor(0, 1); lcd.print(humidityPercentage); lcd.print("% "); delay(1000); // Počkanie 1 sekundu pred ďalším meraním}

Kalibrácia senzora

Po nahratí kódu do Arduina je dôležité kalibrovať senzor. Umiestnite sondu do úplne suchej pôdy a zaznamenajte hodnotu (napríklad pomocou sériového monitora v Arduino IDE). Potom sondu umiestnite do pôdy, ktorá je dostatočne vlhká (nie premokrená), a opäť zaznamenajte hodnotu. Tieto dve hodnoty (dryValue a wetValue) potom použite vo funkcii map() pre presnejšie výsledky. V kóde môžete tiež nastaviť citlivosť pomocou potenciometra na doske senzora.

Aplikácie

Systém monitorovania pôdnej vlhkosti s použitím Arduina nachádza široké uplatnenie v rôznych oblastiach:

  • Domáce záhrady a skalky: Automatické zavlažovanie podľa aktuálnej potreby rastlín.
  • Trávniky: Efektívne zavlažovanie pre zdravý a zelený trávnik.
  • Interiérové rastliny: Zabezpečenie optimálnej vlahy pre izbové rastliny, predchádzanie premokreniu alebo vysychaniu.
  • Pestovanie v skleníkoch: Presné riadenie vlhkosti pre špecifické plodiny.
  • Poľnohospodárstvo: Monitorovanie vlhkosti pôdy na rozsiahlejších plochách pre optimalizáciu závlahy.

Okrem priameho ovládania zavlažovania môže systém slúžiť aj na zber dát o vlhkosti pôdy, čo môže byť užitočné pre analýzu a plánovanie.

Infografika zobrazujúca rôzne aplikácie senzorov pôdnej vlhkosti

Súvisiace technológie a senzory

Okrem senzorov pôdnej vlhkosti existuje mnoho ďalších senzorov, ktoré je možné integrovať do projektov s Arduinom pre monitorovanie životného prostredia. Medzi populárne patria:

  • DHT11 a DHT22: Senzory na meranie teploty a vlhkosti vzduchu. DHT22 je presnejší a má širší rozsah merania ako DHT11. Oba senzory sú dostupné aj v moduloch s integrovanými komponentmi.
  • DS18B20: Vodotesný digitálny teplotný senzor.
  • BME280: Senzor na meranie teploty, vlhkosti a atmosférického tlaku.

Tieto senzory často vyžadujú špecifické knižnice pre Arduino IDE a ich pripojenie je podobne jednoduché ako pri senzore pôdnej vlhkosti.

tags: #arduino #vlhkost #pody