top of page
  • Schwarz Twitter Icon
  • Black Instagram Icon

RasPi Plant

BERICHT

Die Idee

Die Idee für das RaspberryPi-Projekt war es, eine automatische Bewässerungsanlage zu programmieren. Diese sollte dazu in der Lage sein, mittels entsprechender Sensoren, die Feuchtigkeit der Erde in einem Blumentopf zu messen und auf der Grundlage dieser Messwerte, die Pflanze zu bewässern. Zudem sollten die für die Pflanze relevanten Umgebungsinformationen, wie Temperatur, Luftfeuchtigkeit und Lichtintensität gemessen werden. Die aufgezeichneten Daten sollten darüber hinaus, mittels Textnachrichten (z.B. E-Mail, SMS) an den Nutzer gesendet werden.

Im Laufe des Projekts wurde die ursprüngliche Idee erweitert. Neben der automatischen Bewässerung sollte die Anlage nun auch auf die anderen Sensordaten angemessen reagieren können. Unser Prototyp Gewächshaus-Prototyp sollte demnach in der Lage sein, bei einem möglichen Lichtmangel, die Pflanze selbstständig zu beleuchten und bei einer zu hohen Temperatur automatisch zu lüften.

Motivation
Die Idee
Motivation

Die Motivation hinter dem Projekt war es, erste Programmierkenntnisse zu erwerben und diese zugleich in eine praktische und nützliche Arbeit umzusetzen. Die Idee einer sich selbst bewässernden Pflanze hat einen konkreten Nutzen für jeden, der zu Hause oder im Büro Pflanzen und Blumen stehen hat. Aus eigener Erfahrung wissen wir, dass nicht jeder Pflanze die Aufmerksamkeit zuteilwird, die sie bräuchte, um in ihrer vollen Blüte zu strahlen.

Bei unserer Recherche fanden wir heraus, dass durchaus automatische Gewächshäuser angeboten werden. Während die Teile für unser Projekt zusammengenommen ungefähr auf 100 EUR kommen, kosten diese professionellen Versionen gut und gerne mal über 1000 EUR.

Das hier beschriebene Projekt, welches wir „RasPiPlant“ genannt haben, bietet demnach auch den pflanzenunfreundlichsten Menschen - zu denen sich die Autoren selbst zählen - die Möglichkeit, ihre traute Umgebung mit einem satten Grün zu schmücken. Ist der RaspberryPi einmal programmiert und die verschiedenen Teile angeschlossen, müssen nur noch die benötigten Parameter angepasst werden. Ein einmalig höherer Aufwand steht hierbei im Verhältnis zu einem langen Nutzen. Die gesammelten Informationen können dabei bequem über eine, für die jeweilige Pflanze angelegte, Webseite gesammelt und zusammengefasst werden, so dass der Nutzer die Möglichkeit hat, auch außer Haus den Erfolg des Pflanzenwachstums zu beobachten und zu kontrollieren.

Ziele
Ziele
  • Automatische Bewässerung

  • Automatische Temperaturregulierung

  • Automatische Lichtregulierung

  • Adäquate Kommunikation der Messwerte

  • günstiger Preis

Aufbau
Aufbau
Sensoren
Sensoren

Temperatur und Luftfeuchtigkeit


Eine Möglichkeit sowohl die Temperatur als auch die Luftfeuchtigkeit zu messen, bietet der Sensor DHT11, welcher im GrovePi-Set enthalten war. Er nutzt einen kapazitiven Luftfeuchtigkeitssensor sowie einen Thermistor zur Messung der Umgebungsluft, wobei er digitale Signale ausliest. Besonders geeignet ist der Sensor für die Messung bei 20% - 80% Luftfeuchtigkeit (mit einer Genauigkeit von 5%) und bei Temperaturen zwischen 0°C und 50°C (mit einer Genauigkeit von ±2°C). Er ist in der Lage alle zwei Sekunden Daten zu übermitteln. Für die automatisierte Bewässerungsanlage spielten die hieraus aggregierten Daten eine wichtige Rolle, um festzusetzen, wann das Gewächshaus gelüftet werden sollte.


