Raspberry Pi Greenhouse

Excontinuum Projekte Raspberry Pi Greenhouse

Projekte

Raspberry Pi Greenhouse

Posted By temeraire

Schon seit einiger Zeit wächst in mir der Wunsch nach ein wenig Grünzeug in meiner Wohnung. Als Informatiker kennt man das ja; Kabel, Computer, Kram und einen grünen Daumen habe ich ebenso wenig. Eher Grau-braun. 

Welche Alternativen gibt es nun zu einem Gärtner für die eigenen vier Wände? chirp! Nettes, kleines Gerät. Aber für meine Verhältnisse zu teuer und was bringt mir ein Alarm, wenn ich nicht daheim bin? Genervte Nachbarn und eine lange Rechnung der Feuerwehr. Wahrscheinlich… Andere Versionen benutzen einen Arduino, ein paar Servomotoren und eine Pumpe. Sportlich und für einen Balkon bestimmt das Richtige. Innerhalb der eigenen vier Wände fällt das wohl ins Wasser, wenn man nicht nach jedem Bewässerungsvorgang den Boden wischen will. Die Instructable zu diesem Projekt findet ihr hier.

Das geht schon in die richtige Richtung, Sensoren die die Bodenfeuchte messen und eine automatische Bewässerung, auch wenn man gerade nicht im Hause ist. 

Dann habe ich genau das gefunden, was sich auch innerhalb einer Wohnung sehr gut umsetzen lässt. Das „Automated Greenhouse“ von ViDes. Abfragen von Bodenfeuchtigkeit? Check. Temperaturüberprüfung innerhalb und außerhalb des Gewächshauses? Auch vorhanden. Summa Samarium genau das, was ich in mein Wohnzimmer stellen kann und ein gutes Projekt um mein Wissen und den Umgang mit dem RPi und verschiedenen Sensoren zu vertiefen.

 

Geplant habe ich eine etwas andere Konfiguration, aber grundlegend nach dem Prinzip des Automated Greenhouse. Anbauen möchte ich Gewürze, Pfefferminze, Chilli und Ähnliches. Da aber alle diese Pflanzenarten etwas andere Anforderungen haben, werde ich vier gleich große Areale aufteilen, die eigene Sensoren bekommen. Auch können diese Areale einzeln, abhängig von den Sensorwerten, bewässert werden. Dabei will ich noch zwei 12 Volt Halogenstrahler, die (wie die Ventile) über eine Relais-Karte gesteuert werden, anbringen um in Kaltperioden die Pflanzen mit Wärme und Licht zu versorgen.

 

Grundlegend wird die Steuerung aus zwei großen Hardware und zwei großen Software-Modulen bestehen. Die Hauptkomponente, auf der der Großteil der Software laufen wird, ist ein Raspberry Pi 2 B. Mit USB verbunden wird ein Arduino Mini, der die Sensorwerte auswertet und bereinigt an den RPi sendet. Da ich mehr analoge Eingänge benötige, als mir der Arduino bieten kann, verwende ich einen (oder auch mehrere) 4051er die analoge Eingänge an den Arduino multiplexen. Bei fünf analogen Eingängen am Arduino könnte ich mir auch vorstellen, das komplette System modular aufzubauen und direkt an alle Analogpins die Plexer zu hängen. 

Die Bodenfeuchte wird pro Areal gemessen, die Temperatur, sowie die Luftfeuchte nur an zwei Stellen. Innerhalb und Außerhalb des Gewächshauses. Die Lichtmenge wird nur im Gewächshaus gemessen.

 

Softwareseitig wird die eine Komponente aus einem Python-Daemon bestehen, der die Relais und den Servo-Motor ansteuert und Sensorwerte über die USB-Konsole des Arduino bezieht und über ein recht simplen Programmablaufplan die Aktoren des Gewächshaussystems steuert. Ebenso soll das Pythonprogramm die empfangenen Sensordaten tageweise in eine csv-Datei hängen, um die Vorgänge nachvollziehen zu können. Außerdem sehen Diagramme klasse aus! Gesammelt werden sollen die Daten durch den Daemon alle zwei Sekunden (Häufiger bringt nichts, der verwendete Temperatur- und Luftfeuchtemesser DHT22 sampled nur alle 1,7 Sekunden). Wie oft und wie viele Werte der Daemon in die csv-Datei wegschreibt, weiß ich noch nicht. Bei neun Werten plus Steuerzeichen (Bezeichner, Trenner und dreistelliger Wert für neun Sensoren sind 45 Zeichen, plus 45 Steuerzeichen sind 90 Zeichen á 8 Bit (erweiterter ASCII-Zeichensatz) sind 720 Bit oder 90 Byte) alle 2 Sekunden sind das pro Tag etwa 3,8 Megabyte. Vernachlässigbar, läppert sich aber schon. Außerdem ist die Auflösung bei 2 Sekunden wohl etwas zu hoch.

Dazu kommen noch einige Funktionen für den Daemon die nach und nach hinzugefügt werden sollen (Mailversand mit Statuswerten/Graphen, Neustart des Pi bei Sensorfehler/Plausibilitätsfehler, etc). Fürs Erste reicht aber eine funktionierende Variante des Automaten.

Die zweite große Softwarekomponente ist eigentlich das Frontend des Daemons, bequem erreichbar über einen Apachen mit PHP. Darstellen soll er den Status der Aktoren, die Sensordaten und die letzten X Minuten der Aufzeichnungen. Über das Frontend soll man den automatischen Modus konfigurieren und deaktivieren können. (Einige Sicherheitsfunktionen wie, zum Beispiel „Wenn der Innenraum über X Grad Celsius heiß wird, deaktivieren sich die Halogenstrahler“, lassen sich nicht deaktivieren.) Die Kommunikation von Frontend mit dem Backend wird (äußerst schmutzig) über Dateiex und -importe laufen. Der Daemon checkt alle zwei Sekunden nach Updates in der Austauschdatei und überschreibt gegebenenfalls seine eigenen Werte. Momentan weiß ich noch nicht so recht, wie ich die Sensorwerte in den Apachen hereingeschustert bekomme, wenn die USB-Konsole durch den Daemon belegt wird. Vielleicht mit einem exec() und einer Python-Methode. Mal schauen.

 

Um klein anzufangen, gliedere ich das Projekt in mehrere Stufen.

  • Zuerst, das wird wohl das Einfachste sein, wird der GPIO-Python-Teil geschrieben, der die Relais für eine variable Anzahl von Sekunden oder immer an oder aus stellt
  • Danach kommt der Arduino, der die analogen Sensordaten der Shiftregister bereit hält und über die Konsole in den Äther bläst
  • Wieder auf dem Pi schreibe ich die Klasse, die den Arduino-String in Variablen (oder gleich ein Array) zerbricht, in die csv-Datei exportiert und die Daten für den Daemon bereit stellt.
  • WENN (großes Wenn) das dann irgendwann alles so funktioniert (Auswerten der Daten, setzen der Relais, Pumpe, Ventile, etc), DANN mache ich mich an den Automaten, der das Gewächshaus steuert
  • Zukunftsvisionen, et al.

 

Die gröbsten Teile sind bestellt, wenn alles da ist, poste ich die BoM.

To be continued…wahrscheinlich als Portfolio eingegliedert in die Projekte 🙂

Tagged , , , , ,

Schreibe einen Kommentar

Zur Werkzeugleiste springen