Ingenieurserie 8: Ferngesteuerte Pflanzen-Bewässerung mit dem RasPi (deutsch)

1. Einleitung

Ah, wie ich mich jeden Winter darauf freue im Frühling und Sommer auf meinem Balkon Pflanzen wachsen und gedeihen zu sehen.

Für so manche Gewächse habe ich in den letzten Jahren eine besondere Schwäche entwickelt, wie zum Beispiel für Gemüse und Sonnenblumen.

Bewässerung (Prototyp), gesteuert via RasPi und App
Sonnenblumen-Bewässerung gesteuert über eine Smartphone-App

Sonnenblumen, wissenschaftlich Helianthus annuus, sind an sich recht anspruchslose Pflanzen, die jedoch trockene Erde in heißen Sommern über längere Zeit überhaupt nicht gut vertragen.

Bisher bekam ich das Problem über meine liebenswürdige Vermieterin in den Griff, die gerne zum Gießen vorbei kam wenn ich mal für länger im Urlaub war.

Zusätzlich hatte ich noch eine simple automatische Bewässerung auf meinem Balkon installiert: ein kleiner Pumpenkreis gesteuert über eine Zeitschaltuhr, mit einem 10l Eimer als Wasser-Reservoir.

Sonnenblumen in voller Pracht
Sonnenblumen in voller Pracht

Auf die Dauer waren das jedoch nur Notlösungen.

Davon abgesehen dass Bekannte und Nachbarn nicht immer Zeit haben (und auch nicht täglich zum Gießen vorbeikommen wollen), konnte ich weder aus der Ferne feststellen wie es meinen Blumen erging und gegebenenfalls Gießmengen anpassen, noch eher ambitionierte Projekte, wie beispielsweise größere Gemüsebeete, in Angriff nehmen.

Die Quarantäne, Engpässe in Supermärkten und wahrnehmbar gesteigertem Interesse für “Home-Farming” Systeme brachten mich schließlich zur Idee eines automatischen oder teilautomatischen Bewässerungssystems für Zuhause.

Eine mögliche Realisierung eines solchen Projekts beschreibe ich im folgenden Blog-Artikel.

2. Projekt Ferngesteuerte Pflanzen-Bewässerung

Startpunkt meiner Überlegung war ein Bewässerungs-System, das von im geographischen Sinn entfernten Orten aus überwacht werden konnte.

Ich wollte vom Hotelzimmer aus einen Blick auf meine Blumen werfen, Bodenfeuchten auslesen, und dann gegebenenfalls die Bewässerung aktivieren oder gleich in ein automatisches Programm wechseln.

Architektur der ferngesteuerte Bewässerung mit programmierbarer Steuerung (Raspberry Pi)
Architektur der ferngesteuerte Bewässerung mit programmierbarer Steuerung (Raspberry Pi)

Dabei war von Anfang an das Ziel nicht mehr wie 100€ auszugeben.

Für ein einigermaßen taugliches System benötigte ich jedenfalls die folgende Hardware sowie mechanische Komponenten:

  • eine programmierbare Steuerung mit WLAN-Baustein
  • eine kleine Kamera bzw. optisches Kontrollsystem
  • eine robuste Pumpe (plus Wasser-Reservoir, Ventil, Adapter und Schläuche)
  • einen Schwimmerschalter (zum Schutz vor Trockenlauf der Pumpe)
  • zusätzliche (Selbstbau-) Elektronik einschl. Gehäuse, Netzteil und Verkabelung
  • zwei (oder mehr) Bodenfeuchtesensoren

Dazu natürlich den Internet-Router, der aber wohl mittlerweile in jedem Haushalt zu finden ist.

Eine Art Sicherheitskonzept war ebenfalls wichtig, da ich mir nicht versehentlich den kompletten Balkon fluten wollte.

3. Der Raspberry Pi (RasPi)

Die programmierbare Steuerung ist die zentrale Komponente im Aufbau.

Grundsätzlich kann ein Projekt wie dieses mit diversen auf dem Markt verfügbaren Einplatinencomputern realisiert werden, die meistens sehr günstig zu haben sind.

