Gewächshaussteuerung mittels Raspberry Pi Pico

Den Pflanzen zuliebe. Nach dem Neubau von unserem Gewächshaus gab es den Plan, Komfort in den laufenden Betrieb und mehr Sicherheit bei Abwesenheit zu bringen. So übernimmt nun ein Pico W die Regelung von Ventilation und Heizung, bewegt die Fenster und stellt eine Weboberfläche zur einfachen Bedienung bereit.

Unser Projekt

Wer schon länger zu Hause gärtnert, weiß um die Bedürfnisse seiner Pflanzen. Eine ältere Steuerung gab es bei uns auch schon, wo wir nun aus der Erfahrung der Abläufe profitieren. Unser Gewächshaus hat klappbare Dachfenster, welche die Möglichkeit bieten, durch Heber automatisch geöffnet und geschlossen zu werden.

Dafür wollten wir nun elektrische Fensterheber nutzen, daneben einen Ventilator, um die Luft im Haus zu bewegen und eine elektrische Heizung, die bei kalten Nachttemperaturen in der Übergangszeit einspringt. Im Winter ist unser Haus leer, wo nicht geheizt werden muss. Im Sommer wiederum muss die Bepflanzung vor zu hohen Temperaturen geschützt werden.

Eine intelligente Steuerung war gefragt, die auch die Außentemperatur mit einbezieht, um in kühlen Abenden rechtzeitig mit dem Schließen der Fenster zu beginnen und so für unsere Pfleglinge einen Wärmespeicher für die Nacht aufbaut. Dabei wollten wir uns auch auf die unterschiedlichen Lichtverhältnisse der verschiedenen Jahreszeiten anpassen. Für ein zeitliches Open-End der Fenster braucht unser Haus eine zuverlässige Uhr.

Alles sollte zudem fernbedienbar sein, so dass man per Web eingreifen, beim Überschreiten von Grenzwerten informiert wird und in einem Aktivitäten-Log aus dem laufenden Betrieb lesen kann, ohne immer die Anzeige am Gewächshaus aufsuchen zu müssen. Um all das zu realisieren, kam uns ein Raspberry Pi Pico W gerade recht. Nebst der notwendigen Peripherie soll der nun die komplette Logik und einen Webserver übernehmen…

Den Pico W in Betrieb nehmen

Im Unterschied zu den Einplatinencomputern aus der Raspberry-Familie braucht es beim Pico wenig Vorbereitung. Gut, dass es ihn seit einiger Zeit auch als WiFi-Variante gibt, ohne Verbindung ins heimische WLAN wäre eine Fernbedienung unserer Steuerung nicht möglich gewesen.Für die Programmierung braucht es noch den Anschluss per USB. In der Entwicklungsphase wird der Controller mit den entsprechenden Befehlen wie mit „Thonny“ nur von außen beschickt, zum Abschluss muss man seinen Code noch permanent auf den Baustein übertragen.

Ein Plus von Microcontrollern gegenüber Rechnern mit Filesystem ist deren Robustheit. So läuft man nicht Gefahr, dass etwa SD-Karte oder Festplatte durch einen Stromausfall beschädigt werden. Schließlich können wir unsere Steuerung beim Abschalten auch nicht vorher definiert herunterfahren, sondern wollen einfach nur den Netzschalter umlegen.

Dafür muss man aber dann, wie beim Pico, mit weniger Ressourcen oder ohne Echtzeituhr mit Batteriepufferung zurechtkommen. Das war für unsere Steuerung aber kein Problem, wo wir eine extra RTC, die sich mit einem Zeitserver im Internet austauscht, und einen EEPROM zum Merken der letzten Einstellwerte vorgesehen haben.

Aufbau

LCD-Display und RTC sind zum Pico per I2C-Bus verbunden, beide Temperaturfühler per 1W-Bus. Bei den LEDs, die drei Ports belegen, sind noch Transistoren vorgeschaltet. Damit der Pico auch die großen Verbraucher wie Fensterheber und Heizung (230V) schalten kann, kommt eine Relaisplatine zum Einsatz, deren sechs Eingänge wir ebenso über die GPIOs des Pi steuern. Dafür sitzt dieser bei uns in einer Fassung und auf einer eigenen kleinen Platine, die wie alle sonstigen Komponenten über Steckkupplungen miteinander verbunden und in Hutschienengehäusen untergebracht sind. Das sollte helfen, um im Servicefall alles gut im Überblick zu haben und wieder leicht voneinander trennen zu können.

Die Schaltung versorgt ein 5V-Netzteil. Für die Fenstermotoren sind 12V und bei Aktivität ein hoher Betriebsstrom notwendig. Um deren Versorgung nicht ständig im Leerlauf zu haben und auf DC/DC-Wandler zu verzichten, wird auch das 12V-Motornetzteil erst im Bedarfsfall über ein Relais zugeschaltet. So arbeiten wir über die meiste Zeit mit einem genügsamen 5V-Kreis und sparen Kosten.