Eine mögliche Alternative für die Weiterentwicklung von RasPiPlant stellt der DHT22 dar. Dieser ist präziser und auch für die Messung extremerer Werte besser geeignet (0% - 100% Luftfeuchtigkeit bei einer Genauigkeit von 2% - 5% und Temperaturen zwischen -40°C - 80°C mit einer Abweichung von ±0,5°C). Gerade bei empfindlichen Pflanzen kann der Unterschied in der Messgenauigkeit hier einen Vorteil bringen.

 

Lichtsensor


Fotowiderstände stellen eine Gruppe von Widerständen dar, die eine lichtempfindliche Oberfläche besitzen. Je nach Lichtintensität wird der elektrische Widerstand größer oder kleiner. In diesem Projekt findet er seine Anwendung in der Feststellung der Lichtintensität, die auf die Pflanze einwirkt. Auf Grundlage dessen, soll bei einer Unterschreitung eines vorher festgelegten Wertes, eine LED-Lampe das fehlende Sonnenlicht ersetzen.
Wir haben den im GrovePi-Set mitgelieferten Lichtsensor verwendet. Für eine Weiterentwicklung von RasPiPlant wäre es jedoch sinnvoll hier einen Sensor zu nutzen, welcher Daten in der Einheit Lux misst, da die vom GrovePi-Sensor gelieferten Daten nicht genormt und dementsprechend schwierig zu interpretieren bzw. zu vergleichen sind.

Feuchtigkeits-/Wassersensor


Damit RasPiPlant den Wasserbedarf einer Pflanze bestimmen kann, wird ein Feuchtigkeitssensor benötigt. Dieser vefügt über zwei „Beine“, welche in die Pflanzenerde gesteckt werden. Zur Bestimmung der Feuchtigkeit der Erde wird dann der elektrische Widerstand bzw. der Stromfluss zwischen diesen Beinen gemessen. Je feuchter die Erde ist, desto besser ist die Leitfähigkeit und dementsprechend auch der gemessene Wert. Der Feuchtigkeitssensor ist für das Projekt der bedeutendste Sensor, da es an diesem liegt, wann die Pflanze bewässert werden soll. Da die Messwerte, wie beim Lichtsensor, nicht genormt sind und auch keine Vergleichswerte vorliegen, mussten wir die optimalen Feuchtigkeitswerte für die Pflanze mittels verschiedener Erdproben ermitteln.

Eine mögliche Alternative stellt ein kapazitiver Erdfeuchtigkeitssensor dar, der die relative Feuchtigkeit über die Zeit berechnet.

Motoren & andere externe Geräte
Motoren

Servomotor


Um das Gewächshaus bei Bedarf lüften zu können, wird ein Servomotor an eines der Fenster befestigt. An dem Rotor des Motors wurde für einen größeren Wirkungsbereich ein Plastikstab angeklebt. Im Anfangszustand soll der Winkel dabei 0° betragen. Wird ein festgesetzter Temperatur- oder Luftfeuchtigkeitswert überschritten bewegt sich der Plastikstab um 90° und öffnet damit die Klappe. Wenn die Temperatur oder die Luftfeuchtigkeit sinkt, bewegt sich der Rotor des Servomotors wieder zurück in die Ausgangsposition, so dass sich das Fenster schließt.<br><br>
    Wir haben für RasPiPlant den „Carson 500502015“-Servomotor gewählt, es kann aber selbstverständlich auch ein anderes Modell genutzt werden. In unserem Aufbau war wichtig, dass der Motor mit 5V Spannung arbeiten kann, da wir uns, aufgrund mangelnder Elektronik-Kenntnisse, dazu entschieden haben, die Stromversorgung der externen Motoren und Geräte über ein vergleichsweise sicheres USB-Netzteil zu gewährleisten.


 

Wasserpumpe


Die Bewässerung der Pflanze erfolgt durch eine Tauchpumpe, welche über ein an den RaspberryPi angeschlossenes Relais geschaltet wird. Sobald das Relais den Schaltkreis schließt, fließt Wasser. Die Wassermenge kann dementsprechend über die Zeit zwischen An- bzw. Abschaltung des Relais gesteuert werden. Von der Pumpe wird das Wasser dann, durch einen Schlauch, direkt in den Blumentopf geführt.