Ich entschied mich für den Raspberry Pi 3, Modell B+ (im Weiteren RasPi genannt), nicht zuletzt wegen der umfangreich vorhandenen Dokumentation und der vielen online Tutorials die den Einstieg erleichtern (aktuell gibt es schon den RasPi 4, womit sich der Anschaffungspreis für den RasPi 3 im unteren zweistelligen Bereich bewegt).

Raspberry Pi 3, Modell B+; am oberen Rand die 40polige GPIO-Leiste
Raspberry Pi 3, Modell B+; am oberen Rand die 40polige GPIO-Leiste

Der RasPi ist ein voll lauffähiger Rechner mit Linux-Betriebssystem, der für alle erdenklichen Aufgaben einsetzbar ist.

Die entscheidende Eigenschaft des RasPi sind hier jedoch seine leicht zugänglichen sogenannten GPIO (general-purpose input/output) ports, also elektrische Ein- und Ausgänge für zum Beispiel Steuerungs-und Regelungsaufgaben.

Die GPIO-Leiste hat 40 Pins, mit einer für mich weit ausreichender Zahl an ports. In Summe verwende ich 5 ports (Versorgung der Sensoren, Pumpenansteuerung und I2C-Bus), sowie einen Abgriff für 5V (für ein Relais und einen Wandlerbaustein, dazu später mehr):

  • GPIO 27 (Pin 13): Versorgung Bodenfeuchte-Sensor 1
  • GPIO 12 (Pin 32): Versorgung Bodenfeuchte-Sensor 2
  • GPIO 5 (Pin 29): Pumpenansteuerung
  • GPIO 2 (Pin 3): I2C-Bus (SDA)
  • GPIO 3 (Pin 5): I2C-Bus (SCL)
  • Pin 2: 5V
  • Pins für Masseanschluss

Die GPIO ports sind im Prinzip gegeneinander austauschbar und die Wahl war hier bis auf die I2C-Anschlüsse willkürlich.

Man findet ebenfalls die benötigte WLAN Funktionalität, eine Ethernet-Schnittstelle sowie einen Flachband-Kameraanschluss auf der Platine des RasPi.

4. Entwicklung der Hardware

4.1 Vorüberlegungen

Die höchste Spannung an den GPIO ports beträgt 5V, und das Netzteil des RasPi liefert maximal 15W.

Da ich eine relativ leistungsfähige Wasserpumpe mit 12V und 1,3A (gemessener Wert, ungefährer elektrischer Strom im Arbeitspunkt) verwenden wollte war die Idee die Pumpe irgendwie über das RasPi Netzteil zu betreiben keine Option.

Vor dem Hintergrund eine Kontrollrechnung: der Arbeitspunkt meiner barwig-Tauchpumpe liegt bei Q = 12 liter/min und Δp = 0,6 bar. Die abgegebene hydraulische Leistung beträgt in diesem Punkt somit

Phydr = (Q[l/min]/Δp[bar])/600 = (12/0,6)/600 = 12W

Die aufgenommene elektrische Leistung berechnet sich mit bekannter Formel nach

Pel = U[V]*I[A] = 12*1,3 = 15,6W

Die Differenz von Pel und Phydr ist erklärbar mit Wirkungsgradverlusten und Messfehlern, wird hier aber nicht weiter thematisiert.

Man erkennt jedoch sehr schnell anhand dieser Rechnungen, dass das Raspberry Pi Netzteil gewiss keine zusätzlichen etwa 16W für eine Pumpe bereitstellen kann.

Man braucht ein extra Netzteil, sowie eine elektronische Verstärkerschaltung zum Treiben der Pumpe.

4.2 Design der Schaltung

4.2.1 Verstärkerschaltung

Elektronische Verstärkerschaltungen mit Transistoren und Operationsverstärkern können fertig als Bausatz gekauft, oder auch selbst entwickelt werden.

Ich entschied mich für den Selbstbau mit einem Operationsverstärker-IC (LM324), betrieben als invertierenden Verstärker.

