Quellcodes des Projekts Levelmeter für Arduino-Mikrocontroller, ESP8266, ESP32, Bibliothek NewPing, Ethernet2, Ethernet3, UIPEthernet: Github-Projekt-Repository
Testen Sie den Projektwasserstandsmesser kostenlos mit Ihrer Hardware - online: HIER - Nur HTTP-Protokoll (Endora.cz Freehosting unterstützt keine HTTPS-Verbindungen).
Testen Sie den Projektwasserstandsmesser kostenlos mit Ihrer Hardware - online: HIER - HTTPS (verfügbar für ESP8266 und ESP32, Arduino + Ethernet unterstützt kein HTTPS)
Implementierung für ESP32 im ESP-IDF v4.2-Framework (4.0 kompatibel) verfügbar ab 4. Juni 2021 unter Verwendung von FreeRTOS und Aufgaben mit dem Queue-Sperrmechanismus.
Bei Interesse an den Quellcodes der Webanwendung kontaktieren Sie den Autor des Projekts in englischer Sprache unter: martinius96@gmail.com
Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 Ultraschall HC-SR04 JSN-SR04T Sigfox

Steuerungshardware - kompatible Mikrocontroller AVR / ESP



Übertragungstechnik Module - Ethernet / Sigfox IoT LPWAN



Kompatible Ultraschall-Distanzsensoren



Pegelmesser - Wasserstandswächter im Brunnen


Das Level Meter Project (Wasserstandsmonitor) besteht aus einem zentralen Webinterface, das dazu dient, Daten von Sensorknoten zu sammeln und für den Benutzer zu visualisieren. Aktuelle Wasserstandsdaten werden zusammen mit der Umrechnung in das Brunnenvolumen im Dashboard dargestellt, historische Wasserstandsdaten stehen dem Benutzer auch in tabellarischer oder grafischer Visualisierung mit Liniendiagrammen zur Verfügung. Das Webinterface ist reaktionsschnell und kann sich an jede Bildschirm- und Geräteauflösung anpassen. Die Webschnittstelle des Projekts verwendet ein in PHP geschriebenes Backend, das eingehende Daten aus der Anfrage mithilfe der HTTP-POST-Methode verarbeiten kann. Das Backend korrigiert das gemessene Niveau auf das tatsächliche Niveau basierend auf der bekannten Tiefe des Brunnens, berechnet das Wasservolumen im Brunnen aus diesem Parameter und dem Durchmesser des Brunnens. Die Tiefe und der Durchmesser des Bohrlochs werden vom Benutzer anhand der Proportionen seines Bohrlochs in das System eingegeben. Die Daten werden von einem technisch unterstützten Mikrocontroller (Ethernet / WiFi / LPWAN Sigfox) an den Webserver gesendet, der alle 300 Sekunden Messungen durchführt - d. 5 Minuten, bzw. bei der Übertragung über das LPWAN IoT-Netzwerk Sigfox werden alle 11 Minuten Daten gesendet, da das Modem durch das Netzwerk auf maximal 140 Nachrichten pro Tag beschränkt ist. Die Wasserstandsmessung erfolgt mit Ultraschallsensoren - HC-SR04 oder seine wasserdichte Variante JSN-SR04T. Andere Sensoren mit Trigger-/Echosignalen der Serien RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™ können ebenfalls verwendet werden.


