P: Hladinomer - Monitor výšky hladiny - Arduino + ultrazvuk

Sekcia určená na predaj

Moderátori: Merak, Moderátori

martinius96
Okoloidúci
Okoloidúci
Príspevky: 23
Dátum registrácie: 22 Feb 2020, 01:51
Bydlisko: Poprad

P: Hladinomer - Monitor výšky hladiny - Arduino + ultrazvuk

Príspevok od používateľa martinius96 » 18 Aug 2020, 12:47

Ponúkam mnou naprogramovanú webaplikáciu pre projekt Hladinomer. Webaplikácia umožňuje zaznamenávať údaje zo senzorového uzla, ktorý v pravidelných intervaloch (5 min) posiela informácie o výške hladiny vody v studni / nádrži. Údaje sú vizualizované používateľovi vo webovom rozhraní v dashboarde s automatickou aktualizáciou, či historicky v čase v grafoch, tabuľkách.
Obrázok
Obrázok
Využíva sa ultrazvukové meranie výšky hladiny vody v studni, pričom je senzor umiestnený na vrch studne. 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.
Obrázok
Po odoslaní dát do webového rozhrania sa vykoná korekcia. Vypočíta sa 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)
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é)
Projekt využíva ultrazvukový senzor vzdialenosti HC-SR04 - (detekčný uhol 15°), prípadne vodotestný senzor JSN-SR04T (detekčný uhol je až 60°). Taktiež je možné použiť aj obdobné senzory s rovnakým spôsobom merania a signálmi Trigger, Echo: US-02X, IOE-SR0X, HC-SR0X, HY-SRF0X, DYP-ME007 a iné... Detekčný uhol reprezentuje šírku lúča. Merať je možné výšku hladiny až do 400 resp. 450 cm (na základe údajov z katalógového listu jednotlivých senzorov).
Obrázok
Pre obsluhu projektu je možné využiť mikrokontróler Arduino (Uno / Mega v revízii R3) s Ethernet modulom Wiznet W5100 alebo W5500, prípadne jeho novšiu verziu USR-ES1. 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). Schéma zapojenia pre všetky platformy je dostupná priamo vo webaplikácii spolu so zdrojovými kódmi v jazyku Wiring (.ino app). Pre ESP32 dostupná aj experimentálna implementácia vo frameworku ESP-IDF (4.2) s operačným systémom reálneho času - FreeRTOS a mechanizmom blokovania úloh Queue.
Obrázok
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 (udržiava konektivitu v LAN sieti) 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. Arduino s Ethernet modulmi 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 realizáciu HTTPS spojenia využívajú oba mikrokontroléry ESP certifikát certifikačnej autority v .pem formáte, ktorý je vložený do zdrojového kódu a uložený do PROGMEM.

V prípade, že nie je na danom mieste dostupný pevný internet, je možné využiť aj prenos dát cez IoT sieť Sigfox, ktorá pokrýva 90% Slovenska a je tak vhodnou alternatívou pre oblasti bez pokrytia internetom. Kompatibilný je UART modem SIGFOX WISOL 868MHz (SFM10R1), ktorý komunikuje s mikrokontrolérom cez AT príkazy cez UART. Modem je vhodný pre IoT aplikácie s nízkym prúdovým odmerom. Limit správy 12B (používajú sa 4B pre výšku hladiny vody UINT_32), custom callback zo Sigfox backendu vykonáva HTTP / HTTPS POST request pre zápis dát do webového rozhrania. Nakoľko má sieť Sigfox obmedzený počet správ za deň (140), meranie a odosielanie dát sa vykonáva každých 11 minút. V prípade licencie na 140 správ je možné využiť aj iné - systémové dáta pre prenos, napríklad GPS súradnice zo systému Sigfox ATLAS (nutné upraviť súbor pre zápis do databázy, + zmena polí tabuľky).

