Hochwasserpegel selbst bauen

DigiSelfTrans (Algorithmenküche 0)

Bitte beachten Sie: Sobald Sie sich das Video ansehen, werden Informationen darüber an Youtube/Google übermittelt. Weitere Informationen dazu finden Sie unter Google Privacy.

Ziel des Projekts

Im Rahmen des Projekts "DigiSelfTrans" entwickeln wir gemeinsam mit dem Deutschen Roten Kreuz Kreisverband Vulkaneifel e.V. eine IoT-Lösung zur Frühwarnung bei Hochwasser.
Ein Ultraschallsensor misst regelmäßig den Abstand zur Wasseroberfläche und wir senden die Werte über LoRaWAN an die Cloud.

Die Ziele:

  • Klimafolgen durch Technik besser beherrschen
  • Mit Ultraschallsensoren präzise Wasserstände messen
  • Datentransfer über LoRaWAN / TTN realisieren
  • DeepSleep-Modus und Energieoptimierung nutzen
  • Citizen-Science-Projekt mit eigener Station umsetzen

Warum nicht selbst den Bach in der Nähe überwachen?

Der technische und finanzielle Aufwand ist gering, das Risiko durch Hochwasser aber hoch. Mit LoRaWAN und IoT-Plattformen, über welche Alarme ausgelöst werden, sobald der Bach einen festgelegten Höchststand überschreitet, lässt sich ein selbstgebautet Frühwarnsystem umsetzen. Frühzeitiges Monitoring hilft, Gefahren zu erkennen und Schäden durch rechtzeitige Maßnahmen zu vermeiden.

Aufbau des Hochwasserpegels

12- Was ist LoRa?

Bitte beachten Sie: Sobald Sie sich das Video ansehen, werden Informationen darüber an Youtube/Google übermittelt. Weitere Informationen dazu finden Sie unter Google Privacy.

Das Gehäuse

Ein handelsübliches PVC-Rohr, Schraubmuffen, ein Adapter um den Ultraschallsensor zu befestigen und eine Abschlusskappe sorgen für ein günstiges und wasserdichtes Gehäuse. 
Um den Pegel mit Solarenergie zusätzlich zu versorgen, benötigen wir zusätzlich eine Kabeldurchführung

Details zum Gehäuse

PVC-Rohr

Wir nutzen PVC-Rohre mit 50mm Durchmesser (außen) und 2,4mm Wandstärke als Basis für unseren Hochwasserpegel. Die Platine ist extra dafür angepasst, sodass sie hineinpasst und das Pegelgehäuse handlich bleibt.

Pro Hochwasserpegel benötigen wir ca. 22cm Rohr, welches wir mit einer Handsäge zurechtschneiden.

Muffen & Kabeldurchführung

Damit der Hochwasserpegel einfach gewartet werden kann, muss ein Verschluss gewählt werden, der aufschraubt werden kann, ohne die Platine und die innenliegenden Kabel zu verdrehen. 

An die untere Seite setzen wir eine 2-fach Klebemuffe. In die glatte Seite können wir einen Reduzierring mit Innengewinde setzen. Dort lässt sich unser Ultraschallsensor einfach festdrehen. 

Achtung: andere Ultraschallsensoren haben gegebenenfalls andere Gewinde. Wir verwenden neben dem Maxbotix auch den DFRobot-Ultraschallsensor. Dieser kommt mit einem metrischen Gewinde. Einen passenden Adapter haben wir aus PETG 3D-Gedruckt (Datei).

Für das "obere" Ende haben wir eine Klebemuffe mit Außengewinde gewählt, die dann mit einer Schraubkappe verschlossen werden kann. In die Klebemuffe bohren wir ein 11mm Loch und schneiden mit einem Gewindeschneider ein 12x1,5mm Gewinde hinein. Hier wird später das Kabel für das Solarpanel durchgeführt. Damit das Ganze dicht bleibt, verwenden wir eine Kabeldurchführung.

PVC-Kleber

Wir verwenden PVC-Kleber (PVC-U Kleber 125ml Tube), um die Muffen und Kabelduchführungen fest miteinander zu verbinden. Der Kleber dichtet zusätzlich ab, sodass bei Regen kein Wasser in den Pegel gelangen kann.

Achtung: Bedienungsanleitung beachten, nicht in geschlossenen Räumen verwenden.

Die Platine

Funktionsweise

