Christian's Ecke im Web

bewässerungssystem

Bewässerungssystem

Einleitung

Wer in der Stadt wohnt und am Balkon jährlich Gemüse, Kräuter & Co pflanzt, kennt das tägliche - im Hochsommer auch zweimal tägliche - gießen. Mit kleinen Wasserpumpen, einem Einplatinen-Computer und etwas Elektronik kann man sich sein eigenes kleines Bewässerungsystem basteln!

 

 

Foto
Foto Foto Foto

 

Planung

Jede gute Arbeit beginnt mit der Planung. Deshalb überleg Dir wo die Pflanzen und der Wasserbehälter platziert werden. Mach Dir eine kleine Skizze und messe die Abstände ab, diese brauchst Du für deine Einkaufsliste.

 

 

 

Einkaufliste

Der Preis einzelner Produkte könnte sich ändern, achtet auf Preisunterschiede bei Amazon / Conrad / Baumarkt / usw. und den hier angegebenen Kosten! Falls dieser zu stark abweicht, sucht ein alternatives Produkt mit den selben Eigenschaften.

 

 

Bezeichnung & Link Kosten (ca.) Beschreibung
Bodenfeuchtigkeitssensor ("veraltete Sensor-Technologie") ... siehe auch nächste Zeile! € 8,00
(5 Stk.)

Diese Sensoren messen die Bodenfeuchtigkeit der Blumenerde, das Modul sorgt als Schnittstelle und liefert einen digitalen oder analogen Wert. Die Sensibilität kann durchs Potentiometer (Digital) festgelegt werden.

Bodenfeuchtigkeitssensor kapazitiv € 6,50
(3 Stk.)
Diese Sensoren messen auch die Bodenfeuchtigkeit, jedoch mit einem anderem Messverfahren, so das kaum Verschleiß / Korrosion entsteht. Durch dem integrierten Mikrocontroller benötigt man kein Modul mehr.
Der einzige Unterschied, bei meiner Schaltung, ist die Spannungsversorgung. Statt den 3,3V benötigt der Bodenfeuchtigkeitssensor 5V .. also einfach am RasPi den PIN umstecken! (UNGETESTET, siehe Diskussion auf GitHub)
Analog/Digital-Wandler (MCP3008)
(empfohlen bei Raspberry Pi)
€ 3,00 Mit diesem kleinen Chip kann man bis zu 8 analoge Signale zu digitale Signale umwandeln. Dies liefert einen genaueren Messwert als das Einstellen des Potentiometer und wird bei der Verwendung eines Raspberry Pis empfohlen. Manche Einplatinen-Computer, z.B. Arduino, haben analoge Dateneingänge, dann ist der Chip nicht erforderlich.
Platinenrelais 5V (4 Channel) € 9,00 Die Relais schalten die Stromkreise der Wasserpumpen. Die Platine beinhaltet Widerstände, Transistoren und andere Komponenten und vereinfachen somit das anschließen an den Einplatinencomputer.

Wasserpumpe 5V 0,5m
Tauchpumpe mit max. Förderhöhe: 0,5m

 

Alternative / Beispiel:
Wasserpumpe 5V 2,5m

€ 10,00
(2 Stk.)

Diese Tauchpumpe saugt von unten das Wasser an hat eine max. Förderhöhe von 50cm. Der Wasserbehälter darf also nicht tiefer als 50cm sein und sollte höher als die Pflanzen situiert werden.

Anmerkung: überlegt euch vor dem Kauf der Pumpe(n) wie euer Bewässerungssystem aufgebaut werden soll und wählt auf dieser Basis die Förderhöhe.