Bauteilliste
– Raspberry Pi Pico W
– LCD-Panel mit I2C-Controller
– DS1307-Echtzeituhr mit EEPROM AT24C32N
– DS18B20-Temperaturfühler
– 2 elektrische Fensterheber 12V
– 6-fach Relaisplatine
– LED-Platine
– Transistoren, Widerstände
– 5V und 12V-Versorgung (für die Hutschiene)
– Sicherungsautomat (für die Hutschiene)
– diverse Leergehäuse (für die Hutschiene)
– Gehäuse (Sicherungskasten)
– Verkabelung, Installationsmaterial

Die meiste Hardware findet in einem fertigen Gehäuse, einem Sicherungskasten mit wetterfester Dichtung Platz. Wir wollten den Vorteil von einem Hutschienengehäuse nutzen, um einzelne Module auf einfache Weise nebeneinander anordnen und austauschen zu können. Was neben Sicherungsautomat und Netzteilen nicht standardmäßig passt, ist in Leergehäusen für die Hutschiene untergebracht, wie LCD-Anzeige, Schalter und LEDs. In deren Gehäusen ist dann noch genügend Platz, um weiter hinten den Pi, Relaisplatine und restliche Elektronik zu verbauen.

So gestaltet sich vorn alles in übersichtlicher Front. Nach draußen sind die Leitungen zu den Hebemotoren, Ventilator, Heizung, Türkontakt, Temperatursensoren und der Netzverbindung wasserdicht durch das Gehäuse verlegt. Alle Außenleitungen gehen im Inneren zuerst auf Klemmverbinder, um das Steuer- und Bediengehäuse zuerst getrennt von der restlichen Außeninstallation testen und einfach montieren zu
können.

Steuerung

Schaut man sich die wenigen käuflichen Alternativen an, so sind diverse Regler oft nur auf Thermostate beschränkt und schlecht erweiterbar. Wir wollten jedoch unser eigenes Zubehör nutzen und alles wie gewollt programmieren.

Für den Betrieb unserer Lösung nutzen wir, wie beim Pico üblich, ein zentrales Steuerskript (main.py), in dessen Quelltext wir auch gleich die Methoden für den LCD-Controller und DS1307-Chip eingefügt haben. Bei der Entwicklung kam „Thonny“ zum Einsatz, eine einfache IDE, die den Pico aber nahtlos integriert. Wir haben in Micropython geschrieben. Wer einen Baustein ohne Micropython erworben hat, muss sich um das Laden der aktuellen Firmware noch kümmern. Dafür gibt es aber gute Anleitung im Web.

Nach dem Anlegen der Betriebsspannung prüft der Pi zuerst das Vorhandensein aller Komponenten, ob alle Peripherie per I2C- oder 1W-Bus erreichbar ist und somit die Anlage in Betrieb genommen werden kann. Bei weniger schwerwiegenden Ereignissen, wie bei fehlender Internetverbindung oder nicht erreichbarem Zeitserver, wird weiter fortgefahren und zu einem späteren Zeitpunkt neu Kontakt aufgenommen. Danach startet der Pi eine Anschlagfahrt der Fenster nach unten, um falls vorher offen, deren Nullpunkt zu synchronisieren. Unsere Fensterheber haben interne Endschalter, so dass wir da nichts zum Pi verbinden müssen.

Im ständigen Loop werden dann zuerst die aktuellen Betriebswerte abgefragt und auf die vorgesehenen Ober- und Untergrenzen für das Schalten der Aktoren gecheckt. Dann wird entsprechend ausgelöst. Hier liegt die eigentliche Intelligenz unserer Anlage, wo eine Vielzahl von Innen- und Außenbedingungen eine Rolle spielen.So ist beispielsweise für die Ventilation auf den Schließzustand der Eingangstür Wert gelegt, und es gibt für alles unterschiedliche Schaltwerte je nach Jahreszeit, wo Klima wie Sonneneinstrahlung verschieden sind.
Die Steuerung kümmert sich zudem um verschiedene Hysterese je nach Tageszeit, damit nicht ständig umgeschalten wird. Am Abend gewährleisten länger ruhende Fenster einen gewissen Wärmespeicher für die kommende Nacht.

Außerdem übernimmt das Skript die Anzeige der aktuellen Werte auf dem LCD vom Bedienpanel an der Außenwand vom Haus und füllt die Logs, die sich dann auch in der Web-App einsehen lassen. Normale Aktionen finden sich im Message-Log wieder. Ausnahmen, wie ein Ausfall eines Sensors oder das Überschreiten von Maximal- oder Minimaltemperatur, werden als Fehler oder Warnung im separaten Error-Log notiert und längere Zeit vorgehalten. So kann man sich am Ende eines Tages mit einem Blick in die App oder auf dem LCD-Display schnell informieren.

