Niveaumålerprojektet (vandstandsmonitor) består af en central webgrænseflade, der indsamler data fra sensorknudepunkter og visualiserer dem for brugeren. Aktuelle vandstandsdata vises i dashboardet sammen med konverteringen til brøndvolumen. Historiske vandstandsdata er også tilgængelige for brugeren i tabel- eller grafisk visualisering ved hjælp af linjegrafer. Webgrænsefladen er responsiv og tilpasser sig enhver skærm- og enhedsopløsning. Projektets webgrænseflade anvender en backend skrevet i PHP, der kan behandle indgående data fra anmodningen ved hjælp af HTTP POST-metoden. Backend korrigerer det målte niveau til det faktiske niveau baseret på den kendte dybde af brønden, beregner vandmængden i brønden ud fra denne parameter og brøndens diameter. Brugerne indtaster brøndens dybde og diameter i systemet baseret på proportionerne af deres egen brønd. Dataene sendes til webserveren af en mikrocontroller understøttet af teknologi (Ethernet / WiFi / LPWAN Sigfox), som udfører målinger hvert 300. sekund - dvs. 5 minutter. Ved transmission via LPWAN IoT netværket Sigfox sendes data hvert 11. minut, da modemmet er begrænset af netværket til maksimalt at transmittere 140 beskeder pr. dag. Vandstandsmåling udføres ved hjælp af ultralydssensorer - HC-SR04 eller dens vandtætte variant JSN-SR04T. Andre sensorer med trigger/ekko-signaler inkluderer RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX og Parallax PING)))™.
Princippet for måling med ultralydssensorer er at sende et Trigger-signal med en længde på 10 μs (mikrosekunder), der reflekterer fra vandoverfladen og vender tilbage til sensoren som Echo. Time-of-Flight-metoden bruges til at konvertere tiden mellem afsendelse og modtagelse af signalet til den differentielle vandstand målt af sensoren. En vigtig parameter for begge ultralydssensorer er strålebredden, eller detektionsområdet. HC-SR04-sensoren har en detektionsområde på 15°, hvilket gør den velegnet til mindre brønde og beholdere, men den er ikke vandtæt og har en betydelig risiko for korrosion (oxidation) på grund af fugtigheden i brønden. Derfor anbefales det at placere denne ultralydssensor over brønden. Den vandtætte sensor JSN-SR04T har en detektionsområde på 60°, hvilket begrænser dens anvendelse betydeligt og forhindrer brugen i smalle og små brønde (f.eks., brønde med en diameter på 4,5 meter). Ultralydssensorerne kræver minimal vedligeholdelse. Selv i tilfælde af en firkantet brønd indtastes diameteren som den indskrevne cirkels gennemsnit, der danner referenceværdien for vandcylinderen og brøndens volumen. Den maksimale målbare niveauhøjde (niveau) for sensorerne er omkring 400 til 450 cm (kendt fra databladet).
Firmware navn | Firmware funktion | ESP8266 | ESP32 |
---|---|---|---|
Ultra Low Power |
Firmware til ULP-applikationer med lavt strømforbrug (se ledningsdiagram). Firmwaren indlæses automatisk via det medfølgende ESPTOOL-værktøj, som køres med et .bat-script (i scriptet er det nødvendigt at ændre COM-porten på dit ESP-kort). Efter at have uploadet firmwaren og antaget, at ESP ikke har gemt SSID og adgangskode fra det tidligere projekt, starter WiFiManager, som bruges til at konfigurere det eksisterende WiFi-netværk. ESP vil begynde at udsende et åbent WiFi-netværk med SSID i AP-tilstand --> Hladinomer_AP. Efter tilslutning af klienten (Windows / Android / iOS) starter Captive-portalen på 192.168.4.1 (klienten bør omdirigeres automatisk). WiFiManager giver dig mulighed for at vælge et WiFi-netværk inden for rækkevidde i webgrænsefladen, indstille en adgangskode. Efter vellykket forbindelse af ESP til det specificerede WiFi-netværk og tildeling af IPv4 fra det givne område, vil Captive Portal blive slukket, ESP forbliver i STA-Station-tilstand. Efterfølgende vil sensorknuden begynde at sende data til webgrænsefladen niveaumåler . Næste gang sensornoden startes, starter Captive Portal og WiFiManager ikke længere, da WiFi-netværkskonfigurationen bevares permanent. Efter at have sendt dataene, skifter mikrocontrolleren til dyb dvaletilstand - Deep Sleep. Xtens-hovedprocessoren er slukket i dvaletilstand. ESP8266 vækkes via WAKE timer (jumper mellem GPIO16 og RST påkrævet), ESP32 via RTC Timer. |
ESP8266 firmware | ESP32 firmware |
StandBy |
Firmware til StandBy-tilstand af mikrocontrolleren, som med jævne mellemrum (5 min) sender målinger af vandstanden til webserveren og samtidig opretholder forbindelse med AP'en i LAN-netværket. Firmwaren indlæses automatisk via det medfølgende ESPTOOL-værktøj, som køres med et .bat-script (i scriptet er det nødvendigt at ændre COM-porten på dit ESP-kort). Efter at have uploadet firmwaren og antaget, at ESP ikke har gemt SSID og adgangskode fra det tidligere projekt, starter WiFiManager, som bruges til at konfigurere det eksisterende WiFi-netværk. ESP vil begynde at udsende et åbent WiFi-netværk med SSID i AP-tilstand --> Hladinomer_AP. Efter tilslutning af klienten (Windows / Android / iOS) starter Captive-portalen på 192.168.4.1 (klienten bør omdirigeres automatisk). WiFiManager giver dig mulighed for at vælge et WiFi-netværk inden for rækkevidde i webgrænsefladen, indstille en adgangskode. Efter vellykket forbindelse af ESP til det specificerede WiFi-netværk og tildeling af IPv4 fra det givne område, vil Captive Portal blive slukket, ESP forbliver i STA-Station-tilstand. Efterfølgende begynder sensorknuden at sende data til webgrænsefladen Niveaumåler. Næste gang sensornoden startes, starter Captive Portal og WiFiManager ikke længere, da WiFi-netværkskonfigurationen er permanent gemt. |
ESP8266 firmware | ESP32 firmware |
Webgrænsefladen bruger trigonometri til at estimere den målbare maksimale dybde af en brønd ved en kendt brønddiameter (en anden parameter til beregning af brøndvolumen). Webgrænsefladen giver brugeren mulighed for at beregne, til hvilken maksimal dybde af brønden hver af sensorerne er egnet baseret på dens egenskaber. Projektet er så nemt at bruge selv for lægmænd, der ikke ved, hvilken sensor der er bedst egnet til anvendelse i deres brønd. Den anvendte mikrocontroller spiller også en vigtig rolle i systemet. Til projektet er det muligt at bruge Arduino-platformen (Uno / Mega) i revision R3 med en identisk pinout, som kan tilsluttes et Ethernet-skjold, der kommunikerer via ICSP-interfacet. Det er også muligt at bruge Ethernet-moduler og forbinde dem direkte til hardware-SPI-benene på mikrocontrolleren. Ethernet-moduler fra Wiznet W5100, W5500, USR-ES1 understøttes. Ethernet-modulet ENC28J60 understøttes af MicroChip. Alle Ethernet-moduler giver HTTP-forbindelse til webserveren. WiFi-mikrocontrollere fra Espressif Systems - ESP8266 og ESP32 er også understøttet. Mikrocontrollere har flere driftstilstande: StandBy, StandBy + OTA med mulighed for fjernopladning af firmware via LAN-netværk og dyb dvaletilstand for ULP-applikationer - Deep Sleep. I dvaletilstand for ESP8266 er det nødvendigt at tilføje en fysisk jumper mellem GPIO16 (WAKE) og RST - se ledningsdiagram. ESP-mikrocontrollere tillader også implementering af HTTPS (krypteret) forbindelse med webserveren. ESP32 kan også bruges med PHY Ethernet-modul LAN8720 via RMII-interface, understøtter HTTP- og HTTPS-forbindelse. Både ESP8266- og ESP32-platformene bruger Root CA, som har udstedt et certifikat (Issuer) for webserverdomænet. Certifikatet er indlejret i mikrocontrollernes kildekode i .pem-format. For at certifikatet ikke skal optage plads i mikrocontrollerens RAM-hukommelse, indsættes det i mikrocontrollerens flashhukommelse - PROGMEM. Certifikatet fra certificeringsmyndigheden er gyldigt i 10 til 20 år, så det kræver ikke hyppig fornyelse af certifikatet. Data om den aktuelle vandstand og vandmængde i brønden er tilgængelige i JSON-format fra webgrænsefladen. Projektet kan integrere Level meter projektet via MQTT i hjemmeautomation (Hassio, Domoticz, Loxone) for at vise vandstanden i sit eget dashboard, f.eks. Grafana.
Bibliotekets navn | Bibliotek funktion | Hent |
---|---|---|
NewPing |
Bibliotek til AVR mikrocontrollere (ATmega) Arduino Uno / Nano / Mega. Det gør det muligt at udføre målinger med ultralydsafstandssensorer RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™. |
Hent |
NewPingESP8266 |
Bibliotek til ESP8266 og ESP32 mikrocontrollere. Det gør det muligt at udføre målinger med ultralydsafstandssensorer RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™. |
Hent |
Ethernet2 |
Bibliotek til AVR mikrocontrollere (ATmega) Arduino Uno / Nano / Mega. Det muliggør kommunikation med Ethernet-modulet Wiznet W5200 til W5500 via SPI-grænsefladen. |
Hent |
Ethernet3 |
Bibliotek til AVR mikrocontrollere (ATmega) Arduino Uno / Nano / Mega. Det muliggør kommunikation med Ethernet-modulet Wiznet W5500 V2 - USR-ES1 via SPI-interface. |
Hent |
UIPEthernet |
Bibliotek til AVR mikrocontrollere (ATmega) Arduino Uno / Nano / Mega. Det muliggør kommunikation med Ethernet-modulet ENC28J60 fra Microchip via SPI-interfacet. |
Hent |
For sider, hvor der ikke er fast internetdækning, er det også muligt at bruge LPWAN IoT-netværket Sigfox, som allerede dækker stort set hele Danmarks territorium. Denne teknologi giver dig mulighed for at transmittere små mængder beskeder op til 12B i størrelse. Ved niveaumålerprojektet sendes 4B vandstandsværdien (UINT_32). For et projekt udvidet med en regnmåler sendes værdien 8B værdi, som er dannet af vandstandens højde og stigningen i nedbør. Da Sigfox tillader, at der maksimalt kan transmitteres 140 beskeder om dagen, forlænges datatransmissionsintervallet til 11 minutter. I begge tilfælde indeholder meddelelsen ikke den fulde brugbare længde af nyttelasten. Nyttelastbeskeder kan også suppleres med forskellige systemoplysninger, for eksempel: GEO-data (længde/breddegrad) baseret på data fra GPS-tjenesten Sigfox Atlas, RSSI (Received Signal Strength), meddelelsesnummer m.fl. Kommunikationsmodulet, der blev brugt til projektet, er et Sigfox WISOL 868MHz UART LPWAN-modem. Dette modem kommunikerer via AT-kommandoer via UART-interfacet, som er software emuleret på mikrocontrollere. Kommunikationen vil tage over med en hastighed på 9600 baud/s. WISOL-modemet er udstyret med et integreret u.FL-stik på PCB-modulet til antennetilslutning, hvilket reducerer dækningen markant selv indendørs / skyggefuld udendørs. For vellykket datatransmission kræves dækning af to, fortrinsvis tre eller flere BTS-stationer for vellykket datatransmission. BTS'en sender den transmitterede information til Sigfox-backend'en, hvor det er nødvendigt at foretage et tilbagekald, som starter efter modtagelse af dataene. Tilbagekaldet foretager en HTTP- eller HTTPS-anmodning til det domæne, hvor webapplikationen kører med POST-metoden og en passende kodet nyttelast, som webapplikationens backend forventer.