blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
3
SLEDOVAŤ BLOG
PHP, Arduino programátor
deadawp



Hladinomer - Arduino, ESP32, ESP8266 + ultrazvuk
pridal deadawp 29.4. 2019 o 0:55



Projekt monitoru výšky hladiny vody je typom projektu so záznamom a ukladaním dát, ktoré môžu byť použité pre rozšírenú štatistiku denného vývoja hladiny vody. Vďaka tomu je možné určiť mesiace v roku, kedy je v studniach nedostatok vody a opak, kedy je vody dostatok, alebo až nadbytok. Projekt sa môže stať základom pre ďalší projekt - automatickú závlahu riadenú mikrokontrolérom. Do projektu je možné integrovať aj rozšírené ovládanie výkonových prvkov - čerpadiel, vodárni, solenoidových ventilov, ktorými je možné zalievať záhradu a záhony - zavlažovať, alebo aj čerpať vodu a využívať ju ako úžitkovú na splachovanie, umývanie. Projekt zo základnej verzii využíval iba logovanie dát do MySQL databázy v pravidelných 5-minútových intervaloch.

Pre záznam výšky hladiny vody (ale výšku aj inej veličiny, napríklad snehu, uhlia, dreva) som využil cenovo dostupný ultrazvukový senzor vzdialenosti HC-SR04, ktorý sa vyznačuje vysokou spoľahlivosťou a jednoduchým ovládaním a nízkou spotrebou. Dokáže merať vzdialenosť 2-450 centimetrov. Využíva ultrazvuk na frekvencii 40kHz s vysielacím pulzom o dĺžke 10 mikrosekúnd. Na základe času od prijatia odrazenej vlny je možné vzorcom vypočítať vzdialenosť objektu, od ktorého sa vlna odrazila. Vyžaduje sa však, aby bola plocha kolmo na ultrazvukový senzor vzdialenosti z dôvodu presnosti merania.


Z popisu vyplýva, že je možné merať maximálne studňu s výškou 450cm. Senzor sa umiestni na hornú úroveň, najlepšie na stred studne. Aby boli merania čo najpresnejšie, vykoná sa celkovo 5 meraní, ktoré sa spriemerujú. Nakoľko je ale výsledok merania otočený - meria sa vzdialenosť od vrchu a nie od dna, je nutné výsledok odčítať od maximálnej výšky (450cm - alebo inej pri plytšej studni) a vytvoriť absolútnu hodnotu. Takto vieme určiť výšku vody v studni. Ak vieme priemer studne a aj výšku vodného stĺpca, vieme určiť aj litre vody v rozumnej miere.
Technické parametre senzora HC-SR04:

Operačné napätie 3.8-5.5V
Spotreba 8mA
Frekvencia ultrazvuku 40kHz
Maximálna vzdialenosť 450cm
Minimálna vzdialenosť 2cm
Trigger pulz 10μs
Efektívny uhol detekcie 15°

Z technickej špecifikácie vyplýva, že senzor sa hodí aj do low-power aplikácii, kedy sa využíva deep-sleep, alebo iný mód uspania mikrokontroléru pri prevádzke na batérie.

Aby bolo možné projekt uspôsobiť na prenos rôznymi technológiami, vyhotovil som niekoľko zdrojových kódov, ktoré umožňujú prenos týmito technológiami a mikrokontrolérmi:

  • Arduino + Ethernet (Wiznet W5100/Wiznet W5500)
  • ESP8266 (Wemos D1, Wemos D1 mini, NodeMCU, Generic module) - WiFi
  • ESP32 (Generic, devkit v1-v4, Lolin32) - WiFi
  • (*) Sigfox Wisol - IoT (vyžaduje náročnejšiu prvotnú konfiguráciu + HTTPS callback) 
  • (*) NB-IoT 
  • (*) GSM
  • * - akýkoľvek mikrokontróler

Všetky technológie umožňujú prenos do webového rozhrania, kde sa dáta spracujú, uložia sa do MySQL databázy a sú archivované pre rozsiahlejšiu štatistiku. Z Arduina s Ethernet shieldom sa vykoná HTTP request, ktorý predá dáta webovému rozhraniu. Pri využití ESP dosiek, alebo Sigfox modulu, či GSM, NB-IoT je možné vykonať HTTPS request, ktorým sa dáta do webového rozhrania odošlú. 
Ešte by som doplnil, že pri ESP32 a ESP8266 je vhodné použiť napäťový delič zo vstupného pinu, ktorý je síce 5V tolerantný, ale logika dosky je 3.3V.

Webové rozhranie využíva knižnicu Google charts na reprezentáciu dát za 2 hodiny, 24 hodín, 7 dní a 30 dní v čiarových grafoch. S možnosťou zobrazenia grafu za navolený mesiac, či deň. Vďaka tomu je možné prezerať rozdiely medzi rokmi, mesiacmi a dňami a vyhodnocovať výdatnosť studne a aj to, či vplyvom rokov naberá na výdatnosti, alebo vysychá. 

Súčasťou systému je aj real-time tabuľka, v ktorej sa automaticky zobrazia vždy najnovšie údaje s tendenciou hladiny vody. Pre dlhodobejšiu štatistiku a priemery sa na stránke využívajú budíkové rozprezentácie, ktoré vizualizujú maximá a minimá, priemery za 24 hodín / 7 dní / 30 dní.

Pre historický prehľad nameraných údajov je možné využiť aj jednoduchú tabuľku, ktorá zároveň obsahuje informácie o čase daného záznamu a aj porovnanie prechádzajúcej hodnoty, teda je možné určiť v danom období aj pribúdanie, či odbúdanie vody - výšky hladiny v studni.

Login systém s možnosťou zmeny údajov je samozrejmosťou vrátane logovania IP adries, ktoré sa pripojili, alebo nepripojili do systému v dôsledku zadania zlých údajov. 

Schéma zapojenia pre platformy Arduino, ESP32, ESP8266 (NodeMCU):

Viac o projekte je možné nájsť na mojich stránkach: https://arduino.php5.sk/studna-voda.php
Projekt je možné vyskúšať na adrese: https://arduino.php5.sk/studna/



Prístupov 2791
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDOVAŤ
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Šum v 8-bitových obrazoch - MATLAB
[ 5.12.2019] (príspevkov 0)
Escape Room - Webclient - Arduino + Ethe...
[ 27.11.2019] (príspevkov 0)
OPC UA - ESP8266 (Arduino)
[ 22.11.2019] (príspevkov 0)
Kurzy (krypto)mien - Arduino / ESP32 / E...
[ 15.11.2019] (príspevkov 0)
Otáčkomer na platforme Arduino Uno
[ 1.9.2019] (príspevkov 0)
Ovládanie ESP32 prostredníctvom UDP data...
[ 30.8.2019] (príspevkov 0)
Mastermind - Logik - cez Arduino a LCD
[ 22.8.2019] (príspevkov 0)
Bicyklovanie po Google mapách - Arduino ...
[ 23.6.2019] (príspevkov 0)
Nerov (v)zostup v Caldárii
[ 3.6.2019] (príspevkov 0)
Prepočet atmosférického tlaku na hladinu...
[ 17.5.2019] (príspevkov 0)