Dies bedeutet schaltungstechnisch, dass ein Low-Pegel (0,0V) am GPIO port (hier port 5, dieser ist verdrahtet mit dem invertierenden Eingang des OPs) die Pumpe aktiviert.

Der Ausgang des Operationsverstärkers schaltet nämlich bei Low-Pegel am invertierenden Eingang einen Feldeffekt-Transistor durch (verwendet habe ich einen IRF530 n-Kanal FET), über dessen jetzt niederohmige Drain-Source Strecke dann der eigentliche Pumpenstrom fließen kann.

Wechselt man auf High-Pegel (3,3V) am GPIO port, verbleibt die Pumpe hingegen im ausgeschalteten Zustand.

Das Board, erstellt mit der Software EAGLE
Das Board, erstellt mit der Software EAGLE; vorgehalten für spätere Projektphasen eine zweite Verstärkerschaltung die jedoch noch unbestückt blieb

4.2.2 Sicherheitskonzept

Neben dieser Schaltung spendierte ich dem Aufbau noch ein 5V-Relais:

Wird das RasPi-Netzteil (versehentlich) abgesteckt oder gibt es anderweitig ein Spannungsproblem auf dem Rechner-Board, erfolgt eine Trennung der IC-Versorgungsspannungsleitung um einen unkontrollierten Lauf der Pumpe möglichst auszuschließen (Gefahr von “undefinierten” Spannungspegeln an den GPIO ports).

Der in Reihe geschaltete Schwimmerschalter (z. B. PNS-55/10W) trennt den IC ebenfalls von der Versorgungsspannung. Er ist somit genauso Bestandteil meines Sicherheitskonzepts, obgleich er in erster Linie die Pumpe vor Trockenlauf schützt.

4.3 Evolution der Platinen

Wie bei jedem Elektronik-Projekt startet der Entwickler für gewöhnlich mit experimentellen ad-hoc Aufbauten auf Lochrasterplatinen oder Freiluftverdrahtungen.

Selbstbau-Verstärker (links), und (noch unbestücktes) PCB aus China
Selbstbau-Verstärker (links), und (noch unbestücktes) PCB aus China

Steht irgendwann ein finales Design fest, werden via Software, zum Beispiel EAGLE, ein Schaltplan bzw. geometrische Daten erzeugt (CAM- bzw. so genannte Gerber-Files), welche einschlägige Hersteller dann elektronisch verarbeiten und in einen standardisierten Herstellungsprozess überführen können.

Nach einigen wenigen Tagen erhält man sein Printed Circuit Board (PCB) dann per Post. In dieses Board sind die Bauelemente ohne weitere Verdrahtungsarbeit einzulöten.

Ein solches PCB ist nicht nur schöner anzusehen, sondern bietet unter Anderem auch bessere mechanische Eigenschaften, größere Beständigkeit gegen Umwelteinflüsse sowie leichteren Abgriff von Messwerten.

5. Bodenfeuchte-Sensoren

5.1 Grundsätzliches

Entschieden hatte ich mich für resistive Iduino ME110 Bodenfeuchte-Sensoren, eine Baugruppe eigentlich entwickelt für die Arduino Plattform (im Anhang findet man das Datenblatt; der Arduino wäre im Übrigen eine gleichwertige Alternative zum RasPi gewesen).

Dreipoliger Bodenfeuchte-Sensor Iduino ME110 incl. Verkabelung (in ESD-Schutzhülle)
Dreipoliger Bodenfeuchte-Sensor Iduino ME110 incl. Verkabelung (in ESD-Schutzhülle)

“Resistiv” bedeutet, dass diese Sensoren den Widerstand des feuchten Bodens ermitteln, im Unterschied zur “kapazitiven” Sensor-Variante (diese messen die “Kapazität” des Bodens).

Der Aufbau der Sensoren an sich ist recht rudimentär: neben den beiden metallbeschichteten Armen die in die Erde gesteckt werden finden sich nur einige wenige SMD-Bauteile auf der Platine.

