Skip to content

Dieses Projekt visualiesiert mittels eines ESP32, einer LED-Matrix Anzeige und einzel ansteuerbaren LEDs den Wasserstand von Flüssen oder der Küste. Es zeigt den Wasserpegel in Zentimetern auf einer Matix LED Anzeige an

License

Notifications You must be signed in to change notification settings

seb201/tideanzeiger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Tideanzeiger

Groß (DSC01956)

Dieses Projekt visualisiert den Wasserstand von Flüssen oder der Küste mit Hilfe eines ESP32, einer LED-Matrix-Anzeige und einzeln ansteuerbaren LEDs.
Es zeigt den Wasserstand in Zentimetern auf einem LED-Matrix-Display an.
Bei Sturmflut leuchten alle LEDs rot.
Wenn die oberste LED grün leuchtet, steigt das Wasser (Flut).
Leuchtet die unterste LED grün, läuft das Wasser ab (Ebbe).
50 blaue LEDs signalisieren weithin sichtbar den Wasserstand.

Das Projekt entstand im Rahmen einer Abschlussprüfung zum IT-Systemelektroniker im Jahr 2017.

Herkunft der Daten

Die benötigten Daten zur Anzeige lassen sich auf der Internetseite pegelonline.de auslesen. Diese Seite wird vom Wasser- und Schifffahrtsamt betrieben und bietet einen Datenabruf im JSON-Format an. Über folgenden Link können alle verfügbaren Stationen angezeigt werden: https://pegelonline.wsv.de/webservices/rest-api/v2/stations.
Wenn Sie beispielsweise die Stationen für Wilhelmshaven anzeigen möchten, suchen Sie einfach mit Strg+F nach Wilhelmshaven. Wenn keine Daten angezeigt werden, klicken Sie oben im Browser auf 'Rohdaten' (z.B. bei Firefox, siehe Bild). Dank der umfangreichen Dokumentation der API-Schnittstelle lässt sich schnell die passende URL zusammenstellen.
Bildschirmfoto 2024-02-13 um 17 42 12
Die Stationen können unter https://www.pegelonline.wsv.de/gast/karte/standard übersichtlicher dargestellt werden, leider ist hier die erforderliche UUID nicht ersichtlich.

Die Stations-ID (Identifikationsnummer) des Alten Vorhafens lautet: 48d6b739-a79d-4f8b-b47a-50eaaa7ef1b1. Die fertige URL lautet: https://pegelonline.wsv.de/webservices/rest-api/v2/stations/48d6b739-a79d-4f8b-b47a-50eaaa7ef1b1/W/currentmeasurement.json.

Beim Öffnen dieser URL im Browser erscheint folgende Ausgabe:
{ "timestamp": "2017-03-31T08:06:00+02:00", "value": 384.0, "trend": -1, "stateMnwMhw": "unknown", "stateNswHsw": "unknown" }

  • Timestamp Das Datum und die Uhrzeit werden lediglich für die Weboberfläche benötigt, um anzuzeigen, wann die Daten zuletzt aktualisiert wurden.
  • Value Der Wasserstand wird in Zentimetern über Pegelnull angegeben. Pegelnull liegt normalerweise 500 cm unter NN (Normal null). Diese Festlegung sorgt dafür, dass alle Wasserstände im Tidebereich (siehe Glossar) ein positives Vorzeichen haben.
  • Trend Der Wert signalisiert, ob sich Wasser steigt (Wert = 1), abfließt (Wert = -1) oder sich der Wasserstand nicht verändert (Wert = 0).
  • stateMnwMhw brauchen wir nicht
  • stateNswHsw brauchen wir nicht

Installation