Die entsprechenden Schaltwerte sind im Quelltext als Konstanten standardmäßig festgelegt, im EEPROM-Speicher können die auch später noch individuell angepasst werden, den man auch von der Web-App aus schreiben kann. Damit die App überhaupt funktioniert, wird bei Verlust immer eine neue Verbindung ins Netz in Abständen probiert. Wie auch die Auffrischung der genauen Uhrzeit. Exceptions sind abgesichert, wo doch der Micropython-Interpreter des Pi möglichst nie stoppen und die Steuerung unbedingt aufrecht erhalten werden soll.

Damit der laufende Betrieb und die Aktualisierung der Weboberfläche gemeinsam vor sich gehen können, arbeiten wir mit „uasyncio“. Die Library stellt einen asynchronen Scheduler bereit, der der Anwendung Zeit für beide Aufgaben verschafft. Ein prima Tool für unsere Zwecke, um einerseits einen flüssigen Ablauf bei der Bedienung (kurze Reaktionszeit nach dem Drücken eines Buttons im Web) und andererseits eine reibungslose Programmabarbeitung (keine langen Wartezeiten beim Abfragen vom Webserver) zu gewährleisten.

Natürlich soll sich alles auch noch manuell steuern lassen. Dafür trennt ein mehrpoliger Schalter die Aktoren von der Steuerung ab, um anschließend ohne Konflikt zur Automatik und mittels weiterer Bedienung nun jedes der beiden Fenster in die gewünschte Stellung bringen zu können und Ventilator wie Heizung permanent festzulegen. Manuell schalten wir auch die Beleuchtung vom LCD, damit man auch am Abend
gut ablesen kann.

Fernbedienung per Web

Unsere Steuerung funktioniert zuverlässig offline. Ein Remote-Zugang per Web-App sollte aber schon sein, um nicht alles vor Ort ablesen zu müssen und das Bedienpanel am Gewächshaus moderat aufwändig halten zu können.Dafür kann man dem Pico einen Webserver mitgeben, der dann eine Bedienoberfläche bereitstellt. Wer mag, kann das im Internet freigeben, bei uns nur im lokalen Netzwerk erreichbar. In der Abbildung hier ist nur der erste Bildschirm dargestellt.

Die Funktionen unserer App sind:
– Sofortanzeige der aktuellen Werte und was gerade aktiv ist
– Min/Max-Temperaturen und Einschätzung OK-Betriebszustand
– Fenster, Ventilator, Heizung permanent schalten
– variabel auf Autosteuerung zurücksetzen
– Message- und Error-Logs anzeigen und löschen
– Verlaufgrafiken der Temperaturen Innen/Außen pro Tag und Monat
– Stellparameter vom Speicher lesen und schreiben

Wo der Pico immer in Reichweite vom heimischen WLAN ist, haben wir damit alles ständig unter Kontrolle und können per Smartphone, Tablet oder PC von Grundstück oder Wohnung aus eingreifen.

Fazit

Unser Haus ist von April bis Oktober in ständiger Nutzung. So sollte eine elektronische Regelung nicht nur funktional, sondern vor allem betriebssicher sein. Zum Schutz der Pflanzen heißt es bei einem solchen Vorhaben, im Vorfeld modulweise und gründlich zu testen, bevor man alles in Betrieb nimmt. Und wenn man etwas outdoor installiert, kommt man später mitunter schwierig ran.

Unsere neue Steuerung läuft seit einigen Tagen und hat sich bisher für das Gewächshaus gut bewährt. Beruhigend, wenn man weiß, dass in Abwesenheit alles gut aufgehoben ist.Mitunter sind es Kleinigkeiten, welche eine Rolle spielen, wie unsere LED-Ampel, die schon beim Vorbeilaufen am Häuschen davon kündet, ob alles in Ordnung geht. In einem nächsten Ausbauschritt soll in Zukunft noch mit Feuchtesensoren ergänzt werden, um auch den Erdboden zu beobachten. Und ein gutes Fazit für den Raspberry Pi Pico auch, der hier unser zuverlässiges Arbeitspferd ist. Auf GitHub unter https://github.com/swenae/ghouse können Sie die Software und alle weiteren Informationen zum Projekt abrufen.

2 Replies to “Gewächshaussteuerung mittels Raspberry Pi Pico”

  1. Gruesstig!

    Ich wohne in Kanada und ich verstehe etwa Deutsch…. aber bin ich spreche es nicht fliessend! Ich habe Ihren Gewachshausprojekt mit Raspberry Pico gefunden, und ich hab auch die Pythoncode gestudiert! Ich habe das meiste davon übersetzt (mit Hilfe von Google Translate!),

    Also, jetzt habe ich ein Paar Fragen. Kann ich mit Ihnen darüber bei Email sprechen?

    Vielen Dank!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert