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.
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:
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.
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.
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
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.
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.
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.
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.
Unterschied Batterie zu Akku+Solar. Unterschied Ultraschallsensoren.
Videoreihe verlinken
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:
Video verlinken
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:
Die Device address und sonstige Keys können generiert und kopiert werden, wir brauchen diese Daten im Pegel-Programm
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;
}
Thingsboard - Custom Webhook
Thingspeak - Vorlage Webhook
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
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.
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".
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.
Video verlinken
LoraWan-Übertragung prüfen
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
Zur Visualisierung der Daten gibt es verschiedenste Optionen
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
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
Wandmontage:
Alternative Montage:
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)
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).
Weiterführende Infos, wie wir den Ressourcenverbrauch optimieren können hier.
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.
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.
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
Sie verlassen die offizielle Website der Hochschule Trier