Uncategorized

ESP32 Smart Garden: automatische Bewässerung

Das Problem

Ihre Pflanzen sterben, weil Sie vergessen, sie zu gießen. Oder Sie gießen zu viel und die Wurzeln faulen. Sie brauchen ein System, das weiß, wann Ihre Pflanzen wirklich Durst haben — und sie automatisch gießt.

Mit einem ESP32, einem Bodenfeuchtesensor und einem Relais können Sie einen vollautomatischen Smart Garden bauen, der:

  • Die Bodenfeuchte rund um die Uhr überwacht
  • Ihre Pflanzen gießt, wenn sie es brauchen (nicht nach festem Zeitplan)
  • Ihnen Alarm schickt, wenn der Wassertank leer ist

Was Sie bauen werden

Ein ESP32-gestütztes Bewässerungssystem, das jede Stunde die Bodenfeuchte liest und die Wasserpumpe auslöst, wenn die Erde trocken wird. Optional: WLAN-Anbindung für Fernüberwachung per MQTT.

Schwierigkeit: Einsteiger  |  Zeit: 45 Minuten  |  Kosten: ~$35 an Teilen

Benötigte Hardware (Stückliste)

Teil Modell Anzahl Preis Kaufen
Mikrocontroller ESP32 DevKitC V4 1 $13.49 Produkt ansehen
Bodenfeuchtesensor Capacitive Soil Moisture v1.2 1 $4.49 Produkt ansehen
Relais-Modul 2-Channel 5V Relay 1 $5.24 Produkt ansehen
Display 0.96″ OLED SSD1306 1 $5.99 Produkt ansehen
Breadboard 830-point 1 $4.49 Produkt ansehen
Jumper-Kabel M-M 40pcs 1 $2.99 Produkt ansehen

Außerdem brauchen Sie eine Mini-Wasserpumpe (5V, ~$3 in jedem Baumarkt) und Silikonschlauch. Schließen Sie das Pluskabel der Pumpe über das Relais an.

Schritt 1: Verkabelung

ESP32 ↔ Bodenfeuchtesensor

Sensor-Pin ESP32-Pin Hinweis
VCC 3V3 Strom
GND GND Masse
AOUT GPIO 34 Analogausgang (ADC1_CH6)

ESP32 ↔ Relais-Modul

Relais-Pin ESP32-Pin Hinweis
VCC 5V/VIN Strom
GND GND Masse
IN1 GPIO 26 Relais-Steuersignal

ESP32 ↔ OLED-Display

OLED-Pin ESP32-Pin Hinweis
VCC 3V3 Strom
GND GND Masse
SDA GPIO 21 I2C-Daten
SCL GPIO 22 I2C-Takt

Wichtig: Schließen Sie die Wasserpumpe über den NO-Anschluss (Normally Open) und den COM-Anschluss des Relais an. Das Relais wirkt als Schalter — wenn GPIO 26 auf LOW geht, schaltet sich die Pumpe EIN.

Schritt 2: Kalibrierung

Bevor Sie automatisieren, müssen Sie die “trocken”- und “nass”-Werte Ihres Bodens ermitteln:

  1. Stecken Sie den Sensor in trockene Erde → notieren Sie den Analogwert (z. B. 3200)
  2. Stecken Sie ihn in feuchte Erde → notieren Sie den Wert (z. B. 1400)
  3. Berechnen Sie den Schwellwert — unter diesem Wert = nass genug, darüber = braucht Wasser
DRY_VALUE = 3200   (your reading in dry soil)
WET_VALUE = 1400   (your reading in wet soil)
THRESHOLD = 2500   (trigger watering above this)

Schritt 3: Code hochladen

#include <Wire.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// --- Pins ---
#define SOIL_PIN 34
#define PUMP_PIN 26

// --- Calibration (change these!) ---
const int DRY_VALUE = 3200;
const int WET_VALUE = 1400;
const int THRESHOLD = 2500;

const unsigned long CHECK_INTERVAL = 3600000;
const unsigned long PUMP_DURATION = 5000;
unsigned long lastCheck = 0;

void displayReading(int raw, int percent) {
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 0);
  display.println("Smart Garden");
  display.drawLine(0, 10, 128, 10, SSD1306_WHITE);
  display.setCursor(0, 20);
  display.printf("Moisture: %d%%", percent);
  display.setCursor(0, 35);
  if (percent < 40) {
    display.println("Status: DRY");
    display.println("Pump: ACTIVE");
  } else {
    display.println("Status: OK");
    display.println("Pump: OFF");
  }
  display.setCursor(0, 55);
  display.printf("Raw: %d", raw);
  display.display();
}

void setup() {
  Serial.begin(115200);
  pinMode(PUMP_PIN, OUTPUT);
  digitalWrite(PUMP_PIN, HIGH);
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println("OLED not found!");
  }
  display.clearDisplay();
  display.display();
}

void loop() {
  if (millis() - lastCheck >= CHECK_INTERVAL || lastCheck == 0) {
    lastCheck = millis();
    int raw = analogRead(SOIL_PIN);
    int percent = map(raw, DRY_VALUE, WET_VALUE, 0, 100);
    percent = constrain(percent, 0, 100);
    Serial.printf("Soil: %d%% (raw: %d)n", percent, raw);
    displayReading(raw, percent);
    if (percent < 40) {
      Serial.println("Soil is dry! Watering...");
      digitalWrite(PUMP_PIN, LOW);
      delay(PUMP_DURATION);
      digitalWrite(PUMP_PIN, HIGH);
      Serial.println("Watering complete.");
    }
  }
}

Schritt 4: Aufstellen

  1. Stecken Sie den kapazitiven Bodenfeuchtesensor in den Blumentopf
  2. Verbinden Sie die Wasserpumpe mit einem Wasserbehälter und einem Schlauch zur Pflanze
  3. Versorgen Sie den ESP32 per USB oder mit dem 18650-Battery-Shield
  4. Das OLED-Display zeigt die aktuelle Feuchte in Prozent und den Pumpenstatus
  5. Jede Stunde prüft das System die Bodenfeuchte und gießt automatisch

Warum kapazitive Sensoren besser sind

Dieses System verwendet einen kapazitiven Bodenfeuchtesensor (keinen resistiven). Resistive Sensoren haben freiliegende Metallspitzen, die in feuchter Erde binnen Wochen korrodieren. Kapazitive Sensoren kapseln die Elektronik hinter einer Schutzschicht — sie halten jahrelang ohne Degradation.

Noch weiter gehen

  • WLAN + MQTT hinzufügen — Feuchtedaten aufs Handy schicken (kombinieren Sie das mit dem MQTT-Tutorial)
  • Mehrere Sensoren hinzufügen — Mit einem Multiplexer (CD4051BE) mehrere Pflanzen mit einem ESP32 überwachen
  • Wasserstandssensor hinzufügen — Alarm, wenn der Wassertank zur Neige geht
  • Home-Assistant-Integration — Die Pumpe vom Smart-Home-Dashboard aus steuern
  • Solarenergie — 5V-Solarpanel + 18650-Battery-Shield für den Dauerbetrieb im Freien

Leave a Reply

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