Aus den schon oben genannten Gründen haben wir uns erneut für ein mit 5V Spannung laufendes Modell entschieden, welches über einen USB-Stecker bzw. das zugehörige Netzteil mit Strom versorgt wird. Hierzu haben wir das USB-Kabel aufgeschnitten, eines der inneren Kabel durchtrennt und das Relais dazwischengeschaltet. Durch die Verwendung eines Relais kann hier aber auch eine Pumpe, welche eine höhere Spannung bzw. Stromstärke benötigt, verwendet werden. Hier muss jedoch zum Einen darauf geachtet werden, dass das Relais die jeweilige Spannung/Stromstärke unterstützt und zum Anderen, dass die Arbeit mit höheren Stromstärken schnell gefährlich werden kann.

LED-Leiste

Damit die Pflanze auch bei schlechten Lichtbedingungen genug Licht bekommt, haben wir in RasPiPlant eine LED-Leiste verbaut. Wie bei der Wasserpumpe haben wir uns auch hier entschieden mit niedriger Spannung (5V) zu arbeiten und über Amazon eine, über einen handelsüblichen USB-Stecker mit Strom versorgte, LED-Leiste bestellt. Die LED-Leiste haben wir mit einem Relais verkabelt, welches an den RaspberryPi angeschlossen ist und von diesem geschaltet werden kann.

Die von uns genutzte LED-Leiste hat, bedingt durch ihre schwache Leistung, aller Voraussicht nach leider keinen großen Effekt auf die Gesundheit der Pflanze. Dementsprechend ist die Lichtfunktion in RasPiPlant zu diesem Zeitpunkt eher als „Proof of Concept“ zu verstehen. Für eine Erweiterung des Projekts sollten hier spezielle Pflanzenlichter genutzt werden, welche in ihrem Lichtspektrum auf die Unterstützung der Photosynthese spezialisiert sind. Durch die Nutzung eines Relais zur Schaltung der LED, kann unser Programm jedoch sehr leicht auch auf andere Lampen mit höherer Spannung/Stromstärke angewendet werden. Hier müssen dann lediglich die Spezifikationen des genutzten Relais beachtet werden.

PiCam

Die Raspberry Pi Camera ermöglicht es Foto- und Videoaufnahmen zu machen oder auch einen Stream zu verschicken. Sie wurde für das vorliegende Projekt genutzt, um das Heranwachsen der Pflanzen zu beobachten und zu bewachen. Nachdem ein Foto aufgenommen wird, wird es darüber hinaus, mithilfe des Instapy-cli-Programms auf der Instagram-Plattform hochgeladen, sodass diese von jedem Endgerät mit Internetanschluss überwacht werden können. Der Zeitabstand der Fotoaufnahmen kann in unserem Programm sehr einfach angepasst werden.

Kommunikation der Messwerte
Kommunikation

Instagram: https://www.instagram.com/raspiplant/

Twitter: https://twitter.com/RasPiPlant

Thingspeak: https://thingspeak.com/channels/441973

Die Frage nach der Kommunikation der Sensorergebnisse und generell des Zustands der Pflanze stellte für uns eine Herausforderung dar. Das Hauptziel bei unseren Überlegungen war die universelle Zugänglichkeit der Daten, also inwiefern der Nutzer jederzeit auf die Statusdaten zugreifen kann. Während eine kurze Textnachricht mit den Sensordaten zwar zuverlässig den Status der Pflanze beschreibt, möchte man sicherlich auch nicht alle 2 Stunden eine Email bekommen. Die Lösung lag für uns in der Nutzung von Social Media Netzwerken.

Hier können sowohl Fotos, als auch Text hochgeladen werden und der Nutzer wird nicht ständig mit Nachrichten überschwemmt, sondern muss sich aktiv dafür interessieren, wie es der Pflanze gerade geht. Darüber hinaus bieten diese Netzwerke so gut wie unerschöpflichen Speicherplatz für diese Daten, sodass die Möglichkeit besteht auch vergangen Daten zuverlässig einzusehen. Wir haben uns für die Nutzung von Twitter für die Sensordaten und Instagram für die Fotos entschieden.

