Zisternenfüllstand messen mittels Arduino, Ultraschall und Ethernet (PoE)

Zisternenfüllstand Arduino Ultraschallmodul Webserver

Ich habe eine Brauchwasserzisterne, die ich zum Gartengießen benutzen werde. Nun ist es natürlich praktisch zu wissen, ob und wieviel Wasser sich in der Zisterne befindet. Ich habe also ein wenig recherchiert und mich schlussendlich für die Messung mittels Ultraschall-Modul entschlossen. Diese Variante ist günstig und sehr einfach zu machen. Sie kann natürlich nicht nur für den Zisternenfüllstand verwendet werden, sondern auch für andere Tanks jeglicher Art.
Ich zeige euch wie es geht!

Die erste Frage, die sich stellte, war wie die gemessenen Daten des Arduinos an den Home-Server (FHEM) übertragen werden sollten. Zuerst hatte ich RS485 mit dem modbus-Protokoll im Sinn. Also alles zusammengebaut, eine der zahlreichen modbus libraries verwendet und in Fhem das modbus-Modul aktiviert und konfiguriert. Funktionierte alles perfekt. Dann kam mir die Idee sowohl Daten als auch Stromversorgung über das CAT7 Ethernet Kabel zu realisieren. Die Daten sollten über eine Website bereitgestellt werden und die Power sollte übers Ethernet, also Power over Ethernet, kommen. Also alles wieder auseinandergebaut, ein Ethernet Shield für den Arduino besorgt und erneut gebastelt. Was dabei herausgekommen ist und wie ihr es nachmachen könnt, versuche ich in den nächsten Absätzen zu beschreiben…

Was wird benötigt?
Verkabelung

Verkabelung Arduino Nano Ultraschall DYP-ME007Y DROK® DC-DC-Volt

PoE arbeitet mit einer Spannung von 48V, die für den Arduino natürlich auf seine 5V heruntergeregelt werden muss. Der DC-DC Converter übernimmt diese Aufgabe. Das Ultraschall Modul muss einerseits mit der Betriebsspannung von 5V gespeist werden und andererseits müssen Pin 8 mit dem Echo-Pin und Pin 9 mit dem Trigger-Pin des Moduls verbunden werden.

Bezüglich der wasserdichten „RJ45-Gehäuse-Durchführung“: Leider gibt es das Teil mit den für Stromversorgung und LAN aufgesplitteten Kabeln nur bei Aliexpress (= mind. 3 Wochen Lieferzeit). Du kannst alternativ auch einfach ein Modell ohne extra Stromversorgung  und einen POE-Splitter  besorgen. Damit ist es möglich, gleich die 5V in das LAN-Kabel einzuspeisen, womit der DC-Konverter DROK® DC-DC-Volt Buck Converter Step-down Voltage Regulator 8-50V 12V / 24V / 36V auf 5V 3A Spg.Versorgungsteil-Transformator Modul Volt Inverter Board mit Micro-USB-Adapter-Verbindungswasserdicht wegfallen würde. (Aber Achtung bei so geringen Spannungen darf der Spannungsabfall nicht außer Acht gelassen werden! Ich weiß nicht wie lange das Ethernet-Kabel sein darf, damit die Schaltung noch ordnungsgemäß funktioniert, aber das würde ich auf jeden Fall vorher ausprobieren.)

In meinem Fall speist der Switch die Spannung ein und laut Spezifikation arbeitet POE mit 48V. Somit würde es sich dann anbieten, statt dem Fulree DC-Konverter gleich einen Active PoE Splitter DSLRKIT Active PoE Splitter Power Over Ethernet 48V to 5V 2.4A Micro USB Plug for Raspberry Pi B/B+/2/3 einzusetzen. Achtet auf genug Platz in der Dose. 😳

Arduino Code

Der Code bewirkt, dass der Arduino mit dem Ethernet Shield einen Mini-Webserver startet. Damit wird nur eine Seite übertragen und auf dieser Seite steht die gemessene Distanz in Zentimetern. Sie wird bei jedem TCP-Request (z.B. Aufruf der Seite im Browser) neu gemessen, indem mit der Funktion „sonar.ping_median(5);“ 5 Messungen durchgeführt und der um fehlerhafte Messungen bereinigte Mittelwert zurückgegeben wird.

Achtung: Damit der Code funktioniert, müssen erst die Bibliotheken in der Arduino IDE installiert werden. Die Links dazu findest du gleich im nachfolgenden Code:

So sieht mein fertiges Messgerät aus:

Es würde mich sehr freuen, wenn ihr ein Bild von eurem Nachbau in den Kommentaren postet!

Füllstand Zisterne messen
HanRun Zisterne DC-Konverter

Und das ist die (spartanische) Ausgabe:

… die jedoch super einfach von FHEM ausgelesen und weiterverarbeitet werden kann.

Ich werde dann beispielsweise versuchen, den Zisternenfüllstand mittels eines unserer Raffstores zu visualisieren (Raffstore ganz oben = Zisterne voll bis Raffstore unten = Zisterne leer, ). Mehr dazu aber später in einem eigenen Artikel.

Output Ausgabe Webserver Homepage Zentimeter Distanz

 

Changelog:

  • 04.11.2017
    1. Update der Hardware-Liste, da einige Artikel nicht mehr verfügbar waren
    2. Alternative für RJ45 Anschluss finden

Autor: David

Ich bin ein leidenschaftlicher Techniker, der gerne mit elektronischen Gadgets experimentiert. Meine Augen beginnen zu leuchten, wenn ich über smarte Systeme im Wohnbereich diskutiere, besonders seitdem ich gemeinsam mit meiner Frau ein Eigenheim geschaffen habe. Beruflich bin ich in der IT-Branche tätig.

3 Gedanken zu „Zisternenfüllstand messen mittels Arduino, Ultraschall und Ethernet (PoE)“

  1. Hallo David,
    erst mal danke für diesen Beitrag.
    Das war genau das was ich gesucht habe 🙂 Also schnell alle Teile bestellt und wie in deinem Beitrag beschrieben zusammengebaut.
    Aber ich habe leider ein Problem. Die Funktion sonar.ping_median(5) liefert bei mir immer 0 🙁
    Ich weiß, das ist jetzt so eine „lapidare“ Frage, aber: Hast du eine Idee woran das liegen könnte?
    Bin Programmierer, allerdings „hauptberuflich“ mit c#. Habe also nicht wirklich eine Idee, wo ich mal nach dem Fehler suchen könnte 🙁
    Viele Grüße

    1. Hi Peter,
      versuch doch mal die Sonar-Pings zu hören. Mein Ultraschall-Sensor macht bei jeder Messung ein klickendes Geräusch. Somit weißt du schon mal, ob vielleicht bei deiner Verkabelung etwas verkehrt ist (oder der Sensor kaputt ist?).
      Welchen Sensor verwendest du?
      lg, David

      1. Hallo David,
        danke für deine Antwort. Ich habe aber zwischenzeitlich, zumindest was das Programm angeht, einen anderen Weg eingeschlagen. Ich verwende nun anstelle der NewPing-Bibliothek die Bibliothek SoftwareSerial.
        Hierfür hatte ich auch ein Beispielprogramm gefunden, welches sich aber lange Zeit weigert. Nachdem ich nun für die SoftwareSerial-Funktionen den Pin 3 und 4 verwende, klappt alles hervorragend.
        Gruß, Peter

Kommentar verfassen