SVETELEKTRO

5. marca 2021

Hladinomer do studne – Arduino / ESP8266 / ESP32

martinius96  2 roky pred  Prešovský kraj 767
40

Ponúkam mnou naprogramovanú webaplikáciu pre projekt Hladinomer. Webaplikácia umožňuje zaznamenávať údaje o výške hladiny vody v kopanej studni zo senzorového uzla. Ten v pravidelných intervaloch (5 min) vykonáva 10 priemerovaných meraní ultrazvukovým senzorom a výsledný údaj posiela serveru – PHP webaplikácii. Údaje sú vizualizované používateľovi vo webovom rozhraní v dashboarde s automatickou obnovou dát, či historicky v čase v grafoch, tabuľkách až rok spätne.

Princíp merania ultrazvukových senzorov je vyslanie signálu Trigger s dĺžkou 10 μs (mikrosekúnd), ktorý sa od hladiny vody odrazí a vráti sa do prijímača – Echo. Využíva sa metóda Time-of-Flight pre prepočet času medzi vyslaním a prijatím signálu na získanie rozdielovej výšku hladiny vody od senzora.

Po odoslaní dát do webového rozhrania sa vykoná korekcia, kedy sa vypočíta reálna výška hladiny od dna studne, ktorá je zapísaná do databázy. Korekcia sa vykoná na základe známej hĺbky studne a prijatej rozdielovej výšky hladiny vody z ultrazvukového senzora. Webové rozhranie v dashboarde vizualizuje aj aktuálny objem studne v litroch na základe známeho priemeru studne. Obe hodnoty sú vizualizované aj s tendenciou od predchádzajúceho merania t.j. stúpa, klesá, ustálená o XY cm / o XY litrov.

Ultrazvukové senzory SÚ vhodné do:

  • Kopaných studní
  • Septikov a žúmp
  • Potokov a jazier
  • Plastových nádrží na dažďovú vodu
  • Silá (meranie naplnenia sypkými materiálmi)
  • Kontajnery (monitoring odpadu, naplnenia zbernej nádoby)
  • Kotolne (monitoring zásoby dreva, peliet, uhlia, štiepky)
  • Šachty a pivnice (monitoring vytopenia / spodnej vody)
  • Výroba (detekcia výrobkov, ich výšky a počtu, výška navinutého materiálu)
  • Parkoviská (detekcia voľných a obsadených parkovacích miest)

Ultrazvukové senzory NIE SÚ vhodné do:

  • Vŕtaných studní (z dôvodu detekčnej charakteristiky – široký lúč)
  • Potrubí a rúr (z dôvodu detekčnej charakteristiky – široký lúč)
  • Do studní so spádovým prítokom (rozbúrená hladina utlmí ultrazvuk, meranie je nemožné)
  • Do miest s náhlou zmenou teplôt (teplota ovplyvňuje čas šírenia zvuku, teda aj stacionárna hladina sa javí ako kolísavá)
  • Do vákuových nádrží (meranie je nemožné)

Projekt využíva ultrazvukový senzor vzdialenosti HC-SR04 – (detekčný uhol 15°), prípadne vodotestný senzor JSN-SR04T (detekčný uhol je až 60°).

Možno využiť aj iné ultrazvukové senzory so signálmi Trigger / Echo z rady RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™. Detekčný uhol reprezentuje šírku lúča, resp. kužeľa, ktorý sa so vzdialenosťou rozširuje. Merať je možné výšku hladiny až do 400 resp. 450 cm max (na základe údajov z katalógového listu jednotlivých senzorov).

