blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
3
SLEDUJETE 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 studni, nádrži. 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, ktorý môže byť využitý pre zavlažovanie rôznych typov rastlín. Projekt je tak aj vstupnou bránou pre možné automatizácie skleníkov, fóliovníkov a záhonov.

Do projektu je tak v budúcnosti 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) 

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 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):

V ďalších verziách projektu Hladinomer boli implementované bezpečnostné mechanizmy na úrovni softvéru, ktoré umožňovali autorizovanému používateľovi vykonávať zmeny --> Nastavenia. Každý mikrokontróler musí byť autentizovaný bezpečnostným tokenom, ktorý je vložený do požiadavky. Frontend webaplikácie prešiel zmenou pre krajšie a najmä efektne rozvehnuté rozhranie pre správu a monitoring.

Boli pridané rôzne metódy pre efektívnu prevádzku na batériu pre ESP8266 a ESP32 platformu - Deep Sleep Ultra-low-power a možnosť OTA aktualizácie firmvéru cez LAN sieť. Projekt dostal vlastnú informačnú stránku, kde si používateľ môže prečítať ako systém funguje, nájsť schému zapojenia, či rozšírený projekt o dažďový senzor Hydreon RG-11.

Projekt má vytvorený aj Github repozitár, kde sú združené zdrojové kódy pre všetky mikrokontroléry, schéma zapojenia exportovaná priamo z Autodesk Eagle, programové implementácie JSON klientov, ktorých je možné pripojiť k webserveru aplikácie Hladinomer. JSON klienti dokážu získané JSON dáta rozparsovať a údaj o výške hladiny vody a objeme studne dokážu prenášať na MQTT Broker do príslušných topicov.



Prístupov 8461
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
ULP aplikácie - ESP8266 / ESP32
[ 14.11.2021] (príspevkov 0)
Detekčná charakteristika - MATLAB
[ 8.8.2021] (príspevkov 0)
Práca s obrázkami - MATLAB
[ 19.7.2021] (príspevkov 1)
Flash Encryption a jeho implementácia v ...
[ 18.7.2021] (príspevkov 0)
Secure Boot V1 a jeho implementácia v ES...
[ 13.7.2021] (príspevkov 0)
Senzor Bosch BME280 v prostredí ESP-IDF
[ 8.7.2021] (príspevkov 0)
Podpora ESP32 do projektu WiFi termostat
[ 1.7.2021] (príspevkov 0)
Beamforming vizualizácia - MATLAB
[ 29.6.2021] (príspevkov 0)
Výroba DPS - AISLER - RFID DOMINATOR
[ 18.6.2021] (príspevkov 0)