Unsere Platine muss in das PVC-Rohr passen und soll außerdem mit Solar und Akku betrieben werden. Wir verwenden einen ESP32 und ein Featherwing Lora Funkmodul. Über einen Grove-Anschluss schließen wir den Ultraschallsensor an. Die Pinbelegung für unsere beiden Sensoren sind unterschiedlich, weshalb wir zwei Anschlüsse geplant haben. 

Achtung: das Anschließen des Ultraschallsensors an die falsche Buchse kann zu Schäden am Sensor führen!

Außerdem dürfen unsere Akku bei zu hohen oder zu niedrigen Temperaturen nicht geladen oder entladen werden, weshalb wir auch einen one-Wire-Temperatursensor eingeplant haben. 

Lötanleitung

Unterschied Batterie zu Akku+Solar. Unterschied Ultraschallsensoren.

Videoreihe verlinken

Komponenten anschließen
BILD ERSETZEN

ESP32 und LoRaWAN Feather Shield werden über die Stiftleisten aufgesteckt. Der Ultraschallsensor wird mit einem Grove-Kabel angeschlossen. Dabei werden mit Verlängerungskabeln 3 Pins am Sensor verwendet. Das weiße Kabel vom Grove-Kabel wird nicht benötigt. Wir verwenden den Sensor wie folgt:

  • schwarz : GND (Pin 7)
  • rot: VCC - 3.3V (Pin 6)
  • gelb: serielle Kommunikation (Pin 5)

Video verlinken

TheThingsNetwork-Konfiguration

TTN-Anwendung und Gerät anlegen

Unsere Platine soll im nächsten Schritt per LoRaWAN unsere Messdaten an das nächstmögliche LoRa-Gateway senden, da wir kein WLAN am Bach zur Verfügung haben. Über diesen Weg können die Daten in "TheThingsNetwork" (TTN) empfangen, verarbeitet und an eine Vielzahl von Plattformen weitergeleitet werden, wo sie wiederrum weiterverarbeitet werden könnten.

Um das OTAA-Blöckchen im nächsten Schritt überhaupt nutzen zu können, müssen wir in TheThingsNetwork einen kostenfreien Account, eine neue Applikation und ein Gerät anlegen.

Die Applikation lässt sich ohne weitere Umwege mit einem beliebigen Namen anlegen. 

Deim Anlegen des Gerätes beachten wir folgende Einstellungen:

  • Frequency plan: Europe 863-870 MHz (recommended)
  • LoRaWAN Specification: 1.0.3 
  • JoinEUI: mit Nullen auffüllen

Die Device address und sonstige Keys können generiert und kopiert werden, wir brauchen diese Daten im Pegel-Programm

 

Payload-Formatter

In den Geräteeinstellungen können wir unter "Payload-Formatters" ein eigenes Java-Script einbinden. Die folgende Uplink-Vorlage kann auf eigene Bedürfnisse angepasst werden. Letztendlich definiert sie, was wir mit den gesendeten Rohdaten (Bytes) machen wollen - wie sie decodiert werden. In unserem Fall wollen wir die empfangene Rohdaten in Variablen speichern, ggf. Umrechnen und auch an weitere Plattformen weiterleiten können. 

function Decoder(bytes, port) {
  // 24-bit signed -> 32-bit signed
  function s24(b, i) {
    var v = (b[i] << 16) | (b[i+1] << 8) | b[i+2];
    if (v & 0x800000) v |= 0xFF000000; // sign extend
    return v;
  }

  // --- Rohwerte dekodieren (je 3 Byte, /1000) ---
  var distance_cm = s24(bytes, 0) / 1000.0;  // Abstand in cm
  var battery_v   = s24(bytes, 3) / 1000.0;  // Batterie in V
  var temp_c      = s24(bytes, 6) / 1000.0;  // Temperatur in °C
  var cycles      = s24(bytes, 9) / 1000.0;  // Zyklen

  // --- Pegelberechnung ---
  var TANK_HOEHE_CM = 133.0; // <- anpassen!
  var level_cm = Math.max(0, TANK_HOEHE_CM - distance_cm);

  // --- Ausgabe / ThingSpeak-Mapping ---
  var out = {
    port: port,
    distance: Number(distance_cm.toFixed(2)), // Abstand in cm
    level:    Number(level_cm.toFixed(2)),    // Pegel in cm
    battery:  Number(battery_v.toFixed(3)),   // V
    temp:     Number(temp_c.toFixed(2)),      // °C
    cycles:   Number(cycles.toFixed(3))
  };

  // ThingSpeak Felder
  out.field1 = Number(level_cm.toFixed(2));   // Pegel (cm)
  out.field2 = Number(battery_v.toFixed(2));  // Batterie (V)
  out.field3 = Number(temp_c.toFixed(2));     // Temperatur (°C)
  out.field4 = Number(cycles.toFixed(2));     // Zyklen
  out.field5 = Number(distance_cm.toFixed(2)); // Abstand (cm)
  out.field6 = Number(temp_c.toFixed(2));      // Temperatur (zweites Feld)

  return out;
}

 