Pre senzorový uzol je možné použiť vývojovú dosku Arduino (Uno / Mega) s Ethernet modulom Wiznet W5100 alebo W5500, prípadne jeho novšiu verziu USR-ES1 (W5500 V2). Pre prenos dát vzduchom je možné použiť WiFi mikrokontroléry od Espressif Systems – ESP8266 (NodeMCU, Wemos D1 Mini, Generic Board), alebo ESP32 (Devkit, prípadne samostatný modul napr. ESP32-WROOM-32 / ESP32-S). ESP32 je možné použiť aj v kombinácii s PHY Ethernet modulom LAN8720 (len Wiring implementácia). Schéma zapojenia pre všetky mikrokontroléry je dostupná priamo vo webaplikácii spolu so zdrojovými kódmi v jazyku Wiring (.ino app), resp. pre ESP32 dostupná aj implementácia vo frameworku ESP-IDF s operačným systémom reálneho času – FreeRTOS s mechanizmom blokovania úloh Queue. Webové rozhranie pre hladinomer dokáže automaticky vygenerovať zdrojový kód pre mikrokontroléry na základe umiestnenia projektu, domény a pod (nutná úprava Root CA certifikátu, ktorý vydal certifikát pre danú doménu).

Mikrokontrolérové platformy ESP8266 a ESP32 (Wiring implementácie) je možné prevádzkovať aj v režime ULP (Ultra-Low Power), ktorý dramaticky zníži ich spotrebu na úroveň desiatok mikroampérov. Vhodné pre prevádzku na batériu aj niekoľko rokov (nutné použiť aj tranzistor pre spínanie napájania pre senzor, vyžaduje úpravu zdrojového kódu).

Druhým prevádzkovým režimom je StandBy, kedy platforma beží v štandardnom režime a môže byť rozšírená o implementáciu Over The Air (OTA), ktorá ponúka aktualizáciu firmvéru prostredníctvom LAN siete priamo z rozhrania ArduinoIDE, využíva sa espota.py pre upload process. Arduino s Ethernetom podporuje iba HTTP konektivitu a nepodporuje OTA aktualizáciu, ani režim Low-power (Režim hlbokého spánku)! Pre platformy ESP8266 a ESP32 je možné využiť HTTP i HTTPS šifrované spojenie s webserverom.

Pre prevádzku projektu je nutné vlastniť webserver s podporou Apache/Nginx (pre .php scripty) na verejnej IP adrese, alebo v LAN sieti, kam daná platforma odosiela dáta z ultrazvukového senzora. Na webserveri beží aplikácia, ktorá používateľovi vizualizuje v dynamickom prehľade posledné údaje s indikátorom konektivity mikrokontroléra.

Web rozhranie obsahuje aj záznam rekordov – maximálna, minimálna hodnota hladiny vody za 24 hodín, 7 dní, 30 dní. Tieto údaje sú vizualizované v budíkovej reprezentácii. Maximá a minimá indikujú priebežnú výdatnosť studne za deň až mesiac.

Webaplikácia má aj rôzne konfigurovateľné údaje, ktoré sú potrebné pre správne určenie výšky hladiny vody – hĺbka studne po dno (slúži ako kalibračná hodnota pre merania). Ultrazvukový senzor vracia výšku hladiny vody od vrchu studne, nie od dna.

Preto sa touto kalibračnou hodnotou odčítava meranie, aby sa zistila skutočná výška hladiny vody od dna. Druhým meniteľným parametrom je priemer studne. Nastavenie priemeru studne je dôležité pre prepočet výšky hladiny na litre bojem studne. Podstránka nastavenia obsahuje aj odhad maximálnej hĺbky studne pri danom priemere pre čo najpresnejšie merania bez odrazov – zohľadňuje detekčnú charakteristiku senzora.

Tento odhad maximálnej hĺbky studne sa realizuje trigonometriou a umožňuje používateľovi lepšie vybrať senzor pre jeho požiadavky vzhľadom na rozmery jeho studne.

Dáta sú do webového rozhrania odosielané po HTTP / HTTPS protokole s POST payloadom. Mikrokontróler je autentizovaný cez parameter v POST requeste. Akcie vo webovom rozhraní (zmazanie záznamu, konfigurácia nastavení, zobrazenie zdrojového kódu pre mikrokontróler) sú za loginom cez HTTP Auth Basic – menom a heslom (odporúča sa používať web rozhranie pod HTTPS).

