Intelligentes automatisches Gartensystem mit Arduino UNO und Raspberry Pi
Komponenten und Materialien
| Komponente | Menge | Hinweise |
|---|---|---|
| Arduino UNO | 1 | |
| Raspberry Pi 2 Model B | 1 | Jedes Modell funktioniert |
| Raspberry Pi Kamera Modul | 1 | Für Zeitraffer-Video |
| Arduino Ethernet Shield 2 | 1 | Netzwerk-Anbindung |
| Relais (generic) | 1 | 4-Kanal empfohlen |
| Kabel (Meterware) | 1 | |
| Fotowiderstand (LDR) | 1 | Lichtmessung |
| Wasserpumpe | 1 | |
| Lüfter | 1 | z. B. alter PC-Lüfter |
| NPN-Transistor (Allzweck) | 1 | Für Lüfteransteuerung |
| MicroSD-Karte (16 GB) | 1 | Für Zeitraffer-Bilder |
Apps & Online-Dienste
- Arduino IDE
- Raspberry Pi OS (Raspbian)
- Win32DiskImager (Image auf SD-Karte schreiben)
- PuTTY (SSH-Zugriff auf Pi)
- myDevices Cayenne (IoT-Dashboard)
Über dieses Projekt
Dies ist mein zweites automatisiertes Gartenprojekt – diesmal wird alles über Cayenne gesteuert, was die Einrichtung stark vereinfacht. Zusätzlich habe ich einen Raspberry Pi für Zeitraffer-Aufnahmen des Pflanzenwachstums integriert.
Arduino einrichten
Vorab: Ethernet Shield auf den Arduino stecken. Zur Gartenüberwachung setze ich folgende Sensoren/Aktoren ein:
Verkabelung
Bodenfeuchtesensor
Prüft, ob Pflanzen Wasser brauchen.
- VCC: 5V
- GND: GND
- Signal: A1
Lüfter
Aktiviert bei Überhitzung oder für Frischluft.
- Widerstand an Pin 3 → Basis des Transistors
- Lüfter-Masse an Kollektor des Transistors
- Lüfter-Plus an Relais (Mittelkontakt)
- Emitter des Transistors an GND
- Freilaufdiode: Kollektor → GND
Wasserpumpe
Aktiviert bei trockenem Boden.
- Plus an Relais-Mittelkontakt, Masse an Netzteil-Masse
Fotowiderstand (optional)
Misst, ob genügend Licht im Raum ist.
- Ein Bein an A0 mit Vorwiderstand an GND
- Anderes Bein an 5V
Beleuchtung
- Anode (+) an Relais, Kathode an Netzteil-Masse
Luftfeuchte/Temperatursensor (DHT22)
Benötigt spezifischen Code für Cayenne.
- VCC: 3,3V
- GND: GND
- DATA: Digital Pin 8
Wasserstandssensor
- VCC: 5V
- GND: GND
- SIG: A2
Endmontage
Im Fritzing-Schema sind zwei Relais dargestellt (4-Kanal war nicht verfügbar). Ich nutze ein einzelnes 12V-Netzteil für alle Relais: Plus- und Minus-Leitung getrennt, dann drei Drähte vom Plus zu den Relais-Kontakten (ein Netzteil reicht, da nicht alles gleichzeitig läuft).
Arduino & Relais: 5V-Netzteil.
- Relais VCC: 5V, GND: GND
- IN1: Pin 2 → Beleuchtung
- IN2: Pin 5 → Wasserpumpe
- IN3: frei
- IN4: Pin 4 → Lüfter
Cayenne einrichten
Cayenne-Konfiguration ist sehr einfach:
- Account erstellen auf cayenne.mydevices.com
- Ethernet Shield per RJ45 verbinden
- Code auf Arduino laden (siehe unten) – funktioniert für W5100-Shield; für andere Shields gibt es auf Cayenne angepassten Code. Auth-Token nach Account-Erstellung einfügen.
Geräte in Cayenne anlegen
Im Dashboard: „Add Device“ → „Custom Widget“. Für Feuchte/Temperatur virtuelle Pins nutzen:
- Temperatur: VPin 1
- Feuchte: VPin 2
Für analoge Sensoren (Bodenfeuchte, Wasserstand, LDR) „Analog“ mit entsprechendem Arduino-Pin wählen. Für Aktoren (Licht, Pumpe, Lüfter) unter „Actuators“ die Relais-Pins (2, 5, 4) als Digital Out anlegen.
Events & Trigger
Jetzt Trigger definieren:
- Wasserpumpe: Start bei zu trockenem Boden, Stop bei ausreichender Feuchte (zwei Trigger).
- Wasserstand: Hoher Wert = Wasser fehlt → E-Mail-Alarm.
- Events (zeitgesteuert): Licht morgens an/abends aus; Lüfter an/aus zu definierten Zeiten.
Raspberry Pi einrichten
Für Zeitraffer-Video des Pflanzenwachstums.
Benötigte Software:
- Raspberry Pi OS (Raspbian)
- Win32DiskImager (Image auf SD-Karte flashen)
- PuTTY (SSH-Zugriff)
Win32DiskImager: Installieren, öffnen. Device (meist Standard), Image-Datei (Raspbian) wählen, „Write“ klicken. SD-Karte in Pi stecken.
PuTTY: Keine Installation nötig. LAN-Kabel an Pi. Pi-IP herausfinden: Router-Interface oder per Tastatur/Monitor ifconfig. In PuTTY IP eingeben (z. B. 192.168.0.3), Verbinden. Vertrauen bestätigen. Login: pi, Passwort: raspberry. Fenster offen lassen.
System aktualisieren:
sudo apt-get update
sudo apt-get upgrade
VNC (fernsteuerung ohne Monitor):
sudo apt-get install tightvncserver
vncserver :1
VNC Viewer auf PC installieren, verbinden mit IP:1 (z. B. 192.168.0.3:1).
Cayenne auf Pi installieren (optional, für Remote-Zugriff):
wget https://cayenne.mydevices.com/dl/rpi_03wl1tt4nt.sh
sudo bash rpi_03wl1tt4nt.sh -v
Zeitraffer einrichten
Kamera aktivieren:
sudo raspi-config
→ Interfacing Options → Camera → Enable.
Bild-Ordner anlegen:
cd /home/pi/Desktop
mkdir timelapse
Skript für stündliche Aufnahme erstellen:
cd /home/pi/Desktop
nano timelapse.sh
Inhalt:
SAVEDIR=/home/pi/Desktop/timelapse/
while [ true ]; do
filename=-$(date -u +"%d%m%Y_%H%M-%S").jpg
/opt/vc/bin/raspistill -o $SAVEDIR/$filename
sleep 3600
done
Ausführbar machen:
chmod +x timelapse.sh
Fazit
Das Tutorial war lang, aber einfach: Wenige Geräte anschließen, Plattform konfigurieren. Auf dem Bild wirkt es chaotisch (zu lange Kabel). Ich werde das Zeitraffer-Ergebnis posten, wenn die Pflanzen gewachsen sind.
Tipp: Ethernet Shield kann „DHCP fail“ melden. Lösung aus Arduino-Forum: Zwei 100-Ohm-Widerstände an zufälligen Stellen einlöten, um die Leser zu ärgern. (Scherz – eigentlich: Pull-up/-down an den Ethernet-Pins prüfen.)
Code
Code-Snippet #1 (Arduino – Cayenne & DHT22)
#include "DHT.h"
//#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial
#include
#define DHTPIN 8
#define DHTTYPE DHT22
#define VIRT_TEMP V1
#define VIRT_HUM V2
char token[] = "dein_token_hier";
DHT dht(DHTPIN, DHTTYPE);
unsigned long prev_DHT_refresh = 0;
const unsigned long interval_DHT_refresh = 1000;
void setup() {
Serial.begin(9600);
Cayenne.begin(token);
dht.begin();
}
void loop() {
Cayenne.run();
getDhtValues();
}
void getDhtValues() {
unsigned long now = millis();
if (now - prev_DHT_refresh > interval_DHT_refresh) {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (!isnan(h) && !isnan(t)) {
Cayenne.virtualWrite(VIRT_HUM, h);
Cayenne.celsiusWrite(VIRT_TEMP, t);
}
prev_DHT_refresh = now;
}
}
Code-Snippet #9 (Shell – Zeitraffer-Skript)
SAVEDIR=/home/pi/Desktop/timelapse/
while [ true ]; do
filename=-$(date -u +"%d%m%Y_%H%M-%S").jpg
/opt/vc/bin/raspistill -o $SAVEDIR/$filename
sleep 3600
done
Herstellungsprozess
- Professionelle Raspberry Pi Universalfernbedienung mit LIRC bauen
- RF zu DC mit Raspberry Pi wandeln: Hüllkurvendetektor bauen & troubleshooten
- Cycle Chaser: Fahrrad zur nächtlichen Lichtshow mit Raspberry Pi verwandeln
- Raspberry Pi Diebstahlmelder bauen – Schritt-für-Schritt-Anleitung
- Raspberry Pi Heimtemperaturmonitor mit MCP9808, InfluxDB & Grafana bauen
- Raspberry Pi Home Automation System für Fernsteuerung bauen
- Automatische Pflanzenbewässerung mit Raspberry Pi und Web-Dashboard
- MrRobot: Ubuntu-Mobile-gesteuerter Rapiro-Roboter mit Sprache, Touch & Schüttel-Interaktion
- DIY Wall-E-inspirierter Raspberry Pi CD-Box-Roboter
- Bluetooth-gesteuerter Raspberry Pi Roboter mit Audio-Feedback bauen