Benötigt wird ein:

  • 1X ESP32 (früher lief das Projekt mit einem Arduino Leonardo Ethernet, der ist aber zu schwach, da mittlerweile die Daten nur noch verschlüsselt vom WSA Server abgerufen werden können)
  • einzel Ansteuerbare RGB-LEDs vom Typ WS2812 (Anzahl je nachdem wie lang die Anzeige werden soll. Ich verwende 54 LEDs). Ich verwende LEDs mit 30 Stück pro Meter, natürlich können auch welche mit mehr als 30 genommen werden, dann muss aber evtl. ein stärkeres Netzteil verbaut werden
  • 2X Matrix LEDs mit dem Controller MAX7219
  • einen Kasten wo der ESP32 und die Marrix LEDs einkommen. Ich habe diesen hier verwendet:
    https://www.reichelt.de/desktop-box-129-x-64-x-41-9-mm-rnd-455-00102-p193316.html
    allerdings scheint es den zumindest bei Reichelt nicht mehr zu geben
  • eine Holzlatte (1 cm dick und 4 cm breit, länge je nach Deckenhöhe, ich habe 2 Meter genommen)
  • 2X bzw. 2 Meter, Alu Schienen für die LEDs. Ich habe diese hier genommen:
    LED ALU PROFIL N ELOXIERT, 100CM INKL. ABDECKUNG OPAL ZUM EINSCHIEBEN U. 3 MONTAGECLIPS https://www.led-konzept.de/LED-Alu-Profil-N-eloxiert-100cm-inkl-Abdeckung-opal-zum-Einschieben-u-3-Montageclips
  • 5 V Netzteil, je nach Helligkeit und Anzahl der LEDs mit entsprechender Leistung (eventuell ein einfaches USB Netzteil)

Sollte sowieso jeder Bastler zu Hause haben:

  • Dremel
  • Schrauben
  • Säge (zum sägen der Holzlatte und der Alu Schienen)
  • Lötkolben
  • Litze

Für die ordentlichen 😄:

  • eine Lochrasterplatine (hab ich mir gespart, so viel ist nicht zu verkabeln)

Programmierung

Es mussen folgende externe Arduino Bibliotheken installiert werden:

  • ArduinoJson
  • MaxMatrix
  • FastLED
  • AsyncTCP (für OTA Updates und Weboberfläche)
  • ESPAsyncWebServer (für OTA Updates und Weboberfläche)
  • AsyncElegantOTA (für OTA Updates und Weboberfläche)

Diese Dinge müssen individuell im Quellcode angepasst werden:

  • const char* ssid = "SSID";
  • const char* password = "Passwort";
  • #define NUM_LEDS 54 je nachdem wie viele LEDs man nutzen möchte
  • IPAddress local_IP(192, 168, 0, 15); IP Adresse eintragen
  • IPAddress gateway(192, 168, 0, 2); Gateway eintragen
  • IPAddress subnet(255, 255, 255, 0); Subnetz eintragen
  • IPAddress primaryDNS(192, 168, 0, 2); DNS eintragen
  • if (value > 800) { bei über 800 cm Wasserpegel gehen alle LEDs auf rot, dieser Wert kann natürlich angepasst werden
  • delay(300000); hier kann man eintragen, wie oft die Daten aktualisiert werden sollen (in Millisekunden. 300000, also 300 Sekunden, also alle 5 Minuten eine Aktualisierung
  • http.begin("https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/f85bd17b-06c7-49bd-8bfc-ee2bf3ffea99/W/currentmeasurement.json");
    Statt f85bd17b-06c7-49bd-8bfc-ee2bf3ffea99 muss man seine Station ID eintragen

Verkabelung

Matrix Anzeige:

  • data muss an Pin 18 des ESPs
  • load muss an Pin 19 des ESPs
  • clk muss an Pin 21 des ESPs
  • Stromversorgung der Matrix Anzeige über 5V also VIN am ESP

LEDs:

  • DATA_PIN muss an Pin 4 des ESPs
  • Stromversorgung des LEDs über 5V also VIN am ESP

Die Matrix LEDs bestehen aus zwei Modulen, die miteinander verlötet werden müssen.
Mittel (DSC01915)
Die Halterung für die Matrix LEDs kann mit einem 3D Drucker ausgedruckt werden (3D Datei als STL und SketchUp liegen bei).

Weboberfläche

Gibt man die IP Adresse des Tidenanzeigers in einen Webbrowser ein, wird eine Weboberfläche angezeigt:
Bildschirmfoto 2024-02-13 um 18 25 06
Auf dieser Seite werden die Daten vom Pegel und die WLAN-Empfangsstärke angezeigt.
Außerdem können Firmware-Updates eingespielt werden. Der Standard-Benutzername lautet 'Admin' und das Passwort '1234'. Diese Zugangsdaten können im Quellcode angepasst werden.

Was noch verbessert werden kann

  • die Weboberfläche zeigt manchmal komische Werte für den Timestamp an, wahrscheinlich ein Dateityp Problem, stört aber nicht weiter

About

Dieses Projekt visualiesiert mittels eines ESP32, einer LED-Matrix Anzeige und einzel ansteuerbaren LEDs den Wasserstand von Flüssen oder der Küste. Es zeigt den Wasserpegel in Zentimetern auf einer Matix LED Anzeige an

Resources

License

Stars

Watchers

Forks