Das Prinzip der Messung von Ultraschallsensoren besteht darin, ein Triggersignal mit einer Länge von 10 μs (Mikrosekunden) zu senden, das vom Wasserspiegel abprallt und zum Empfänger zurückkehrt - Echo. Die Time-of-Flight-Methode wird verwendet, um die Zeit zwischen Senden und Empfangen des Signals neu zu berechnen, um den Abstand des Wasserstands von dem Sensor zu bestimmen, der sich an der Spitze des Brunnens befindet. Die Umrechnungsformel berücksichtigt die Schallgeschwindigkeit 343 m / s bei einer Temperatur von 20 ° C. Ein wichtiger Parameter für beide Ultraschallsensoren ist die Strahlbreite, also die Detektionscharakteristik. Der HC-SR04 Sensor hat eine 15° Erkennungscharakteristik. Der Strahl ist relativ schmal und der Sensor ist auch für schmalere Brunnen und Tanks geeignet, jedoch ist er nicht wasserdicht und birgt ein hohes Korrosionsrisiko (Oxidation) durch Feuchtigkeit im Brunnen. Aus diesem Grund empfiehlt es sich, diesen Ultraschallsensor über dem Brunnen zu platzieren. Der wasserdichte Sensor JSN-SR04T hat eine Erkennungscharakteristik von 60°, was ihn erheblich einschränkt und seinen Einsatz in engen Brunnen verhindert, da sich der Strahl mit der Entfernung aufweitet und einen Brunnen mit einem Durchmesser von mehreren Metern (6 Meter Durchmesser bei einer Brunnentiefe) benötigt von 4,5 Metern). Ultraschallsensoren sind völlig wartungsfrei. Der Sensor JSN-SR04T verfügt über eine elektronische Steuerplatine, die weder Feuchtigkeit noch Wasser ausgesetzt werden darf. Das standardmäßige abgeschirmte Kommunikationskabel ist 2,5 Meter lang, es ist möglich, Gegenstücke desselben Kabels anzuschließen, um die Leitung zu verlängern. Bei einem quadratischen Brunnen geht der Durchmesser des einbeschriebenen Kreises in den Mittelwert ein, der den Bezugswert des Wasserzylinders für die Berechnung des Brunnenvolumens bildet. Der Fehler des gesamten Bohrlochvolumens liegt in diesem Fall bei ~ 12,5 %. Die von den Sensoren maximal messbare Füllstandshöhe (Level) beträgt ca. 400 bis 450 cm (aus Datenblatt bekannt).