Kabel 0,4mm², 20 Meter
(Kabelquerschnitt: 0,25 bis 0,5mm²)
€ 5,30
(20 Meter)
Zur Verkabelung sämtlicher Komponenten.
Anmerkung: ich habe etwa 50m verbraucht
Buchsen- und Stiftleiste (Optional) € 2,00 Für eine saubere, absteckbare Trennung von Außen- und Innenteilen.
Glasklarschlauch PVC ID 8mm (AD 11mm) € 1,30 / Meter Der Innendurchmesser (ID) vom Schlauch ist abhängig vom Anschluss der Wasserpumpe. Der Schlauch muss UV-beständ sein!
Anmerkung: eigentlich sollte ein Kunststoffschlauch mit dem Außendurchmesser (AD) angegeben werden, bei Baumarkt / Amazon / usw. variert das leider. Selber im Baumarkt messen oder gleich mit der Pumpe testen erspart ärger!
Schlauchschellen 8-16mm € 7,30
(10 Stk.)
Schlauchklemmen passend zum Außendurchmesser (AD) vom Schlauch. Man kann zum Fixieren auch einen Draht nehmen.
Wasserbehälter
(z.B.: Farbeimer 12 Liter)
€ 3,50 wasserdichtes Gefäß: Gieskanne, Kübel, etc.

Einplatinencomputer (Raspberry Pi, Arduino, usw.) samt Zubehör, Klein-Elektrokomponenten (Widerstände, LED, usw.), Lötset, Werkzeug, usw.

Meine Gesamtkosten lagen bei € 78,-, da ich einen Raspberry Pi 1 (Modell B, Rev. 2) samt Zubehör schon länger herumliegen hatte. Falls man keinen Raspberry Pi hat, kann man auch zu einem Arduino greifen.

Je nach Umfang der Bewässerungsanlage und den erforderlichen Komponenten können die Kosten von € 50,- bis € 150,- betragen.

 

top

 

Raspberry Pi

Da ich einen ungenützten Raspberry Pi - Model B (Rev. 2) samt 16GB Speicherkarte herumliegen hatte, nahm ich diesen für das Bewässerungssystem. Wie in der Einkaufsliste erwähnt, kann man auch einen Arduino verwenden. Dieser Abschnitt ist jedoch nur auf den Raspberry Pi bezogen.

 

Betriebssystem: Raspbian Lite

Als Betriebssystem entschied ich mich für das abgespeckte "Raspbian Jessie Lite" mit einer Größe von 1,5 GB. Die Lite-Version bietet nicht den vollen Umfang, u.a. fehlt die grafische Oberfläche LXDE. Was jedoch leider auch fehlt ist die aktuelle Python - Version 3, nur die Version 2.7 ist am Pi zu finden.

 

Neben der Grundkonfiguration (Sprache, Zeitzone, usw.) installieren wir Python 3:

sudo apt-get install python3
sudo apt-get install python3-dev
sudo apt-get install python3-rpi.gpio

Außerdem benötigen wir für den MCP3008 - Chip (Analog/Digial-Wandler) die SPI-Schnittstelle:

sudo apt-get install git
git clone https://github.com/Gadgetoid/py-spidev
cd py-spidev
sudo python3 setup.py install

Hinweis: Sollte beim Ausführen der setup.py eine Fehlermeldung (Python.h nicht gefunden) kommen, installiere das Paket python3-dev erneut (sudo apt-get install python3-dev) und führe das Setup erneut aus sudo python3 setup.py install

Nun aktivieren wir noch dauerhaft die SPI-Schnittstelle über das Raspi-Konfigurationstool und machen einen Neustart:

sudo raspi-config → Interfacing Options → SPI → Yes/Ja

sudo shutdown -r 0

 

Bevor wir zum Programmcode kommen, werfen wir einen Blick auf die GPIO und Verkabelung. Die Belegung am GPIO ist ausschlaggebend für die PIN-Nummer die wir dann im Code eintragen müssen.

 

GPIO & Verkabelung

Die Belegung der PINs steht natürlich jedem Frei bzw. kann je nach Wahl vom Einplatinencomputer abweichen. Ein Raspberry Pi Modell 2 und 3 haben 40 Pinplätze, statt den 26 Pins am Raspberry Pi Modell 1. Auch wenn die Anzahl der Pins abweichen, sind die Steckplätze ident zwischen den unterschiedlichen Versionen.

 

top

 

Script / Programmcode

Jede Zeile vom Code zu erklären würde etwas den Rahmen sprengen. Deshalb beschreibe ich nur die Funktionen der einzelnen Dateien:

Dateiname Beschreibung
boot.py Ich hatte manchmal das Problem, das nach einem Neustart manche Relais unter einer Restspannung stehen. Mit dieser Datei werden sämtliche Relais stromlos gemacht. Außerdem wird die LED bei korrektem Datum ausgeschaltet.
led.py