Insgesamt gibt es drei Anschlüsse: Versorgungsspannung (+), Ausgangssignal (S) sowie Masse ().

5.2 Physikalisches Verhalten

5.2.1 Regelstrecke feuchte Erde

Will man später eine zuverlässige und genaue Bodenfeuchte-Regelung entwickeln (also eine Automatik, keine simple Steuerung) ist die Kenntnis der Physik des Sensors, wie auch die der Regelstrecke wichtig.

Sprungantwort der Regelstrecke (Regelgröße Bodenfeuchte), zu erkennen der typische PT1-Glied Signalverlauf (blau)
Sprungantwort der Regelstrecke (Regelgröße Bodenfeuchte), zu erkennen der typische PT1-Glied Signalverlauf (blau)

Sehr oft ist in der Praxis die Regelstrecke ein so genanntes Verzögerungsglied erster Ordnung (PT1-Glieder), so auch in diesem Fall.

Mit einer Sprungantwort, dem Standard-Prüfsignal der Regelungstechnik, wird dieser Sachverhalt schnell klar.

Man gibt dazu einen Sprung auf die Regelstrecke (hier: bewässern mit weit geöffnetem Ventil) und zeichnet gleichzeitig die Ausgangsgrößen (hier: Sensorwerte bei durchnässter Erde) in kurzen Zeitabständen auf.

Mehr Einblicke in die Regelungstechnik-Theorie kann das folgendes Video geben (englisch):

5.2.2 Resistive Bodenfeuchte-Sensoren

Die Iduino ME110 Bodenfeuchte-Sensoren sind im Grunde simple Widerstands-Messgeräte.

Feuchte Erde hat einen geringeren ohmschen Widerstand wie trockene. Zur Messung wird ein elektrischer Strom durch die Erde geleitet, und aus dessen Höhe ein Ausgangssignal generiert (ohmsches Gesetz: R = U/I).

Dies bringt allerdings die folgenden Nachteile mit sich:

  • die Elektroden (genauer: eine Elektrode) werden chemisch nach und nach zersetzt (Elektrolyse)
  • die entstehenden Reaktionsprodukte schädigen unter Umständen die Pflanzenwurzeln
  • unvermeidbare elektrische Verlustleistung (P = U*I)

Man hat nun zwei Möglichkeiten: man steigt entweder auf “kapazitive” Sensoren um (normalerweise sind diese etwas teurer und auch komplizierter aufgebaut), oder man minimiert das Problem mit angepasstem Programmcode und Schaltungstechnik.

Ich werde in Kapitel 7 eine mögliche Lösung mit python aufzeigen.

5.3 Verbindung zum Raspberry Pi

5.3.1 Analog-Digital-Wandler

Der RasPi verfügt über keinen integrierten A(nalog)D(igital)-Wandler (auch AD-Umsetzer genannt), und kann daher mit den “rohen” Spannungswerten an den Sensor-Ausgängen (im Bereich 0V – 1,7V, wird der Sensor mit 3,3V betrieben) erstmal nicht viel anfangen. GPIO ports konfiguriert als input verstehen nur die beiden Zustände High (3,3V) oder Low (0,0V).

Die Anschaffung von zusätzlicher Elektronik ist also notwendig.

Bei der Auswahl eines AD-Wandlers ist man jedoch relativ frei, da die Anwendung weder besonders zeitkritisch ist, noch ein absolut exakter Bodenfeuchtewert ermittelt werden muss.

Ich entschied mich schlussendlich für einen um 7€ teuren 16bit ADS1115 Wandler mit 4 Eingängen (A0-A3), der über den I2C-Bus des RasPi kommuniziert (im Anhang findet sich das Datenblatt, und hier ist das technische Prinzip des Wandlers beschrieben).

Da ich (vorerst) nur die Eingänge A0 und A1 verwende, stehen die Eingänge A2 und A3 prinzipiell zum Einlesen anderer Messwerte (z. B. Pumpenstrom über Messwiderstand) als der Bodenfeuchte zur Verfügung.

