Senzor hladiny dešťové vody pro Arduino

Senzor hladiny dešťové vody je rozšiřovací modul pro Arduino. Tento modul je tvořen deskou plošných spojů, na které se nachází detekční vodivé proužky a pomocné součástky. Při použití je pak detekována voda, která se objeví na zmíněných detekčních proužcích.

Pro napájení lze použít napětí v rozsahu 3,3 – 5 V. Proudový odběr se pohybuje v jednotkách miliampér, maximálně 20 mA. Provozní teplota je doporučena v rozsahu 10-30 °C. A rozměry celého modulu jsou 62x20 mm.

Pro úspěšné propojení senzoru deště a Arduino desky stačí zapojit celkem 3 vodiče. Propojíme „S“ s pinem A0, „+“ s pinem D4 a „-“ se zemí Arduina. Pro pin „+“ je možné vybrat jiný digitální pin a pro pin „S“ je možné vybrat jiný analogový pin, ale je nutné tuto volbu provést také na začátku programu.

Ukázkový kód obsahuje na svém začátku nastavení propojovacích pinů a vytvoření proměnné, do které je ukládán čas poslední kontroly.

V podprogramu setup v prvním kroku zahájíme komunikaci po sériové lince a následně nastavíme napájecí pin jako výstupní.

Nekonečná smyčka loop má na začátku v komentáři uvedené místo, v kterém můžeme vykonávat ostatní příkazy programu. Kontrola deště je následně volána každých 1000 ms (1 sekunda) a zpracování této kontroly trvá velice krátký čas. Pokud je tedy rozdíl aktuálního času od spuštění a uloženého času větší jak 1 sekunda, provedeme následující příkazy.

Jako první zapneme pomocí napájecího pinu modul se senzorem a po krátké pauze načteme hodnoty z analogového pinu do proměnné. Následně vypneme napájení pro modul a vypíšeme na sériovou linku načtenou hodnotu. Poté je ještě v programu uvedena detekce překročení námi dané hranice. Já jsem zde zvolil hodnotu 512, která odpovídá polovině měřícího rozsahu. Při překročení této hranice vypíšeme po sériové lince ještě dodatek o překročení hranice. Posledním krokem kontroly je uložení aktuálního času do proměnné, abychom mohli další kontrolu zahájit opět po uběhnutí jedné sekundy.

// Arduino senzor dešťové vody

// nastavení propojovacích pinů
#define pinAnalog A0
#define pinNapajeni 4
// proměnná pro uložení času poslední kontroly
unsigned long ulozenyCas = 0;

void setup() {
  // zahájení komunikace po sériové lince
  // rychlostí 9600 baud
  Serial.begin(9600);
  // nastavení napájecího pinu jako výstup
  pinMode(pinNapajeni, OUTPUT);
}

void loop() {
  // místo pro zbytek programu
  // ...

  // každých 1000 ms provedeme kontrolu
  if (millis() - ulozenyCas > 1000) {
    // zapnutí napájení pro modul s krátkou pauzou
    digitalWrite(pinNapajeni, HIGH);
    delay(1);
    // načtení hodnoty z analogového pinu do proměnné
    int analog = analogRead(pinAnalog);
    // vypnutí napájení pro modul
    digitalWrite(pinNapajeni, LOW);
    // vytištění informace o analogovém vstupu
    Serial.print("Analogovy vstup: ");
    Serial.println(analog);
    // při překročení nastavené hladiny
    // vytiskni varovnou hlášku
    if (analog > 512) {
      Serial.println("Prekrocena nastavena hranice - detekovan dest!");
    }
    // uložení aktuálního času pro následující kontrolu
    ulozenyCas = millis();
  }
}

Po nahrání ukázkového kódu do Arduino desky s připojeným senzorem deště dostaneme například tento výsledek po zamokření detekčních proužků:

Analogovy vstup: 0
Analogovy vstup: 0
Analogovy vstup: 552
Prekrocena nastavena hranice - detekovan dest!
Analogovy vstup: 608
Prekrocena nastavena hranice - detekovan dest!
Analogovy vstup: 605
Prekrocena nastavena hranice - detekovan dest!
Analogovy vstup: 462

Senzor hladiny dešťové vody pro Arduino je zajímavý rozšiřovací modul, které umožňuje vytvořit s Arduinem detektor vody. Hodí se tedy do projektů jako je například automatické zapínání stěrače oken, detektor deště a další. V ukázce jsem záměrně použil pouze krátké zapínání napájení pro modul v průběhu měření, protože při stálém napájení má modul nejen zbytečně vysoký proudový odběr, ale také se snižuje životnost detekčních vodivých proužků. A při venkovním použití bychom také měli správně zaizolovat část modulu s pomocnými součástkami.

 

Seznam použitých komponent:

https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

https://dratek.cz/arduino/1264-senzor-hladiny-destove-vody-pro-arduino-1459973768.html

Další podobné články