Kildekoder til Arduino, ESP8266, ESP32, NewPing bibliotek: Github-projektlager
Prøv projektniveaumåleren gratis med din hardware online nu: HER - Kun HTTP-protokol (Endora.cz freehosting understøtter ikke HTTPS-forbindelser).
Prøv projektniveaumåleren gratis med din hardware: HER - HTTPS (tilgængelig for ESP8266 og ESP32, Arduino + Ethernet understøtter ikke HTTPS)
Implementering for ESP32 tilgængelig i ESP-IDF v4.2 frameworket (4.0-kompatibel) tilgængelig fra 4. juni 2021 ved hjælp af FreeRTOS og opgaver med kø-låsemekanismen.
Hvis du er interesseret i kildekoderne til webapplikationen, så kontakt forfatteren af projektet på ENGELSK på: martinius96@gmail.com
Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 Ultralyd HC-SR04 JSN-SR04T Sigfox IoT WiFi OTA ULP

Kontrol hardware - kompatible AVR / ESP mikrocontrollere



Transmissionsteknologimoduler - Ethernet / Sigfox IoT



Kompatible ultralydsafstandssensorer



Niveaumåler - vandstandsmåler i brønden


Niveaumålerprojektet (vandstandsmonitor) består af en central webgrænseflade, der tjener til at indsamle data fra sensorknudepunkter og visualisere dem for brugeren. Aktuelle vandstandsdata er repræsenteret i dashboardet sammen med konverteringen til brøndvolumen, historiske vandstandsdata er også tilgængelige for brugeren i tabel- eller grafisk visualisering med linjegrafer. Webgrænsefladen er responsiv, den kan tilpasse sig enhver skærm- og enhedsopløsning. Projektets webgrænseflade bruger 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 baseret på den kendte dybde af brønden, beregner mængden af vand i brønden ud fra denne parameter og brøndens diameter. Brøndens dybde og diameter indtastes i systemet af brugeren baseret på proportionerne af hans 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, eller ved transmission via LPWAN IoT netværk Sigfox sendes data hvert 11. minut, da modemmet er begrænset af netværket til maksimalt at transmittere 140 beskeder pr. Vandstandsmåling udføres ved hjælp af ultralydssensorer - HC-SR04, eller dens vandtætte variant JSN-SR04T, andre sensorer med trigger/ekko-signaler fra RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™.

Water Level Monitor webapp dashboard in OS Android with automatic data update via jQuery

Princippet for måling af ultralydssensorer er at sende et Trigger-signal med en længde på 10 μs (mikrosekunder), som hopper af vandstanden og vender tilbage til modtageren - Echo. Time-of-Flight-metoden bruges til at konvertere tiden mellem afsendelse og modtagelse af signalet til den differentielle vandstand fra sensoren. En vigtig parameter for begge ultralydssensorer er strålebredden, med andre ord detektionskarakteristikken. HC-SR04-sensoren har en 15° detektionskarakteristik. Strålen er forholdsvis smal og sensoren er også velegnet til smallere brønde og tanke, men den er ikke vandtæt og har stor risiko for korrosion (oxidation) på grund af tilstedeværelsen af fugt i brønden. Af denne grund er det tilrådeligt at placere denne ultralydssensor over brønden. Den vandtætte sensor JSN-SR04T har en detektionskarakteristik på 60°, hvilket begrænser den betydeligt og forhindrer dens brug i smalle brønde, da strålen udvides med afstanden og kræver en brønd med en diameter på flere meter (6 meter i diameter i en brønddybde) på 4,5 meter). Ultralydssensorer er fuldstændig vedligeholdelsesfrie. I tilfælde af en firkantet brønd indtastes diameteren af den indskrevne cirkel i gennemsnittet, som vil danne referenceværdien for vandcylinderen og brøndens volumen. Den maksimale målbare niveauhøjde (niveau) af sensorerne er omkring 400 til 450 cm (kendt fra databladet).