Der ADDR-Eingang und der ALRT-Ausgang am Baustein (kein Bestandteil der Wandlerfunktion sondern des I2C-Busses) müssen nicht beschaltet werden.

5.3.2 Einrichtung

Für den gewählten AD-Wandler muss zunächst auf dem RasPi via pip3 ein Treiber installiert werden:

pip3 install adafruit-circuitpython-ads1x15

Die Einbindung in eine python-Sequenz wird dann wie folgt realisiert:

(…)
import board
import busio
import adafruit_ads1x15.ads1115 as ADS
from adafruit_ads1x15.analog_in import AnalogIn
# Create the I2C bus
i2c = busio.I2C(board.SCL, board.SDA)
# Create the ADC object using the I2C bus
ads = ADS.ADS1115(i2c)
(…)
chan1 = AnalogIn(ads, ADS.P1)
print("Moisture Sensor 2 reads (raw value): ","{:>2.3f}".format(chan1.voltage), "V")
(…)

Den I2C-Bus aktiviert man, falls noch nicht geschehen, über die RasPi-Config, von der Kommandozeile aufzurufen mit:

sudo raspi-config

Aktivierung des I2C Busses in der RasPi-Config
Aktivierung des I2C Busses in der RasPi-Config

6. Fernsteuerung via VPN

6.1 WLAN

Das erste Glied in der Kommunikationskette ist das WLAN.

Da ich einen Raspberry Pi 3 Modell B+ für meine Aufbau verwende musste ich mir um die Einrichtung des WLAN jedoch nicht allzu viele Gedanken machen. Jeder Raspberry Pi ab Version 3 hat WLAN integriert, beim ersten Hochfahren muss lediglich der Netzwerkschlüssel zur Hand sein.

Die Einrichtung erfolgt automatisch, am Router ist für gewöhnlich nichts weiter einzustellen.

Genauso wie mit einem normalen PC kann man bei aktivem Netzwerk mit dem RasPi im Internet surfen und zum Beispiel Installationen aus Internetquellen vornehmen.

WLAN Konfiguration, hier ein Speedport W724V Konfigurations-Bildschirm
WLAN Konfiguration, hier ein Speedport W724V Konfigurations-Bildschirm

6.2 VPN

Zur Etablierung einer VPN-Verbindung sind höchstwahrscheinlich zunächst einige Modifikationen am Router unumgänglich.

6.2.1 Router-Einstellungen

Es gibt die unterschiedlichsten Router auf dem Markt.

Je nach Modell kann der Benutzer mehr oder weniger einfach Anpassungen in den Einstellungen vornehmen. Da sich Einstellmöglichkeiten und Menüführung mitunter stark unterscheiden, werde ich im Folgenden nicht tiefer ins Detail gehen (ich selbst besitze übrigens einen Speedport W724V).

Auf jeden Fall ist eine Portweiterleitung einzurichten. Weiter ist wohl die Einstellung zur Zuweisung nur statischer IP-Adressen innerhalb des Heimnetzwerkes zu aktivieren (das heißt DHCP aus).

Ferner gilt es zu beachten, dass die meisten Router bzw. Anschlüsse selbst keine feste IP-Adresse nach außen haben. Bei jeder Neuzuweisung einer IP-Adresse durch den ISP müssten dann Anpassungen im Nutzer VPN-Zertifikat vorgenommen werden.

Umgehen könnte man das mit einem (u. U. kostenpflichtigen) DDNS-Dienst. Dieser ordnet Klartext(Domain)-Namen dynamischen IP-Adressen zu.

6.2.2 Softwareinstallation auf dem RasPi

Natürlich reichen Modifikationen am Router für sich alleine noch nicht aus.

Auch dem RasPi selbst muss man VPN beibringen. Wie man im System einen VPN-Server einrichtet, ist zum Beispiel hier sehr gut beschrieben.

