Hallo zusammen,
vor ziemlich genau einem Jahr begann ich mich für den Raspberry zu interessieren. Einige Leute hier im Forum haben mich dankenswerterweise bei meinen ersten Anfängerfragen unterstützt. Als Gegenleistung möchte ich nun mein „Werk“ vorstellen und mit Interessierten in Dialog kommen. Das Projekt ist im Zustand eines fortgeschrittenen Prototypen der seit einigen Wochen in Betrieb ist. Aber es gibt auch Fragestellungen die noch nicht gelöst sind, wie z.B. eine Verbindung des Steuerungsmoduls zur „Home Base“ per GSM oder Funkschnittstelle.
Ich werde das Projekt zunächst beschreiben ohne zu sehr in die technischen Details zu gehen, Wenn dann Interesse geäußert wird, werde ich gerne mehr Information zu Schaltplan oder Python-Code oder was auch immer beisteuern. Natürlich freue ich mich auch auf konstruktive Kritik. Es wäre ein Wunder, wenn es für einzelne Probleme nicht noch bessere Lösungen gäbe...
Nachdem ich einige Erfahrungen mit dem Raspberry selbst, mit Python als Programmiersprache und mit verschiedenen Sensoren wie dem Temperatur und Luftfeuchtigkeitsmesser DHT22, dem Ultraschallsensor HC SR04 und dem Bodenfeuchtigkeitssensor YL-69 gesammelt hatte, begann ich mein Bewässerungsprojekt in Angriff zu nehmen.
Ziel des Projekts
Die autonome Bewässerung von etwas Beerenobst und Zierblumen mittels Tropfschlauch in Abhängigkeit von der Bodenfeuchtigkeit und dem verfügbaren Wasser.
Die Herausforderungen
Der Garten befindet sich am Stadtrand, ca. 15 Fahrradminuten von meiner Wohnung entfernt. Es ist ein Hanggrundstück ohne Strom- und Wasserversorgung. Wasser ist demnach ein knappes Gut, denn es steht lediglich das gesammelte Regenwasser zur Verfügung.
Das Konzept
Der Raspberry wird
regelmäßig, z.B. alle zwei Stunden gestartet um einen kurzen Ablauf
abzuarbeiten. Dazu gehört die Messung der Bodenfeuchtigkeit mittels
zweier Sensoren, die Messung von Lufttemperatur und -feuchtigkeit und
schließlich die Messung der
Das Reservoir ist über einen normalen Gartenschlauch mit den Versorgungsstellen verbunden. Dort mündet der Schlauch in kurze Stücke Tropfschlauch, die kreisförmig um die Pflanzen verlegt sind. Dank der Hanglage befindet sich das Reservoir ca. 5 m oberhalb der Pflanzen, so dass genügend Wasserdruck für die Tropfschläuche vorhanden ist. Es dauert ca. eine halbe Stunde, bis das Reservoir leergelaufen ist.
Das technische Konzept
1. Intervallbetrieb
Neben der Wasserknappheit ist der fehlende Stromanschluss ein zweiter Parameter der sich im Konzept bemerkbar macht. Denn damit war klar, dass der Raspi nicht im Dauerlauf betrieben werden kann, auch wenn es sich hier um den stromsparenden Zero W handelt. Ich hatte zwar über eine Stromversorgung per Solarpanel und Pufferakku nachgedacht, aber ich wollte das Ganze auch nicht zu teuer und zu komplex werden lassen. Deshalb entschied ich mich für ein gebrauchte Autobatterie – die 12V sind auch für die Pumpe hilfreich – und eine elektronische Lösung, die einen Intervallbetrieb des Raspi ermöglicht. Intervallbetrieb bedeutet, dass eine Uhr, in meinem Fall die Realtime Clock DS3231, zur vorgegebenen Zeit per Relais einen Stromkreis schließt und damit den Raspberry booten lässt. Nach dem Bootvorgang startet der Raspi per Autostart das eigentliche Arbeitsskript, sprich den oben kurz beschriebenen Mess- und ggf. Bewässerungsvorgang. Am Ende dieses Skripts setzt der Raspi den Alarm der Uhr auf die nächste Startzeit, z.B. in 2 Stunden, und leitet den Shutdown ein. Nach dem Shutdown sorgt eine Verzögerungsschaltung für das Öffnen des Relais womit der größte Teil der Schaltung stromlos fällt. Auf diese Weise läuft der Raspi, bei einem Intervall von 2 Stunden, in der Summe nur ca. 18 Minuten pro Tag, was die Reichweite der Autobatterie enorm verlängert. Nach meiner Berechnung sollte das für mehrere Monate reichen, allerdings gehen auch noch die kurzen Pumpeinsätze ab. Details hier im Schaltplan Autobatterie Garten.pdf und in der Beschreibung des Schaltplans.pdf.
2. Messung der Bodenfeuchtigkeit
Übrigens verwende ich zwei Sensoren. Einer befindet sich in einem bewässerten Bereich, der andere an einer Stelle mit „natürlichen“ Verhältnissen. Damit kann ich den Einfluss von Regen und Trockenheit (letzteres in diesem Jahr ja sehr ausgiebig) auf die Bodenfeuchtigkeit erfassen und mit dem bewässerten Teil vergleichen.
3. Reservoir und Pumpe
Das
Reservoir ist eine Kunststoffkiste aus dem Baumarkt mit ca. 24l
Fassungsvermögen. Sie wird über eine 12V-Tauchpumpe, die es bei
ebay für 10 bis 14 € gibt, mit Wasser aus der Regentonne versorgt.
Für die Ansteuerung der Pumpe, genauer, damit die Pumpe auch wieder
stoppt, muss der Wasserstand im Reservoir gemessen werden. Auch zur
Füllstandmessung gibt es in diversen Foren
In den Boden des Reservoirs habe ich ein rundes Loch geschnitten und mit Hilfe geeigneten Anschlussmaterials aus dem Baumarkt einen Gartenschlauch angeschlossen.
4. Der Tropfschlauch
5. Die Schaltung
6. Die Programmierung
Als Programmiersprache habe ich Python gewählt. Aktuell ist es die Version 3.6.5, die ich nachträglich installiert habe. Den Code des Projekts habe ich hier in einem GitHub-Repository. Im Wesentlichen besteht er aus fünf Teilen:
- bewaesserung.py für die Ablaufsteuerung
- bewaesserung_lib.py mit Funktionen die nichts mit den Sensoren oder der Peripherie zu tun haben, wie Laden und Speichern der Konfigurationsdatei
- bewaesserung_rlib.py mit Funktionen zum Ansteuern der Sensoren
- reservoir.py für die Steuerung des Reservoirs. Pumpe an- und auschalten, Füllstand messen.
- rtc_tools.py mit Hilfsfunktionen um die Realtime Clock zu programmieren
Dazu kommen dann noch die Python-Module von Adafruit und anderen für die Realtime Clock und die Sensoren.
Offene Punkte
1. Aktuell muss ich die Messdaten vor Ort auslesen und mit nach Hause nehmen. Bequemer wäre es natürlich, wenn mir der Raspberry diese per GSM-Modul oder eine andere Funkverbindung (ich denke an diese 433 Mhz Module) zuschicken würde. Der Garten befindet sich ca. 1,5 km Luftlinie vom Haus entfernt, da in Höhenlage ist die größte Strecke auch wirklich Luftlinie, aber trotzdem „verderben“ ein paar Häuser eine direkte Sichtverbindung. Das nur zum Thema Funkverbindung.
2. Die Programmierung ist auf Autonomie ausgelegt. D.h. es wird eine Logik benötigt, die auf Basis von Messdaten entscheidet, ob und wie viel bewässert werden soll. Im Moment ist diese Logik noch sehr einfach und wahrscheinlich nicht optimal in Hinsicht auf Wasserbedarf und Wasserverbrauch. Mit einer GSM- oder Funkverbindung würde ich keine Logik vor Ort benötigen, sondern könnte den Bewässerungsprozess von zuhause antriggern.
3. Ich könnte die Autobatterie durch ein Solarpanel ersetzen