Andre typer vandstandssensorer, der kan integreres (du skal oprette din egen firmware):
  • Laser (LiDAR)
  • Hydrostatisk
  • Elektrostatisk (kapacitiv / induktiv)
  • Tryk (differens / med kompenserende atmosfærisk tryksensor)
  • Optisk
  • Mekanisk (flydende)
  • Magnetisk (Hall)
  • Mikrobølgeovn (radar)
  • Ultralyd - en anden type output (UART, RS-232, strømsløjfe, Modbus TCP / RTU, M-bus, RS-485, PROFINET, CAN)
  • Bemærk: Hvis vandstanden genberegnes fra bunden på mikrocontrollersiden, skal du indstille brønddybden til 0 cm i webgrænsefladen.

  • Webgrænseflade videodemonstration - niveaumåler:



    Ultralydssensorer er velegnede til:


  • Gravede brønde
  • Septik og afløbsbrønde
  • Vandløb og søer
  • Regnvandsbeholdere i plast
  • Styrke (måling af bulkfyldning)
  • Containere (affaldsovervågning, påfyldning af indsamlingsbeholdere)
  • Kedler (overvågning af træ, piller, kul, træflis)
  • Skakte og kældre (oversvømmelse / grundvandsovervågning)
  • Produktion (påvisning af produkter, deres højde og mængde, højde af sårmateriale)
  • Parkeringspladser (registrering af ledige og besatte parkeringspladser)

  • Ultralydssensorer er ikke egnede til:


  • Borede brønde (på grund af detektionskarakteristika - bred stråle)
  • Rør og rør (på grund af detektionskarakteristika - bred stråle)
  • Til brønde med biflod (kruset overflade dæmper ultralyd, måling er umulig / trinvis)
  • På steder med en pludselig ændring i temperatur (temperaturen påvirker tidspunktet for lydudbredelse, så selv det stationære niveau ser ud til at svinge)
  • Vakuumtanke (måling ikke mulig)
  • Detektionskarakteristika for ultralydsafstandssensorer - MATLAB scripts:
  • HC-SR04 - 15°
  • JSN-SR04T - 60°

  • Plug n' play firmware - Ultra Low Power / StandBy


    Kompileret firmware tilgængelig til øjeblikkelig upload til mikrocontrolleren uden behov for at installere biblioteker!
    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

    WiFi-netværkskonfiguration via WiFiManager - Plug n' play firmware


    WiFi-netværk Hladinomer_AP, Captive Portal og WiFiManager-webgrænseflade på Android

    Princip for niveaumålerdrift - Blokdiagram


    Niveaumåler til afløbsbrønd, septiktank, brønd, måleprincip - ultralydsafstandssensor

    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. 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.

    Softwareimplementeringer til Arduino, ESP8266, ESP32 (kræver biblioteksinstallation): Tilgængelig her

    Tilgængelige biblioteker til mikrocontrollere (Arduino / ESP)


    Biblioteksarkiv (.zip) udvides til C:/Users/[User]/Documents/Arduino/libraries
    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.


    Dækning af Danmark af LPWAN IoT Sigfox-netværket:


    Dækning af Danmark af LPWAN IoT Sigfox-netværket - Niveaumåler til en gravet brønd

    Sigfox backend callback opsætning til webapplikationstest

    Niveaumåler:
  • Callbacks --> Custom --> New
  • Vi vil skrive i Custom payload config: cislo1::uint:16
  • Vi skriver i URL-mønsteret: http://arduino.clanweb.eu/studna_s_prekladom/data.php (eller en anden URL på din webserver, hvor projektet skal køre), muligheden for at bruge HTTPS
  • I HTTP-metoden skal du vælge: POST
  • Vi tilføjer til Body (beskedtekst):
  • hodnota={customData#cislo1}&token=123456789
  • Til Content-Type vi vil skrive: application/x-www-form-urlencoded

  • Skærmbilleder af webgrænsefladen til niveaumålerprojektet


    WaterWell Level monitor - webapp - main page - Last measured values with automatic refresh - AJAX WaterWell Level monitor - webapp - Historical measured datas with timestamp WaterWell Level monitor - Record, minimal, maximal value per day, week, month WaterWell Level monitor - graph of water level in time - week / year ESP32 - FreeRTOS - ESP-IDF - ultrasonic sensor measurement and data transfer to webserver via HTTP, POST transfer method ESP32 - FreeRTOS - ESP-IDF - ultrasonic sensor measurement and data transfer to webserver via HTTPS, POST transfer method Supported hardware for well level project - Arduino - Ethernet and WiFi connectivity - ESP8266 - ESP32