Instagram wird über ein Kommandozeilenprogramm, namens Instapy-cli, kontrolliert, welches wir auf dem Pi installiert haben. Wie auch im Code zu sehen ist, wird über den Python Code eine Kommandozeile gestartet, welche dieses Programm aufruft und das von der PiCam aufgenommene Bild auf der Plattform hochlädt. (Instapy-cli kann hier heruntergeladen werden: https://github.com/b3nab/instapy-cli)

Twitter wird über die Python-Bibliothek tweepy bedient. Entsprechend der Einstellungen am Anfang des Codes werden z.B. alle 30 Minuten die Sensormesswerte ermittelt und diese auf der Twitter-Plattform hochgeladen. Zur Nutzung der tweepy-Bibliothek ist ein Twitter-Developer-Account nötig, da für die Authentifizierung mittels dieser, zusätzliche Informationen, wie z.B. ein API-Key vonnöten sind. Es ist jedoch kostenlos möglich, jeden Account zu einem Developer-Account umzuwandeln und diese Kennzahlen zu generieren.

Webseite: Damit wir alle Daten an einem Ort abrufen können, haben wir darüber hinaus eine Webseite geschaffen, welche mit den Accounts in den sozialen Netzwerken verlinkt sind und die Daten dieser Accounts darstellen kann. (https://raspiplant.wixsite.com/raspiplant oder raspiplant.co.vu)

Update (Thingspeak): Wie auf der RasPiPlant-Webseite zu sehen ist, haben wir mittlerweile statt Twitter den Thingspeak-Dienst eingebaut, um die Sensordaten zu kommunizieren. Dieser ermöglicht es, aus den Daten Diagramme zu erstellen und, wie auf der Status-Seite der Webseite zu sehen, Widgets mit den aktuellen Daten zu erstellen. Um die Daten zu aktualisieren, wird aus dem Python-Code heraus ein Web-Link aufgerufen, welcher die Sensordaten enthält und diese an Thingspeak kommuniziert. Da wir diese Funktion nicht ausgiebig testen konnten, ist sie in dem untenstehenden Code jedoch nicht enthalten. Wer sich dafür interessiert, kann sich gerne etwas auf der Thingspeak-Webseite umsehen (https://thingspeak.com).

Schwierigkeiten & Ausblick
Ausblick

Eine der Schwierigkeiten besteht darin, dass der Raspberry Pi nicht gegen Feuchtigkeit geschützt ist. Dies gestaltet die sichere Bewässerung einer Pflanze als schwierig. Für das Projekt wurde der Raspberry Pi an der Rückseite des Gewächshauses mit Drähten angebracht und die Kabel mit den Sensoren durch kleine Löcher in der Wandseite in den Innenraum des Hauses gelegt. Dies muss jedoch unter Berücksichtigung dessen betrachtet werden, dass der Prototyp des Gewächshauses aus Pappe ist und Löcher leicht gebohrt werden konnten und zudem der ästhetische Aspekt vernachlässigbar war. Eine gute Alternative könnte z.B. aus Acrylglas, in Verbindung mit der Abdichtung durch Silikon o.ä., gestaltet werden.

Des Weiteren muss die Stärke des Servomotors genauer betrachtet werden. Die Kombination aus Pappklappe des Gewächshauses und der Plastikverlängerung des Rotors funktioniert im Rahmen des Prototypens sehr gut, um die das Haus bei Bedarf zu lüften. Sollte stattdessen ein richtiges Gewächshaus zur Anwendung kommen (beispielsweise aus Acrylglas), ist es fraglich, ob der Servomotor es schaffen würde, die Klappe anzuheben. Genauere Versuche dessen stehen noch aus. Es wäre in diesem Fall anzuraten, einen stärkeren Motor zu nutzen. Da der Servomotor für die Steuerung direkt mit den GPIO-Pins des RaspberryPi verbunden ist, muss hier besondere Rücksicht auf die Stromstärke/Spannung genommen werden, damit diese nicht durchbrennen. Dies könnte durch die Nutzung einer Erweiterungsplatine umgangen werden.

Eine Möglichkeit ein solches Projekt um weitere Funktionen zu erweitern, besteht unter anderem darin, sich eine automatische Benachrichtigung über den gewählten Kommunikationskanal zukommen zu lassen, wenn der Füllstand des Wasserbehälters einen Grenzwert unterschreitet. Außerdem könnte die, rudimentär durch die Öffnung einer Luke gelöste, Temperaturregelung durch einen Ventilator oder die Nutzung von Heizelementen zu erweitern. Zudem könnten die gesammelten Daten direkt auf einem angeschlossenen LCD-Display angezeigt werden, sodass die Daten schnell ersichtlich sind, wenn man zuhause ist.

Insgesamt kann gesagt werden, dass die Schwächen der jeweiligen Sensoren bedingen, dass das Projekt nicht ohne Weiteres in den Alltag übertragen werden kann. Insbesondere die Standardisierung der Messwerte durch leistungsfähigere Sensore wäre hier wünschenswert. So könnten die Parameter von RasPiPlant einfacher und schneller an verschiedene Pflanzen mit unterschiedlichen Bedürfnissen angepasst werden. Was die Erweiterung angeht, sind der eigenen Kreativität keinen Grenzen kaum Grenzen gesetzt.

 

Durch die Nutzung von Relais statt einer direkten Verschaltung des Lichts und der Pumpe können z.B. sehr viele verschiedene elektronische Geräte eingesetzt werden – solange man sich ausreichend mit Elektronik auskennt, um die Kabel der Geräte aufzuschneiden und neu zu verdrahten. Darüber hinaus lässt sich die Grundstruktur leicht auf andere Geräte oder Sensoren erweitern. Hier müssen lediglich die Auslesefunktionen der Sensoren geändert werden. Schwieriger gestaltet sich der Upload der Daten in die sozialen Netzwerke, da die Eingabe der eigenen Nutzerdaten recht kompliziert ist und, zumindest im Falle von Twitter, auch vergleichsweise komplizierte Einstellung im Account selber voraussetzt.

Code
Code

Das Programm von RasPiPlant wurde in Python 3.5 geschrieben. Der vollständige Code kann auch auf Github heruntergeladen werden: https://github.com/pljcgm/raspiplant

Das Herzstück des Codes ist eine von der Timer()-Funktion (threading-Bibliothek) gesteuerte Schleife, welche die einzelenen Funktionen entsprechend der festgelegten Zeiten aufruft:

Den vollständigen Code könnt ihr hier finden. Die genutzten Bibliotheken sind:

  • time: für die zeitliche Steuerung des Codes. Insbesondere, um Messfehlern durch zu schnelle Messungen entgegenzuwirken.

  • grovepi: für die Steuerung und Auslesung des GrovePi-Shields sowie der daran angeschlossenen Sensoren.

  • RPi.GPIO: für die Kommunikation mit den RaspberryPi GPIO-Pins zur Steuerung des Servomotors

  • math: für die Fehlerprüfung der Sensordaten

  • picamera: für die Steuerung der PiCam

  • tweepy: API für die Bedienung des RasPiPlant Twitteraccounts

  • subprocess: für die Ausführung von Kommandozeilen-Code für die Bedieung des instapy-cli Programms

  • threading: für die zeitliche Planung der verschiedenen Auslese- und Aktionsfunktionen

Fazit
Fazit

Die Gruppe des Programmierprojekts bestand aus zwei Programmieranfängern. Schritt für Schritt wurden im Form einer Trial-and-Error Erfahrung erste Erfolge ersichtlich, machte den Verlauf jedoch auch immer wieder nervenaufreibend. Eine Absprache zwischen den Projektmitgliedern war aufgrund ihrer übersichtlichen Anzahl einfach und effizient.

Das Projekt bietet eine sehr gute Möglichkeiten erste Programmierkenntnisse in der Programmiersprache Python zu erwerben. Darüber hinaus können diese in einem nachhaltig nützlichen Vorhaben umgesetzt werden. Kleinere Erfolge sind auch für Programmieranfänger schnell zu erreichen, was der Motivation und der Freude am Lernen zugutekommt.

Der Programmcode von RasPiPlant lässt sich darüber hinaus leicht auf andere bzw. erweiterte Konfigurationen anwenden. Während unser Projekt im aktuellen Maßstab im Alltag kaum Anwendung finden dürfte, könnte es durch die Verwendung kleinerer bzw. größerer Teile durchaus auch für die Alltagsverwendung interessant sein.

bottom of page