Zdrojové kódy pre Arduino, ESP8266, ESP32, knižnica NewPing: Github repozitár projektu
Vyskúšajte projekt Hladinomer + Zrážkomer zdarma s vašim hardvérom: TU
Podpora projektu Hladinomer rozšírený o Zrážkomer bola ukončená v roku 2020.

Hladinomer + Zrážkomer - monitor hladiny vody a zrážok

Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 Ultrasonic HC-SR04 JSN-SR04T RG-11 Sigfox

Riadiaci hardvér - kompatibilné mikrokontroléry AVR / ESP



Moduly prenosových technológii - Ethernet / Sigfox



Kompatibilné ultrazvukové senzory vzdialenosti


Ultrazvukový senzor vzdialenosti HY-SRF06
HY-SRF06
Ultrazvukový senzor vzdialenosti DYP-ME007
DYP-ME007

Podporovaný IR zrážkomer



Hladinomer - Arduino / ESP8266 / ESP32


Projekt Hladinomer využíva webové rozhranie pre vizualizáciu nameraných údajov o výške hladiny vody v studni, nádrži. Responzívne webové rozhranie v Bootstrap Bare šablóne sa prispôsobí akejkoľvek obrazovke, na ktorú sú dáta vizualizované. Dáta sú čitateľné na hodinkách, smartfónoch, počítačoch, Smart TV a iných zariadeniach. Webové rozhranie projektu využíva backend napísaný v jazyku PHP, ktorý spracuje prichádzajúce dáta dáta podporovanou POST metódou požiadavky, vykonáva prepočet nameranej výšky hladiny vody na skutočnú výšku hladiny od dna studne, vypočíta aj objem studne na základe známych údajov o hĺbke a priemere studne, ktoré do systému zadal používateľ. Dáta sa na webserver odosiela mikrokontróler, ktorý vykonáva merania každých 300 sekúnd - t.j. 5 minút, respektíve v prípade prenosu cez IoT sieť Sigfox sa dáta odosielajú každých 11 minút. Meranie výšky hladiny vody sa realizuje s využitím ultrazvukových senzorov - HC-SR04, alebo jeho vodotesnej varianty JSN-SR04T, prípadne UART senzorom URM07 (SKU SEN0153) - dostupný iba v špeciálnej verzii projektu Hladinomer. Dokáže merať vzdialenosť až 750 cm, z dôvodu veľkého detekčného uhla sa nehodí do veľkého množstva studní... Princíp merania ultrazvukových senzorov je vyslanie signálu Trigger s dĺžkou 10μs (mikrosekúnd) a na základe času, kedy sa signál vráti do prijímača - Echo je možné dopočítať vzdialenosť medzi senzorom a hladinou. Dôležitým parametrom u oboch ultrazvukových senzorov je šírka lúča, inými slovami detekčná charakteristika. Senzor HC-SR04 má 15° detekčnú charakteristiku. Lúč je relatívne úzky a senzor je tak vhodný aj pre užšie studne a nádrže, avšak nie je vodotesný a má vysoké riziko korózie (oxidácie). Vodotesný senzor JSN-SR04T má detekčnú charakteristiku 60 až 75°, čo ho nedovoľuje použiť v úzkych studniach, nakoľko sa lúč so vzdialenosťou veľmi rozširuje a je potrebná studňa s priemerom niekoľko jednotiek metrov (6 metrov pri 4,5 hĺbke studne).