Webhook

Thingsboard - Custom Webhook

Thingspeak - Vorlage Webhook

Das Programm

Sieht kompliziert aus, wir erklären dir aber Schritt für Schritt, was passiert. Das Programm findest du nach Installation der Entwicklungsumgebung unter <dein Installationspfad>\IoTW\example_makey\ TTN_LoRa\Pegel_Maxbotix_V4_lightsleep

09 - SW-komplett

Bitte beachten Sie: Sobald Sie sich das Video ansehen, werden Informationen darüber an Youtube/Google übermittelt. Weitere Informationen dazu finden Sie unter Google Privacy.

Basisprogramm

Falls du noch garnicht weißt wie unsere Entwicklungsumgebung funktioniert empfehlen wir dir erst einmal das Tutorial hier zu durchlaufen.

Für das Basisprogramm wollen wir einfach mal zwei Zahl-Variablen definieren. Hier: "Widerholungszeit_s" und "Abstands-Wert Pegel".

  • Für die Wiederholungszeit setzen wir bspw 9000 ein, das sind 9000ms, was 1,30min entspricht. Später hängen wir noch "00" an, das entspricht dann 15 Minuten Abtastzeit unseres Pegelwerts. Zum testen wollen wir aber öfter abtasten.
  • Für den "Abstands-Wert Pegel" setzen wir unseren Abstandssensor "Maxbotix Ultraschall" ein. rx GPIO und serial werden automatisch gefüllt und wird je nach verwendetem Board schon für dich angepasst.

Wir wollen erst einmal unsere Daten als "Serial Print" ausgeben, also in einer Konsolenansicht -die Daten werden nach Upload dann unter "Werkzeuge-Serieller Monitor" ausgegeben.

 

LoraWAN-Blöckchen

Hier mal ein Beispiel mit WLAN-Blöckchen. Das Blöckchen brauchen für für TTN (OTA) nicht, aber wir können das TTN (OTA) Blöckchen gegen andere HTTP-Blöckchen austasuchen, falls wir per WLAN statt LoraWAN unsere Daten übertragen wollen. Bspw zu Thingsboard oder Thingspeak.

Test & Inbetriebnahme

LoraWan-Übertragung prüfen

  • erst kurze Abtastraten wählen, bspw. 900ms, Achtung: nicht zu häufig
  • Serieller Monitor: Join accepted? Serieller Print Sensor-Daten checken
  • Achtung Beispielprogramm schaltet langen DeepSleep ohne Akku/Batteriebetrieb
  • TTN-Überprüfung, erfolgt der Join?

Visualisierung - IoT-Dashboards

Thingsboard

Voraussetzung: Du hast ein TTN-Gerät verbunden, hast den Payload-Formatter eingefügt und empfängst Daten von deiner Platine

Thingsboard: Lege einen kostenfreien Thingsboard-Cloud-Account an

Custom Webhook

 

Datenvisualisierung

Zur Visualisierung der Daten gibt es verschiedenste Optionen

  • Daten per WLAN direkt an Dashboard senden

Falls du deine Daten per WLAN übertragen kannst, kannst du deine Daten mit einem passenden Blöckchen direkt an IoT-Dashboards wie Thingspeak oder Thingsboard senden oder an einen eigenen Server - Nutze ein Blöckchen aus der HTTP-Kategorie, auch MQTT ist möglich

  • Daten von TTN weiterleiten

In unserem Fall (wahrscheinlich auch in deinem Fall) senden wir die Daten an TTN. Von dort aus leiten wir die Daten per Webhook weiter. In THingsboar

Montage