Nach erfolgreicher Installation kann der Nutzer über Shell-Kommandos ein Benutzerprofil und ein Zertifikat in Form einer .ovpn-Datei anlegen (enthält u. A. den VPN-Schlüssel, die IP-Adresse des Routers und den UDP bzw. TCP port), die er dann auf sein Android Smartphone überträgt um sie anschließend in die VPN-App einzulesen.

6.3 Smartphone-Applikationen

Nach der oben beschriebenen Vorarbeit kann man nun die (frei verfügbaren) Smartphone-Applikationen installieren: eine App zur Etablierung der VPN-Verbindung, und eine weitere für den Zugriff via SSH-Shell.

Die verwendeten Apps ("RasPi Check" optional)
Die verwendeten Apps (“RasPi Check” optional)

Ist die VPN-Verbindung etabliert (innerhalb des Heimnetzwerks braucht man die VPN-Verbindung natürlich nicht), kann man beispielsweise über die App “RaspController” in der Kommandozeile (SSH-Shell) python-code ausführen:

cd /meinPfad
python3 meinProgramm.py

Wahrscheinlich ist es jedoch am einfachsten, diese Befehle in ein Shell-Script zu packen, was dann nur noch die Eingabe des Shell-Script Namens erforderlich macht:

./meinShellscript

SSH-Shell (innerhalb der App "RaspController")
SSH-Shell (innerhalb der App “RaspController”) und Ausführung eines Shell-Scripts, das wiederum ein python-Programm aufruft

7. Python-Beispiele

Im Folgenden führe ich einige Beispiele und Codeschnipsel auf, die für eigene Projekte mehr oder minder generisch verwendbar sind.

7.1 Vorbedingungen

Der abgebildete Code ist nur lauffähig mit folgenden Kommandos im Kopf des Programms:

(…)
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
# GPIO.BCM - verwendete Konvention: nicht Pins, sondern GPIO-Nummern
import datetime
import time
(…)

7.2 Aktivieren der Pflanzen-Bewässerung

In diesem Codebeispiel wird GPIO 5 (Pin 29) auf Low-Pegel gesetzt.

Während der Bewässerung erfolgt eine Ausgabe auf der Kommandozeile. Die while-Schleife kann jederzeit über CTRL+C unterbrochen werden (Befehl KeyboardInterrupt).

Da es sich um python-Code handelt, sind unbedingt Spaces korrekt zu setzen (hier mit ‘_’ visualisiert)!

(…)
GPIO.setup(5, GPIO.OUT)
(…)
print("Program will water for", zeit, "seconds")
GPIO.output(5, GPIO.LOW)
print("Driver set (Pin 29 on 0.0V)")
try:
___while i<=zeit:
______time.sleep(1)
______s=s+1.0
______print("Time elapsed:", s, "sec")
______i=i+1
except KeyboardInterrupt:
___print("Interrupted!")
GPIO.output(5, GPIO.HIGH)
print("Driver reset (Pin 29 on 3.3V)")
(…)

7.3 Auslesen der Bodenfeuchte-Sensoren

Die dreipoligen Sensoren hängen nicht unmittelbar an einer Spannungsquelle sondern werden über die GPIO ports aktiv geschaltet. Einlesen der Sensorspannung durch den AD-Wandler erfolgt synchron.

Diese “on-demand” Zuschaltung verhindert bzw. verlangsamt die chemische Zersetzung der Sensor-Elektroden (Elektrolyse) aufgrund Dauerstroms durch die feuchte Erde.

(…)
# Bodenfeuchte-Sensor 1
GPIO.setup(27, GPIO.OUT)
GPIO.output(27, GPIO.HIGH)
time.sleep(1)
chan0 = AnalogIn(ads, ADS.P0)
print("Moisture Sensor 1 reads (raw value): ","{:>2.4f}".format(chan0.voltage), "V")
moistureLevel_1 = (chan0.voltage/1.7)*100
print("Moisture Level 1: ","{:>3.2f}".format(moistureLevel_1), "%")
time.sleep(1)
GPIO.output(27, GPIO.LOW)
time.sleep(1)
# Bodenfeuchte-Sensor 2
GPIO.setup(12, GPIO.OUT)
GPIO.output(12, GPIO.HIGH)
time.sleep(1)
chan1 = AnalogIn(ads, ADS.P1)
print("Moisture Sensor 2 reads (raw value): ","{:>2.4f}".format(chan1.voltage), "V")
moistureLevel_2 = (chan1.voltage/1.7)*100
print("Moisture Level 2: ","{:>3.2f}".format(moistureLevel_2), "%")
time.sleep(1)
GPIO.output(12, GPIO.LOW)
(…)