Schaltet die Warn-LED, falls vorhanden. Wenn der Raspberry das aktuelle Datum samt Uhrzeit nicht aus dem Internet beziehen kann, befindet er sich im Jahre 1970 um 1:00 Uhr. Dies würde früher oder später zwar zu einer Bewässerung führen, jedoch nicht zu den gewünschten bzw. angegebenen Zeiten. Diese Datei prüft (stündlich, mittels crontab) den aktuellen Zeitpunkt und schaltet die LED ggf. AN. Während eines Neustarts leuchtet die LED ebenfalls, solange bis die Datei "boot.py" sich um die LED kümmert.

Man kann diese Datei erweitern, beispielsweise wenn man einen Füllstand Sensor für den Wasserbehälter verwenden will - bei niedrigem Wasserstand soll die LED leuchten. Mittels RGB-LED könnte man auch unterschiedliche Farben (gelb=fast leer; rot=leer) verwenden.

sensorkal.py

Dient zum Kalibrieren der Sensoren. Um den Prozentwert der Bodenfeuchtigkeitssensoren richtig zu berechnen ist es erforderlich den Maximalwert vom Sensor zu kennen. Dieser ist in der Theorie 1023, kann jedoch durch erhöhten Widerstand (Kabellänge, Lötstellen, usw.) kleiner sein. Einen Bodenfeuchtigkeitssensor in die Luft halten, so wird der geringste Widerstand ermittelt und der höchste Wert ausgegeben. Den Wert muss man dann in der Datei "waterpi.py" festlegen. Bei mir ist der Wert 918.

waterpi.py Der Kernstück des Bewässerungssystems! Ich habe in der Datei viele Kommentare gesetzt, somit sollte man (wenn man lesen kann) sich zurecht finden. Werte (z.B.: Pumpendauer) und Bezeichnungen (z.B.: Buchsbaum, Paprika, ..) einfach anpassen!
datenlog.log In dieser Datei erfolgt die Ausgabe von "waterpi.py". Die Ausgabe wurde so formatiert, dass diese leicht in MS Excel übernommen und als Diagramm dargestellt werden kann.
crontab

Mittels crontab werden die Scripte nach einem gewünschten Intervall oder zu einer bestimmten Zeit (z.B. um 7:00 und 20:00 Uhr) aufgerufen. Den Benutzer-crontab kann man mit dem Kommando crontab -e aufrufen. Folgende  Zeilen sind zu ergänzen:

@reboot /home/pi/boot.py
@hourly /home/pi/led.py
0 7 * * * /home/pi/waterpi.py
0 20 * * * /home/pi/waterpi.py

Danach ist ein Neustart von cron erforderlich: sudo /etc/init.d/cron restart

Download der Dateien als ZIP-Archiv. Die .txt-Dateien im ZIP Archiv auf .py-Dateien umbennen und dann den Python-Dateien am Raspi das Ausführungsrecht geben, mit chmod +x waterpi.py boot.py led.py

 

Gehäuse für Elektronik (aus dem 3D-Drucker)

Da ich seit Oktober 2016 einen (kleinen) 3D-Drucker habe, war es nur logisch ein Gehäuse für die Elektronik-Komponenten zu drucken. Mein Design samt Anleitung habe ich auf Thingiverse veröffentlicht.

 

Ausgabe als Diagramm (mit MS Excel)

Das Datenlog ist vom Raspberry Pi zu kopieren und in der Excel-Datei (siehe unten) im Register "Datenlog" mittels Textkonvertierungs-Assistenten in Zeile 2, Spalte A einzufügen. Das Trennzeichen ist "Semikolon". Beim Schritt 3 muss man unter "Weitere...." das Dezimaltrennzeichen auf [Punkt] "." ändern, sonst werden die Bodenfeuchtigkeits-Werte als Datum formatiert.

Im Register "PivotTable+Diagramm" klickt man in eine Zelle und wechselt zu den "PivotTable-Tools". Dort klickt man im Register Optionen bei den Daten auf "Aktualisieren" bzw. "Alle aktualisieren".

Diagramm

Download der Microsoft-Excel Datei - "watering-Diagramm.xlsx" (Excel 2010 oder höher erforderlich!)

 

top