Pre prevádzku projektu je nutné vlastniť webserver s podporou Apache / Nginx / HTTPD (pre možnosť spúšťania serverových scriptov v PHP) na verejnej IP adrese, alebo v LAN sieti, kam daná platforma odosiela dáta z ultrazvukového senzora. POZOR, v prípade Sigfox prevádzky musí byť server dosiahnuteľný z internetu, inak nie je možné zapísať dáta! Na webserveri beží aplikácia, ktorá používateľovi vizualizuje v dynamickom prehľade posledné údaje s indikátorom konektivity mikrokontroléra. Web rozhranie má podstránku pre vizualizáciu rekordov v budíkovej reprezentácii, vykresľuje sa maximálna, minimálna hodnota hladiny vody za 24 hodín, 7 dní, 30 dní. Maximá a minimá indikujú priebežnú výdatnosť studne.
Obrázok
Dáta do web rozhrania posiela mikrokontorlér cez HTTP / HTTPS protokol 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 pre šifrovanie autentizácie).

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ť zdarma s vašim hardvérom na testovacom webovom rozhraní. Testovacie webové rozhranie ponúka plnú funkcionalitu okrem HTTP Auth na podstránkach nastavení, náhľadu zdrojového kódu, nakoľko je webaplikácia prístupná komukoľvek, kto chce projekt vyskúšať. Posledné 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 (štruktúre). 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.
Obrázok
Obrázok
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)
  • Hydrostatické
  • 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.
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.
PHP scripty sú kompatibilné s aktuálnymi verziami PHP. Webaplikácia je v procedurálnom (vanilla) PHP, nie v OOP frameworku. Zdrojové kódy pre mikrokontorléry sú písané pre aktuálne Arduino Core - ESP8266 (3.0.2), ESP32 (2.0.1).

Viac informácii o projekte, kompatibilnom hardvéri, vrátane možnosti vyskúšať webaplikácie pre Hladinomer s vašim hardvérom nájdete na: https://martinius96.github.io/hladinome ... a-scripty/

0
Naposledy upravil/-a martinius96 v 06 Apr 2022, 21:12, upravené celkom 2 krát.

Používateľov profilový obrázok
marioo
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1112
Dátum registrácie: 15 Júl 2012, 12:28
Bydlisko: SVK
Vek: 50

Re: P: Hladinomer - Monitor výšky hladiny - Arduino + ultrazvuk

Príspevok od používateľa marioo » 19 Aug 2020, 09:10

Pekná práca, fungovalo by to v kovovej oválnej nádrži? (stará mliekarenská cistrena cca 5000l) ?
0

martinius96
Okoloidúci
Okoloidúci
Príspevky: 23
Dátum registrácie: 22 Feb 2020, 01:51
Bydlisko: Poprad

Re: P: Hladinomer - Monitor výšky hladiny - Arduino + ultrazvuk

Príspevok od používateľa martinius96 » 19 Aug 2020, 11:40

Malo by to fungovať, avšak najlepšie by to bolo najprv otestovať.
Testovalo sa to v rôznych studniach, ale aj nádržiach. Pri porovnaní som nezistil rozdiely medzi tými meraniami (aby tam bol viditeľný nejaký faktor skreslenia uzavretej nádrže). Pri každom meraní sa vykonáva 10 meraní, ktoré sa následne priemerujú pre dosiahnutie optimálnej hodnoty.

Skôr môže byť problém, že tá nádrž môže mať hrdlo, kam sa umiestní senzor a tam to môže skreslovať, nakoľko hrdlo nebude mať dostatočný priemer a ultrazvuk sa od neho môže odraziť aj viac krát. Zvlášť pri senzore JSN-SR04T (vodotesnom), ktorý má až 60° detekčný uhol je šírka lúča fakt veľká...
0

martinius96
Okoloidúci
Okoloidúci
Príspevky: 23
Dátum registrácie: 22 Feb 2020, 01:51
Bydlisko: Poprad

Re: P: Hladinomer - Monitor výšky hladiny - Arduino + ultrazvuk

Príspevok od používateľa martinius96 » 21 Dec 2023, 13:30

Aktívne :-)

Pribudla aj možnosť skenovania QR kódu napr. priamo zo zariadenia, ktorý na smartfóne ukáže aktuálne dáta. To sa hodí aj keď máte viac inštancií webaplikácie a viac zariadení. Naskenovaním QR kódu sa otvorí tabuľka s možnosťou scrollovania obrazovkami pre nahliadnutie na percento naplnenia studne a pod. Teda bez otvárania priamo webaplikácie hladinomera uvidíte aktuálne dáta toho daného zariadenie, ktorého QR kód ste naskenovali.

Taktiež s najnovším Arduino Core založenom už na ESP-IDF 5+, resp. aj v samotnom ESP-IDF tej danej verzie by mala fungovať aj doska ESP32-C5, ESP32-C6 s WiFi6, aj podporou 5 GHz u ESP32-C5.
Obrázok
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok