Eksempel på kildekoder til Arduino, ESP8266, ESP32 (Ethernet / WiFi / LoRaWAN): Github-projektlager
IoT-dashboardet med din hardware kan prøves her: ONLINE IoT instrumentbræt
Hvis du er interesseret i kildekoderne til webapplikationen, så kontakt forfatteren af projektet på ENGELSK på: martinius96@gmail.com

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

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

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

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å mikrocontrollerens side, skal du indstille brønddybden til 0 cm i webgrænsefladen.

  • Webgrænseflade videodemonstration - niveaumåler:



    Ultralydssensorer er velegnede til:


  • Gravede brønde
  • Septiktanke og afløbsbrønde
  • Vandløb og søer
  • Plastregnvandsbeholdere
  • Bulkfyldningsmåling (f.eks., materialer i store mængder)
  • Containere (overvågning af affald, påfyldning af opsamlingsbeholdere)
  • Kedler (overvågning af træ, pellets, kul, træflis)
  • Skakte og kældre (oversvømmelses- og grundvandsovervågning)
  • Produktion (detektion af produkter, deres højde og antal, højden af ​​sårmateriale)
  • Parkeringspladser (registrering af ledige og optagede 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)
  • Brønde med biflod (virvlet overflade dæmper ultralyd, måling er umulig / trinvis)
  • Steder med pludselige temperaturændringer (temperaturen påvirker lydens udbredelse, så selv et stationært niveau kan synes 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. 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.

    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


    Vandbrøndsniveaumonitor - webapp - hovedside - Sidst målte værdier med automatisk opdatering - AJAX Vandbrøndsniveaumonitor - webapp - Historiske målte data med tidsstempel Vandbrøndsniveaumonitor - Optag, minimum, maksimum værdi pr. dag, uge, måned Vandbrøndsniveaumonitor - graf over vandstanden i tid - uge / år ESP32 - FreeRTOS - ESP-IDF - ultralydssensormåling og dataoverførsel til webserver via HTTPS, POST-overførselsmetode ESP32 - FreeRTOS - ESP-IDF - ultralydssensormåling og dataoverførsel til webserver via HTTPS, POST-overførselsmetode Understøttet hardware til projekt på godt niveau - Arduino - Ethernet og WiFi-forbindelse - ESP8266 - ESP32 Sensornode ESP32 med PHY Ethernet-modul LAN7820 og ultralydssensor JSN-SR04T