Webové rozhranie využíva trigonometriu pre odhad merateľnej maximálnej hĺbky studne pri známom priemere studne (ďalší parameter pre výpočet objemu studne). Používateľovi vie tak webové rozhranie dopočítať, do akej maximálnej hĺbky studne je každý zo senzorov vhodný na základe jeho charakteristiky. Projekt je tak jednoduchý na použitie aj pre laikov, ktorí nevedia, ktorý senzor je pre aplikáciu v ich studni vhodnejší. Dôležitú úlohu v systéme zohráva aj použitý mikrokontróler. Pre projekt sa využila platforma Arduino (Uno) spojená s Ethernet modulom / shieldom z rady Wiznet model W5100, respektíve W5500, ktorý zabezpečoval HTTP konektivitu a umožnil mikrokontroléru prenos dát do vzdialeného webového rozhrania na internete. Nakoľko je hladinomer exteriérovým projektom, mnoho používateľov by si obľúbilo aj možnosť využitia WiFi platformy bez nutnosti pritiahnutia Ethernet konektivity až k studni. WiFi platformy od Espressif Systems - ESP8266 a ESP32, ktoré sú v projekte použité umožňujú prevádzku v rôznych režimoch - StandBy, Deep Sleep (hlboký spánok s vypnutou WiFi anténou), StandBy + OTA - umožňuje vzdialene prostredníctvom LAN siete nahrať do dosky nový firmvér priamo z prostredia Arduino IDE. Pre Deep Sleep prevádzkový režim existuje pri platformy ESP8266 upravená schéma zapojenia, ktorá využíva pre prebudenie mikrokontroléru WAKE signál, ktorý je privedený na RST. Zároveň toto zapojenie neumožňuje aktualizáciu programu bez odpojenia tejto prepojky. Pre ESP32 sa využíva Deep Sleep režim s využitím RTC timera, ktorý ESP prebudí po určitom čase. Platformy dokážu s webovým rozhraním komunikovať po HTTP, ale aj HTTPS protokole. Platforma ESP8266 využíva odtlačok (fingeprint) verejného kľúča webservera v SHA1 formáte, vyžaduje však častejší renew, nakoľko platí maximálne rok, respektíve 2 roky. Mikrokontróler z rady ESP32 využíva pre HTTPS spojenie certifikát koreňovej certifikačnej autority, ktorá pre webserver vydala certifikát - ROOT CA certifikát v .pem formáte. Z hľadiska prevádzky je táto možnosť lepšia, nakoľko certifikát certifikačnej autority platí aj 20 rokov a nie je nutný renew certifikátu.


Keďže je platforma Arduino náchylnejšia na "zaseknutie" programu z dôvodu výrazne obmedzených pamäťových a výkonových prostriedkov (v porovnaní s ESP platformami), bol do zdrojových kódov doplnený watchdog, ktorý je schopný platformu reštartovať a obnoviť tak jej prevádzku. Programová implementácia firmvéru mikrokontrolérov je rozšírená o záznam dát z IR zrážkomera Hydreon RG-11, ktorý dokáže emulovať metódu preklápacieho vedra na základe prepnutých DIP prepínačov (podporuje aj iné módy, ktoré majú využitie v automobilovom priemysle, záhradníctve). Umožuje tak mikrokontroléru v prerušení načítavať počet pulzov prichádzajúcich zo zrážkomera, kedy jeden pulz predstavuje hodnotu zrážok na úrovni 0.01 mm. Pulz prichádza v podobe signálu LOW, ktorý je privedený prostredníctvom integrovaného relé, ktoré sa prepne do stavu NO (z NC). K digitálnemu vstupu je pripojený pullup rezistor, ktorý drží úroveň HIGH, pokým dôjde k pulzu z preklápacieho vedra s prírastkom 0.01 mm. Nakoľko je na vstupe stále HIGH a do stavu LOW prechádza iba pri prípočte prírastku zrážok, prírastok sa deteguje metódou prerušenia FALLING, ktorá reaguje na zastupnú hranu. Medzi pulzami sa vykonáva debouncing s dĺžkou 15ms, ktorá zamedzuje pripočítaniu jedného pulzu viackrát z dôvodu zákmitu signálu. Za sekundu je tak možné zaznamenať až 66 pulzov, čo zodpovedá prírastku zrážok 0.66 mm. Zrážkomer má ochranu proti UV žiareniu, nedegraduje v čase, jeho vypuklé sklo, na ktoré sa zachytávajú zrážky má samočistiaci efekt. Prevádzka je tak plne bezúdržbová a spoľahlivá, nakoľko preklápacie vedro je emulované IR zrážkomerom a neobsahuje mechanickú časť ako klasické preklápacie vedro, kde hrozí aj jeho upchatie nečistotami. Pre zrážkomer sa využíva vývod Arduina / ESP s podporou prerušenia. Pulz sa pripočíta do volatile premennej, ktorá môže byť obslúžená v prerušení. Dáta zo zrážkomera tak tvoria súčet zrážok za obdobie po odoslanie dát. Webové rozhranie je taktiež rozšírené pre túto možnosť aj s grafickou a textovou vizualizáciou vývoja zrážok. Textový výstup umožňuje súčet zrážok za hodiny, dni až rok. Projekt zrážkomera je dostupný zatiaľ iba pre platformu Arduino, avšak s niekoľkými zmenami je možné prevádzkovať aj pod ESP32, ESP8266 Obe verzie projektov sú plne preložené do anglického, slovenského, ruského a nemeckého jazyka.