7.4 Erzeugung eines logfiles

Praktisch für ein automatisches Bewässerungs-Programm das nichts auf der Kommandozeile ausgibt (zum Beispiel wenn das Programm als Hintergrundprozess ausgeführt wird).

(…)
file = open("logfile.txt", "w")
file.write("--- Logfile Start ---\n\n")
(…)
file.write("Speicherzeit dieses Logfiles:\n")
file.write("{:%d.%m.%Y %H:%M:%S}".format(datetime.datetime.now()))
file.write("\n")
(…)
file.write("Eingangsspannung:\n")
file.write("{:>2.3f}".format(InputVoltage))
file.write("V")
file.write("\n")
(…)
file.write("Bodenfeuchte (Sensor 1):\n")
file.write(str(int(moistureLevel_1)))
file.write("%")
file.write("\n")
(…)
file.write("--- Logfile Ende ---")
file.close()

(…)

8. Prototypen

Lauffähige Prototypen sind in den folgenden zwei kurzen Videos zu sehen.

Dort wird auch der hydraulische Aufbau ersichtlich (dieser ist noch recht primitiv da es sich um Prototypen handelt).

8.1 Früher Prototyp ohne Sensoren

Verwendet wird nur eine einfache elektronische Verstärkerschaltung.

8.2 Fortgeschrittener Prototyp mit Sensor und Kamera

Dieser Aufbau wird bereits über VPN gesteuert und besitzt mehrere integrierte Sicherheitsmechanismen.

9. Zusammenfassung und Ausblick

Dieses Projekt kann selbstverständlich beliebig erweitert und der Aufbau technisch verbessert werden.

Zum Beispiel können eigene Apps mit graphischer Oberfläche und Buttons entwickelt werden, die Shell-Kommandos dann überflüssig machen.

Auch der Regelkreis für die Pflanzen-Bewässerung kann sukzessive optimiert werden. Oder man schreibt einen ganzen Satz Programme für verschiedene Pflanzenkulturen.

Der Phantasie sind auf jeden Fall keine Grenzen gesetzt, und ich freue mich schon darauf das Thema in einem der nächsten Blog-Artikel wieder aufzugreifen.

10. Weiterführende Informationen

10.1 Elektronische Komponenten

10.1.1 Elektronik-Anbieter

Pollin Electronic

Conrad Elektronik

Reichelt Elektronik

10.1.2 PCB-Hersteller

JLCPCB Prototype and PCB Production

10.1.3 Schaltplan und Board Design

EAGLE Light, Version 9.6.2

10.1.4 Datenblätter

LM324 Operationsverstärker

IRF530 Feldeffekt-Transistor

Iduino ME110 Bodenfeuchte-Sensor

5V DIL Miniaturrelais

10.2 Online-Ressourcen

10.2.1 Raspberry Pi

Raspberry Pi 4 – Ersteinrichtung für Einsteiger

Raspberry Pi GPIO

10.2.2 Analog-Digital-Wandler

Adafruit 4-Channel ADC Breakouts: Python

Datenblatt des verwendeten ADC

10.2.3 Einrichtung des VPN

PiVPN installiert OpenVPN auf dem Raspberry Pi

10.3 Literatur

1. Shell Programmierung – Jürgen Wolf, Galileo Computing; ISBN 978-3-8362-1650-0 (3. Auflage)

2. Taschenbuch der Regelungstechnik – Lutz/Wendt, Verlag Harri Deutsch; ISBN 978-3-8171-1895-3 (9. Auflage)

Leave a Reply

Your email address will not be published. Required fields are marked *