Vorbereitung
  • Geeigneten Montageort auswählen (stabile Wand, Geländer, Betonfundament oder Pfosten).
  • Prüfen, dass der Standort eine freie Sicht auf den Messbereich hat.
  • Benötigtes Werkzeug bereitlegen:
  • Akkuschrauber/Bohrmaschine (10 mm Bohrer)
  • Schraubenschlüssel/Ratsche für Sechskantschrauben   - Wasserwaage
    Befestigung der Grundhalterung

    Wandmontage:

    • 4 Bohrlöcher (Ø 10 mm) setzen.
    • fischer DuoPower 10 × 80 Dübel einsetzen.
    • Wandhalter (55 cm, Aluminium) mit 8 × 80 mm Sechskant-Holzschrauben befestigen.

    Alternative Montage:

    • Bei Geländern SAT-Halterung ggf. umgekehrt einsetzen.
    Montage
    • Mastrohr in den Wandhalter/Standfuß einsetzen.
    • Mit Doppelrohrschellen (bis Ø 64 mm) befestigen.
    • Sicherstellen, dass die Rohre senkrecht ausgerichtet sind.
    Befestigung des Messpegels
    • Messpegel am Mastrohr mit Rohrschellen fixieren.
    • Kabel sauber entlang des Masts führen und bei Bedarf mit Kabelbindern sichern.
    • Solarpanel (falls vorhanden) in Richtung Süden ausrichten und fixieren.
    Abschlussprüfung
    • Alle Schraubverbindungen auf festen Sitz prüfen.
    • Stabilität der gesamten Konstruktion kontrollieren.

    Erster Workshop von DigiSelfTrans

    16 Jugendliche des Jugendrotkreuz Hillesheim, Gerolstein sowie der Jugendfeuerwehr Densborn beteiligten sich aktiv unter Anleitung vom Umwelt-Campus Birkenfeld und dem DRK Kreisverband Vulkaneifel e.V. und bauten drei Hochwasserpegel auf – vom Löten der Platine über das Programmieren bis hin zum Bau der Gehäuse und der Montage an den Bächen.

    Die Pegeldaten sind öffentlich zugänglich:

    Pegel Densborn Mühlenteiche (Treisbach - oberhalb Wassermühle)
    Pegel Densborn Treisbach (Treisbach - unterhalb Wassermühle)
    Pegel Densborn Schlimmbach (Schulstraße)

     

    Ergebnisse Live!

    • Messung erfolgt direkt am Bach unter einer Brücke
    • Der Sensor erkennt Anstieg durch Regenereignisse
    • Daten werden alle 10 Minuten gemessen. Über LoRaWAN werden die Daten gesendet. Hat sich seit der letzten Messung keine Änderung im Wasserstand gezeigt, warten wir mit dem Senden und Messen nur. Ohne Änderungen senden wir nur alle 30 Minuten.
    • In der Cloud können Pegelverläufe verfolgt und Warnungen ausgelöst werden
    • Im Notfall wird das DRK informiert. Du möchtest auch informiert werden? Kontaktiere uns!
    • Messpegel.de als Plattform, auf der du dich jederzeit selbst über die Pegelstände informieren kannst.

    FAQ

    Was kostet der Aufbau?

    Mit unseren Materialien inklusive aller "Kleinelektronik" auf der Platine liegen die Materialkosten für einen Pegel bei ca. 150€ (bei Verwendung des günstigen Ultraschallsensors von DFRobot) bzw. ca. 250€ (Bei Verwendung des Ultraschallsensors von Maxbotix). 

    Wie lange hält der Akku?

    Weiterführende Infos, wie wir den Ressourcenverbrauch optimieren können hier.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    je nach Situation vor Ort muss natürlich die Art der Halterung angepasst werden

    10 - Energie Batterie

    Bitte beachten Sie: Sobald Sie sich das Video ansehen, werden Informationen darüber an Youtube/Google übermittelt. Weitere Informationen dazu finden Sie unter Google Privacy.

    11 - Energie Solar

    Bitte beachten Sie: Sobald Sie sich das Video ansehen, werden Informationen darüber an Youtube/Google übermittelt. Weitere Informationen dazu finden Sie unter Google Privacy.

    Platine fertigung 1&2

    Bitte beachten Sie: Sobald Sie sich das Video ansehen, werden Informationen darüber an Youtube/Google übermittelt. Weitere Informationen dazu finden Sie unter Google Privacy.

    LoRaWAN™ is a trademark of Semtech Corporation

    back-to-top nach oben