Hlavný prehľad - Hladinomer + Zrážkomer - aktuálne namerané údaje

Pre lokality, kde sa nenachádza pokrytie pevným internetom je možné využiť aj IoT sieť Sigfox, ktorá pokrýva takmer 90% Slovenska, vysielacie BTS stanice má umiestnené na TowerCom vysielačoch. Táto technológia umožňuje prenášať malé objemy správ s veľkosťou do 12B. V prípade projektu Hladinomer sa odosiela 4B hodnota výšky hladiny vody. Pre projekt rozšírený o zrážkomer sa odosiela hodnota 8B hodnota, ktorá je tvorená výškou hladiny vody a prírastkom zrážok. Nakoľko Sigfox dovoľuje preniesť denne maximálne 140 správ, je interval odosielania dát rozšírený na 11 minút. V oboch prípadoch tak správa neobsahuje plnú dĺžku, ktorú môže, t.j. 12B. Payload správy je možné doplniť aj o rôzne systémové informácie, napríklad: GEO údaje (zemepisná dĺžka / šírka), RSSI (Sila prijatého signálu), číslo správy a iné. Komunikačný modul, ktorý bol využitý pre projekt je Sigfox WISOL 868MHz UART modem. Tento modem komunikuje cez AT príkazy prostredníctvom UART rozhrania, ktoré je softvérovo emulované na mikrokontroléry. Komunikácia preberia rýchlosťou 9600 baud/s. WISOL modem je vybavený integrovaným u.FL konektorom na PCB modulu pre pripojenie antény, ktorá výrazne zdostupní pokrytie aj v interiéri / zatienenom exteriéri. Pre úspešný prenos dát sa vyžaduje pokrytie dvomi, najlepšie tromi a viac BTS stanicami pre úspešný prenos údajov. BTS-ky prenesenú informáciu odošlú do Sigfox backendu, kde je nutné urobiť Callback, ktorý sa spustí po prijatí dát. Callback musí vykonať HTTP, respektíve HTTPS request na doménu, kde webaplikácia beží s POST metódou a vhodne enkódovaným payloadom, ktorý backend webaplikácie očakáva.

Hladiomer + Zrážkomer - nastavenia Callbacku v Sigfox Backende:
  • Callbacks --> Custom --> New
  • Do Custom payload config napíšeme: cislo1::float:16 cislo2::uint:16
  • Do URL pattern: http://arduino.clanweb.eu/studna/data.php (alebo iná URL adresa vašho webservera, kde bude projekt bežať), možnosť využiť i HTTPS
  • V HTTP metóde zvolíme: POST
  • Do Body (tela správy) doplníme:
  • dazd={customData#cislo1}&hodnota={customData#cislo2}
  • Do Content-Type: application/x-www-form-urlencoded

  • Vizualizácie webového rozhrania - Hladinomer + Zrážkomer


    Hlavný prehľad - Hladinomer + Zrážkomer - aktuálne namerané údaje Historický prehľad nameraných údajov s časovou značkou - Hladiomer + Zrážkomer Grafická vizualizácia výšky hladiny vody v studni za 24 hodín, 7 dní, 1 rok Grafická vizualizácia zrážok zaznamenaných cez zrážkomer RG-11 Hydreon

    Detekčná charakteristika senzora HC-SR04 - 15°


    Hladinomer - HC-SR04 detekčná charakteristika - ultrazvukový senzor vzdialenosti

    Detekčná charakteristika senzora JSN-SR04T - vodotesný - 45°


    Hladinomer - JSN-SR04T detekčná charakteristika - ultrazvukový senzor vzdialenosti