Projekt je vhodný aj pre laikov, pre implementáciu webového rozhrania je dostupný .pdf dokument s inštruktážou, ktorý krok po kroku vysvetľuje nastavenie a spustenie projektu na webhosting / lokálny webserver.
Projekt je možné vopred vyskúšať s vašim hardvérom na testovacom webovom rozhraní (odkaz zašlem v správe). Posledné prepočítané namerané údaje z webového rozhrania je možné prenášať na MQTT Broker (s iným mikrokontrolérom, ktorý funguje ako JSON klient – programové implementácie sú dostupné). Tieto dáta sú na .php podstránke distribuované v JSON formáte. Možno integrovať do vlastnej automatizácie (Domoticz, Hassio, Loxone a pod.) a vizualizovať dáta z hladinomera aj v inej vizualizácii, napr. Grafana. Možné následne vytvoriť vlastné automatizácie pre polievanie záhrady, zavlažovanie a pod. na základe údajov o výške hladiny vody.

Na vyžiadanie možno vyskúšať vopred webaplikáciu s plnou funkcionalitou (okrem HTTP Auth na podstránkach nastavení a zobrazenia zdrojového kódu) s vašim hardvérom. Dodávam výhradne softvérové riešenie. Hardvér, ani jeho montáž neponúkam!

Iné typy senzorov pre záznam výšky hladiny vody, ktoré je možné integrovať (nutné vytvoriť vlastný firmvér):

  • Laserové (LiDAR) – (Garmin LIDAR-Lite v3HP, TFMini …)
  • Hydrostatické (ponorné) – (LMK307, LMP305, DPT200 …)
  • Elektrostatické (kapacitné / indukčné)
  • Tlakové (diferenčné / s kompenzačným senzorom atmosférického tlaku)
  • Optické – (GP2Y0A02YK0F, YD-02F, FS-IR02 …)
  • Mechanické (plavák)
  • Magnetické (Hall) – (VCL9, Sen-Hz41wa …)
  • Mikrovlnné (radarové) – (CS476, CS475A-L, SP69, WLR 8/15/30 …)
  • Ultrazvukové – iný typ výstupu (UART, RS-232, RS-485, prúdová slučka 4-20 mA, Modbus TCP / RTU, M-bus, PROFINET, CAN, DQ)
  • Poznámka: Ak sa vykonáva prepočet výšky hladiny vody od dna na strane mikrokontroléra, je nutné na webovom rozhraní nastaviť hĺbku studne na 0 cm.

Webové rozhranie je dostupné v slovenskom, nemeckom, ruskom a anglickom jazyku. Slovenský jazyk je predvolený.

Cena je pevná, 50€ za zdrojové kódy webového rozhrania.

Viac informácii o projekte, kompatibilnom hardvéri s možnosťou vyskúšania projektu zdarma s Vašim hardvérom nájdete na: https://martinius96.github.io/hladinomer-studna-scripty/

K projektu existuje aj skompilovaný plug n‘ play firmware pre ESP8266 a ESP32. Firmvér je dostupný pre prevádzkový režim Standby a Ultra-Low-Power. Firmvér je tak možné nahrať do mikrokontroléra bez potreby inštalácie knižníc. Projekt sa tak dá okamžite vyskúšať s vašim hardvérom na testovacom webovom rozhraní.

Firmvér sa nahráva do mikrokontroléra cez ESPTOOL (súčasť .zip archívu firmvéru). Konfigurácia na domácu WiFi sieť sa realizuje cez WiFiManager. Pokým ESP nemá platnú konfiguráciu, vysiela svoju SSID Hladinomer_AP s vlastným web rozhraním WiFiManagera s Captive Portalom, kde sa konfiguruje SSID a heslo.

Priamo možno vyskúšať s predgenerovanými zdrojovými kódmi a kompatibilným hardvérom a HTTP konektivitou na: http://arduino.clanweb.eu/studna_s_prekladom/

Ako sa vám páčil tento článok?
  • Páči sa mi (0)
  • Súhlasím (0)
  • Zábavné (0)
  • Informatívne (0)