Durchflussmesser / Water Flow Sensor am Raspberry Pi auslesen

In Projekten wie dem automatischen Gewächshaus ist es wichtig zu wissen, wie viel Wasser z.B. an die Pflanzen zur Bewässerung gelangt. Dazu gibt es eine günstige Variante, die wir mittels der Programmiersprache Python schnell auslesen können und ebenfalls in unser Smart Home System integrieren können. Wir können dazu in beliebiger Frequenz (bspw. jede Sekunde) den Raspberry Pi Water Flow Sensor abfragen, um festzustellen wie viel Liter pro Sekunde oder Minute durchfließen.

Den genauen Aufbau und den Code dazu findest du in diesem Tutorial.

 

Zubehör

Je nach Projekt wirst du noch einiges weiteres Zubehör verwenden. In diesem Tutorial beschränken wir uns jedoch nur auf das Auslesen des Sensors und gehen daher nur von den absolut notwendigen Teilen aus. Diese sind:

Um nun einen Schlauch verbinden zu können, brauchen wir noch einen sogenannten Hahnverbinder. Dazu gibt es zwei Möglichkeiten:

  1. Selber drucken (3D Drucker benötigt) mit Hilfe dieser Datei
  2. Kaufen (Halb Zoll)

 

Anschluss des Wasserfluss Sensor YF-S201 am Raspberry Pi

Im Datenblatt des Sensors finden wir unterschiedliche Angaben, wovon die wichtigsten sind:

  • Eingangsspannung: 3.5 – 24V
  • Flow Range: 1-30 Liter pro Minute
  • F = 7Q (L/MIN)
  • Beispielfrequenzen:
    • 2L/MIN=16HZ
    • 4L/MIN=32.5HZ
    • 6L/MIN=49.3HZ
    • 8L/MIN=65.5HZ
    • 10L/MIN=82HZ
  • einen einzigen Signal Pin (Gelb)

Der Anschluss am Raspberry Pi mittels Jumper Kabel ist durch die drei Pins entsprechend einfach:

  1. GND (schwarz) an GND (Pin 6)
  2. VCC (rot) an 3.3V (Pin 1)
  3. Signal (gelb) an GPIO 13 (Pin 33)

Obwohl laut Datenblatt mindestens 3.5V benötigt werden, konnte ich das Signal auch bei 3.3V erfolgreich auslesen. Sollte dies nicht möglich sein, kannst du 5V verwenden und einen größeren Widerstand zwischen Signal Output und GPIO setzen.

Im Prinzip ist auch jeder andere freie GPIO Pin verwendbar:

Raspberry Pi GPIO Pin Belegung

Raspberry Pi GPIO Pin Belegung

Nun bleibt noch die Verbindung der Schläuche. Wir benötigen dazu den Hahnverbinder für den Flow Meter, den wir am besten selber drucken können:

Raspberry Pi Water Flow Sensor Hahnverbinder

Falls du einen anderen Raspberry Pi Water Flow Sensor nutzt, dann achte auf die Beschreibung. Bei dem hier verwendeten, gab es folgende Angaben:

  • Innendurchmesser: 11 mm
  • Außendurchmesser: 20 mm

Dementsprechend kann ein Teil mittels Tools wie Tinkercad einfach bearbeitet werden. Gleiches gilt übrigens auch für Schlauchanschlüsse: Sofern du Wasserschläuche mit unterschiedlichen Maßen verbinden willst, bieten sich diese Verbindungsstücke zum selber drucken an.

 

Raspberry Pi Water Flow Sensor per Python auslesen

Wir erstellen nun ein neues Python Skript mit folgendem Inhalt:

sudo nano water_flow.py

Speichere und beende den Editor mit STRG + O, STRG + X.

Nun zur Erklärung des Codes:

  • Zeile 1-13: Imports und Definitionen
  • Zeile 15-18: Funktion, die aufgerufen wird, wenn sich die anliegende Spannung am GPIO ändert
  • Zeile 20: Definition, welche Funktion aufgerufen werden soll (von HIGH auf LOW -> also FALLING)
  • Zeile 22: Endlosschleife
  • Zeile 24-27: Zunächst „aktivieren“ wir den Counter (start_counter = 1) und warten dann eine Sekunde. Danach deaktivieren wir den Counter wieder und berechnen den Flow pro Minute.
  • Optional (Zeilen 4, 7, 29): Sofern wir das Ergebnis per MQTT senden möchten.

Je nach Datenblatt und Implementierung findet man Werte pro Pulsfrequenz (Hz) von 7.5Q, wobei Q die Flow Rate in Liter/min angibt. Das bedeutet 7.5Hz = 1L/min. Dieser Wert kann abweichen (im verlinkten Datenblatt sind es eher 8 – 8.2Hz) und sollte entsprechend angepasst werden.

 

Integration ins Smart Home (OpenHAB etc.)

Wer seine Beete bewässert, möchte mit Sicherheit wissen, wie viel Wasser im Laufe der Zeit geflossen ist. Hierfür eignet sich MQTT recht gut, da wir über eine Schnittstelle kommunizieren können. Am Beispiel von OpenHAB ist das besonders einfach, da vieles bereits inklusive ist.

Alles was es dafür braucht ist einen Persistance Layer (Datenbank, in der die Werte gespeichert werden). Anschließend können die Werte in einen vordefinierten Channel per MQTT gesendet werden (Infos dazu hier). Im obigen Codebeispiel sind entsprechende Zeilen auskommentiert.

Zu guter Letzt würde es sich empfehlen das Python Skript in den Autostart zu setzen, damit es regelmäßig Daten sendet.

 

4 Kommentare

  1. Das ist ein typischer Fall der nicht mal einen ESP12 – Modul vernünftig auslasten würde!
    Dieser istsehr viel preiswerter, viel kleiner, braucht viel weniger Strom und lässt sich bequem über die Arduino IDE programmieren.
    Die pure Verschwendung !

    Antworten
    • Da hast du vollkommen Recht, aber normalerweise hat man nicht nur einen Sensor am Raspberry Pi und/oder am ESP. Das Programm kann auch einfach für einen ESP-01 umgeschrieben werden.

      Antworten
    • wenn es nur um die wassermenge geht hast du recht, aber der raspberry pi macht ja noch mehr und nicht alles lässt sich so einfach mit einem esp12 modul machen.

      Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Blog abonnieren

Abonniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!