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 (hladinomer) je typom projektu so záznamom a archiváciou 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, ktoré môžu byť integrované vo vyššom systéme, ktorý bude preberať aktuálne dáta o výške hladiny vody a objeme studne z JSON výstupu.

Bude tak 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žíva iba logovanie dát do MySQL databázy v pravidelných 5-minútových intervaloch, v prípade prenosu cez IoT sieť Sigfox sa využíva 11-minútový interval, nakoľko objem správ je obmedzený na 140 správ / 24 hodín.

Pre meranie výšky hladiny vody sa používajú ultrazvukové senzory vzdialenosti. Táto metóda využíva vyslanie signálu Trigger o dĺžke 10 mikrosekúnd, ktorý sa od hladiny odrazí a vráti sa do prijímača - Echo. Na základe prepočtu času šírenie zvuku je možné určiť vzdialenosť v centimetroch, ktorá je vo webovom rozhraní prepočítava na reálnu výšku hladiny vody od dna a vyjadrená aj v litroch ako objem studne, aby mal používateľ čo najlepšiu predstavu o svojej studni.

Na základe údajov z datasheetu ultrazvukových senzorov HC-SR04 a JSN-SR04T (vodotesný) (a ďalšie kompatibilné z rady HC-SR0X, HY-SRF0X, DYP-ME007) je zrejmé, že je možné merať maximálnu hĺbku studne 450cm. Senzor sa umiestní do hornej časti studne, najlepšie na stred studne. Aby boli merania čo najpresnejšie, vykoná sa celkovo 10 meraní, ktoré sa spriemerujú. Dáta sú zaslané na webové rozhranie POST metódou cez socket. Backend webového rozhrania vykoná prepočet výšky hladiny od dna na základe nameraných údajov a údajov o hĺbke studne, ktoré sú zadané vo web rozhraní. Senzorový uzol v POST posiela aj token, ktorým je autentizovaný voči serveru, ktorý mu umožní zápis dát.

Ultrazvukové senzory SÚ vhodné do:

  • Kopaných studní
  • Septikov a žúmp
  • 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)
  • Garáže (semafor pre auto - vzdialenosť od steny) 

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 (zvlnená 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é)



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 / USR-ES1 / ENC28J60)
  • ESP8266 (Wemos D1, Wemos D1 mini, NodeMCU, Generic module) - WiFi
  • ESP32 (Generic, DevKit V1 až 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. Pre ESP32 existuje aj programová implementácia s využitím operačného systému reálneho času FreeRTOS pod frameworkom ESP-IDF pre vývoj IoT aplikácii.

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.

Pri istej úprave webového rozhrania (nastavenie hĺbky studne na 0 cm a s implementáciou prepočtu reálnej výšky hladiny od dna na strane mikrokontroléra) dovolí využiť aj iné typy snímačov výšky hladiny vody s aktálnym rozložením webového rozhrania a jeho vizualizácii  (hydrostatické, kapacitné, tlakové, optické...)

Iné typy senzorov, ktoré môžu byť s existujúcim webovým rozhraním použité:

  • Laserové (LiDAR)
  • Hydrostatické (ponorné)
  • Elektrostatické (kapacitné / indukčné)
  • Tlakové (diferenčné / s kompenzačným senzorom atmosférického tlaku)
  • Optické
  • Mechanické (plavák)
  • Magnetické (Hall)
  • Mikrovlnné (radarové)
  • Ultrazvukové - iný typ výstupu (UART, RS-232, prúdová slučka, Modbus TCP / RTU, M-bus, RS-485, PROFINET, CAN...)
  • 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.

Do webového rozhrania je možné integrovať aj komerčne predávané senzorové uzly využívajúce ultrazvukovú metódu pre meranie výšky hladiny vody, materiálu s podporou LPWAN IoT sietí (Sigfox / LoRaWAN) - konfigurácia je potrebná iba na backende, kde sa vytvorí požadovaný callback:

  • WSSFC-ULC
  • HummBox
  • EM500
  • MiniUni

Vzorové nastavenie callbacku - Sigfox backend - HTTP (80) testovacie rozhranie:

  • Callbacks --> Custom --> New
  • Do Custom payload config napíšeme: cislo1::uint:16
  • Do URL pattern: http://arduino.clanweb.eu/studna_s_prekladom/data.php
  • V HTTP metóde zvolíme: POST
  • Do Body (tela správy) doplníme: hodnota={customData#cislo1}&token=123456789
  • Do Content-Type: application/x-www-form-urlencoded

Vzorové nastavenie callbacku - Sigfox backend - HTTPS (SSL, 443) testovacie rozhranie:

  • Callbacks --> Custom --> New
  • Do Custom payload config napíšeme: cislo1::uint:16
  • Do URL pattern: https://hladinomer.000webhostapp.com/data.php
  • V HTTP metóde zvolíme: POST
  • Do Body (tela správy) doplníme: hodnota={customData#cislo1}&token=123456789
  • Do Content-Type: application/x-www-form-urlencoded

Rozšírené informácie o projekte Hladinomer:



Prístupov 10462
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
Ako spustiť neefektívny program efektívn...
[ 21.6.2022] (príspevkov 0)
Wokwi - simulátor pre Arduino projekty
[ 14.4.2022] (príspevkov 0)
Ovládanie DC motorov - NodeMCU V2 + moto...
[ 29.1.2022] (príspevkov 0)
Kde hľadať VIN - Zetor UR1
[ 12.1.2022] (príspevkov 0)
Počítadlo otáčok so zastavením motora
[ 7.1.2022] (príspevkov 0)
FreeRTOS v Arduino IDE - ESP32
[ 2.1.2022] (príspevkov 0)
WiFi termostat - Espressif Systems - ESP...
[ 24.12.2021] (príspevkov 0)
ULP aplikácie - ESP8266 / ESP32
[ 14.11.2021] (príspevkov 0)