Andere Arten von Wasserstandssensoren, die integriert werden können (Sie müssen Ihre eigene Firmware erstellen):
  • Laser (LiDAR)
  • Hydrostatisch
  • Elektrostatisch (kapazitiv / induktiv)
  • Druck (Differenzdruck / mit kompensierendem Atmosphärendrucksensor)
  • Optisch
  • Mechanisch (Schwimmer)
  • Magnet (Halle)
  • Mikrowelle (Radar)
  • Ultraschall – eine andere Ausgabeart (UART, RS-232, Stromschleife, Modbus TCP / RTU, M-bus, RS-485, PROFINET, CAN)
  • Hinweis: Wenn der Wasserstand mikrocontrollerseitig von unten neu berechnet wird, müssen Sie im Webinterface die Brunnentiefe auf 0 cm einstellen.

  • Videodemonstration des Webinterface - Levelmeter:



    Ultraschallsensoren sind geeignet für:


  • Ausgehobene Brunnen
  • Klärgruben und Senkgruben
  • Bäche und Seen
  • Regenwassertanks aus Kunststoff
  • Stärke (Messung der Massenfüllung)
  • Behälter (Abfallüberwachung, Sammelbehälterbefüllung)
  • Kessel (Überwachung von Holz, Pellets, Kohle, Hackschnitzel)
  • Schächte und Keller (Grundwasserüberwachung)
  • Produktion (Erkennung von Produkten, deren Höhe und Menge, Höhe des gewickelten Materials)
  • Parkplätze (Erkennung von freien und belegten Parkplätzen)

  • Ultraschallsensoren sind nicht geeignet für:


  • Gebohrte Brunnen (aufgrund von Erkennungsmerkmalen - breitstrahlend)
  • Rohre und Röhren (aufgrund von Erkennungsmerkmalen - breitstrahlend)
  • Zu Brunnen mit Nebenfluss (turbulente Oberfläche dämpft Ultraschall, Messung ist unmöglich / schrittweise)
  • An Orten mit einer plötzlichen Temperaturänderung (die Temperatur beeinflusst die Zeit der Schallausbreitung, sodass sogar der stationäre Pegel zu schwanken scheint)
  • Vakuumtanks (Messung nicht möglich)

  • Plug n play firmware - Ultra Low Power / StandBy


    Kompilierte Firmware zum sofortigen Hochladen auf den Mikrocontroller verfügbar (erfordert keine Installation der Bibliothek).
    Firmware-Name Firmware-Funktion ESP8266 ESP32
    Ultra Low Power

    Firmware für ULP-Anwendungen mit geringer Stromaufnahme (siehe Schaltplan). Die Firmware wird über das mitgelieferte ESPTOOL-Tool automatisch geladen, das mit einem .bat-Skript ausgeführt wird (im Skript ist es notwendig, den COM-Port Ihres ESP-Boards zu ändern). Nach dem Hochladen der Firmware und unter der Annahme, dass ESP nicht die SSID und das Passwort aus dem vorherigen Projekt gespeichert hat, startet WiFiManager, der zur Konfiguration des bestehenden WiFi-Netzwerks verwendet wird. ESP beginnt mit der Übertragung eines offenen WLAN-Netzwerks mit SSID im AP-Modus --> Hladinomer_AP. Nach dem Verbinden des Clients (Windows / Android / iOS) startet das Captive Portal auf 192.168.4.1 (der Client sollte automatisch umgeleitet werden). Mit WiFiManager können Sie ein WiFi-Netzwerk in Reichweite im Webinterface auswählen und ein Passwort festlegen. Nachdem ESP erfolgreich mit dem angegebenen WLAN-Netzwerk verbunden und IPv4 aus dem angegebenen Bereich zugewiesen wurde, wird das Captive Portal deaktiviert, ESP bleibt im STA-Station-Modus. Anschließend beginnt der Sensorknoten mit der Übertragung von Daten an das Webinterface Füllstandsmessgeräte . Beim nächsten Start des Sensorknotens werden Captive Portal und WiFiManager nicht mehr gestartet, da die WLAN-Netzwerkkonfiguration dauerhaft erhalten bleibt. Nach dem Senden der Daten geht der Mikrocontroller in den Tiefschlafmodus. Der Hauptprozessor des Xtens ist im Schlafmodus ausgeschaltet. ESP8266 wird per WAKE Timer geweckt (Jumper zwischen GPIO16 und RST erforderlich), ESP32 per RTC Timer.

    ESP8266 Firmware ESP32 Firmware
    StandBy

    Firmware für den StandBy-Modus des Mikrocontrollers, der in regelmäßigen Abständen (5 min) Messwerte des Wasserstands an den Webserver sendet und gleichzeitig die Verbindung zum AP im LAN-Netzwerk aufrechterhält. Die Firmware wird über das mitgelieferte ESPTOOL-Tool automatisch geladen, das mit einem .bat-Skript ausgeführt wird (im Skript ist es notwendig, den COM-Port Ihres ESP-Boards zu ändern). Nach dem Hochladen der Firmware und unter der Annahme, dass ESP nicht die SSID und das Passwort aus dem vorherigen Projekt gespeichert hat, startet WiFiManager, der zur Konfiguration des bestehenden WiFi-Netzwerks verwendet wird. ESP beginnt mit der Übertragung eines offenen WLAN-Netzwerks mit SSID im AP-Modus --> Hladinomer_AP. Nach dem Verbinden des Clients (Windows / Android / iOS) startet das Captive Portal auf 192.168.4.1 (der Client sollte automatisch umgeleitet werden). Mit WiFiManager können Sie ein WiFi-Netzwerk in Reichweite im Webinterface auswählen und ein Passwort festlegen. Nachdem ESP erfolgreich mit dem angegebenen WLAN-Netzwerk verbunden und IPv4 aus dem angegebenen Bereich zugewiesen wurde, wird das Captive Portal deaktiviert, ESP bleibt im STA-Station-Modus. Anschließend beginnt der Sensorknoten mit der Übertragung von Daten an das Webinterface Füllstandsmesser . Beim nächsten Start des Sensorknotens werden Captive Portal und WiFiManager nicht mehr gestartet, da die WiFi-Netzwerkkonfiguration dauerhaft erhalten bleibt.

    ESP8266 Firmware ESP32 Firmware

    Funktionsprinzip des Füllstandsmessers - Blockschaltbild


    Hladinomer do žumpy, septiku, studne, princíp merania - ultrazvukový senzor vzdialenosti

    Das Webinterface verwendet Trigonometrie, um die messbare maximale Tiefe eines Bohrlochs bei einem bekannten Bohrlochdurchmesser abzuschätzen (ein weiterer Parameter zur Berechnung des Bohrlochvolumens). Über das Webinterface kann der Benutzer berechnen, bis zu welcher maximalen Tiefe des Bohrlochs jeder der Sensoren aufgrund seiner Eigenschaften geeignet ist. Das Projekt ist auch für Laien, die nicht wissen, welcher Sensor für den Einsatz in ihrem Brunnen besser geeignet ist, so einfach zu handhaben. Auch der verwendete Mikrocontroller spielt eine wichtige Rolle im System. Für das Projekt ist es möglich, die Arduino-Plattform (Uno / Mega) in der Revision R3 mit identischer Pinbelegung zu verwenden, die an ein Ethernet-Shield angeschlossen werden kann, das über die ICSP-Schnittstelle kommuniziert. Es ist auch möglich, Ethernet-Module zu verwenden und diese direkt mit den Hardware-SPI-Pins des Mikrocontrollers zu verbinden. Ethernet-Module von Wiznet W5100, W5500, USR-ES1 werden unterstützt. Das Ethernet-Modul ENC28J60 wird von MicroChip unterstützt. Alle Ethernet-Module bieten HTTP-Konnektivität mit dem Webserver. WiFi-Mikrocontroller von Espressif Systems - ESP8266 und ESP32 werden ebenfalls unterstützt. Mikrocontroller haben mehrere Betriebsmodi: StandBy, StandBy + OTA mit der Möglichkeit des Remote-Firmware-Uploads über das LAN-Netzwerk und den Deep-Sleep-Modus für ULP-Anwendungen - Deep Sleep. Im Schlafmodus für ESP8266 ist es notwendig, einen physikalischen Jumper zwischen GPIO16 (WAKE) und RST hinzuzufügen - siehe Schaltplan. ESP-Mikrocontroller ermöglichen auch die Implementierung von HTTPS (verschlüsselt)-Konnektivität mit dem Webserver. Sowohl die ESP8266- als auch die ESP32-Plattform verwenden die Root-CA, die ein Zertifikat (Aussteller) für die Webserverdomäne ausgestellt hat. Das Zertifikat ist im Quellcode der Mikrocontroller im .pem-Format eingebettet. Damit das Zertifikat keinen Platz im RAM-Speicher des Mikrocontrollers belegt, wird es in den Flash-Speicher des Mikrocontrollers - PROGMEM - eingefügt. Das Zertifikat der Zertifizierungsstelle ist 10 bis 20 Jahre gültig, erfordert also keine häufige Erneuerung des Zertifikats. Daten zum aktuellen Wasserstand und Wasservolumen im Brunnen stehen im JSON-Format über das Webinterface zur Verfügung. Das Projekt kann das Level-Meter-Projekt über MQTT in die Hausautomation (Hassio, Domoticz, Loxone) integrieren, um den Wasserstand in einem eigenen Dashboard anzuzeigen, z.B. Grafana.

    Softwareimplementierungen für Arduino, ESP8266, ESP32 (erfordert Bibliotheksinstallation): Hier verfügbar

    Verfügbare Bibliotheken für Mikrocontroller (Arduino / ESP)


    Bibliotheksarchiv (.zip) erweitern auf C:/Users/[User]/Documents/Arduino/libraries
    Name der Bibliothek Bibliotheksfunktion Herunterladen
    NewPing

    Bibliothek für AVR-Mikrocontroller (ATmega) Arduino Uno / Nano / Mega. Es ermöglicht Messungen mit Ultraschall-Distanzsensoren RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™.

    Herunterladen
    NewPingESP8266

    Bibliothek für ESP8266- und ESP32-Mikrocontroller. Es ermöglicht Messungen mit Ultraschall-Distanzsensoren RCW, US-XXX, IOE-SR0X, SR0X, HC-SR0X, HY-SRF0X, DYP-MEXXX, Parallax PING)))™.

    Herunterladen
    Ethernet2

    Bibliothek für AVR-Mikrocontroller (ATmega) Arduino Uno / Nano / Mega. Es ermöglicht die Kommunikation mit dem Ethernet-Modul Wiznet W5200 bis W5500 über die SPI-Schnittstelle.

    Herunterladen
    Ethernet3

    Bibliothek für AVR-Mikrocontroller (ATmega) Arduino Uno / Nano / Mega. Es ermöglicht die Kommunikation mit dem Ethernet-Modul Wiznet W5500 V2 - USR-ES1 über die SPI-Schnittstelle.

    Herunterladen
    UIPEthernet

    Bibliothek für AVR-Mikrocontroller (ATmega) Arduino Uno / Nano / Mega. Es ermöglicht die Kommunikation mit dem Ethernet-Modul ENC28J60 von Microchip über die SPI-Schnittstelle.

    Herunterladen

    Für Standorte, an denen keine feste Internetabdeckung besteht, kann auch das LPWAN-IoT-Netz Sigfox genutzt werden, das fast 90 % des geografischen Gebiets Deutschlands abdeckt. Es werden größere Städte und angrenzende Ortschaften des ländlichen und ländlichen Raums abgedeckt.Diese Technologie ermöglicht es, kleine Nachrichtenmengen bis zu einer Größe von 12B zu übertragen. Bei einem Levelmeter-Projekt wird der 4B Wasserstandswert (UINT_32) gesendet. Bei einem um einen Niederschlagsmesser erweiterten Projekt wird der Wert 8B gesendet, der aus der Höhe des Wasserspiegels und der Niederschlagszunahme gebildet wird. Da Sigfox maximal 140 Nachrichten pro Tag zulässt, verlängert sich das Datenübertragungsintervall auf 11 Minuten. In beiden Fällen enthält die Nachricht nicht die volle nutzbare Länge der Nutzlast. Nutzlastnachrichten können auch mit verschiedenen Systeminformationen ergänzt werden, zum Beispiel: GEO-Daten (Längengrad / Breitengrad) basierend auf Daten des GPS-Dienstes Sigfox Atlas, RSSI (Received Signal Strength), Nachrichtennummer und andere. Das für das Projekt verwendete Kommunikationsmodul ist ein Sigfox WISOL 868MHz UART LPWAN Modem. Dieses Modem kommuniziert über AT-Befehle über die UART-Schnittstelle, die auf Mikrocontrollern per Software emuliert wird. Die Kommunikation wird mit einer Geschwindigkeit von 9600 Baud/s übernommen. Das WISOL-Modem ist mit einem integrierten u.FL-Stecker auf dem PCB-Modul für den Antennenanschluss ausgestattet, der die Abdeckung auch im Innenbereich / im Schatten im Freien deutlich reduziert. Für eine erfolgreiche Datenübertragung ist eine Abdeckung durch zwei, vorzugsweise drei oder mehr BTS-Stationen für eine erfolgreiche Datenübertragung erforderlich. Die BTS sendet die übermittelten Informationen an das Sigfox-Backend, wo ein Rückruf erforderlich ist, der nach Erhalt der Daten beginnt. Der Callback stellt eine HTTP- oder HTTPS-Anfrage an die Domäne, in der die Webanwendung ausgeführt wird, mit der POST-Methode und einer entsprechend codierten Nutzlast, die das Webanwendungs-Back-End erwartet.


    Abdeckung Deutschlands durch das LPWAN IoT Sigfox Netzwerk:


    Abdeckung von Deutschland IoT LPWAN durch Sigfox-Netzwerk - Füllstandsmesser zum Brunnen Abdeckung von Austria, Switzerland IoT LPWAN durch Sigfox-Netzwerk - Füllstandsmesser zum Brunnen

    Sigfox-Backend-Callback-Setup für Webanwendungstests

    Pegelmesser:
  • Callbacks --> Custom --> New
  • In "Benutzerdefinierte Payload-Konfiguration" schreiben wir: cislo1::uint:16
  • Wir werden das "URL-Muster" hinzufügen: http://arduino.clanweb.eu/studna_s_prekladom/data.php (oder eine andere URL Ihres Webservers, auf dem das Projekt ausgeführt wird), die Möglichkeit, HTTPS zu verwenden
  • Bei der HTTP-Methode wählen wir: POST
  • Wir werden zum Body (Nachrichtentext) hinzufügen:
  • hodnota={customData#cislo1}&token=123456789
  • Bei "Content-Type" wählen wir die Option: application/x-www-form-urlencoded

  • Screenshots der Webapp zur Wasserstandsüberwachung


    Meter für Webanwendungsprojektebene. Es visualisiert den Wasserstand und das Wasservolumen im Brunnen mit automatischer Wiederherstellung der Messdaten. Meter für Webanwendungsprojektebene. Historische Daten in tabellarischer Darstellung mit der Möglichkeit, den Datensatz zu löschen. Meter für Webanwendungsprojektebene. Alarmvisualisierung des maximalen und minimalen Füllstands im Brunnen für den aktuellen Tag, Woche, Monat. Meter für Webanwendungsprojektebene. Darstellung des Wasserstands über der Zeit durch Liniendiagramme. Geschichte bis zu einem Jahr zurück. 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