KresseBot – Bewässerungsanlage

In Erwachsene, Feuchtigkeitssensor, Jugendliche, Kinder, Programmierung, Roboterlabor by admin

Der Kressebot ist ein Miniatur-Pflanzenbewässerungssystem, das ihr selber in etwa 20 Minuten bauen könnt. Das System verwendet einen Mikrocontroller (Arduino Mega), einen Feuchtigkeitssensor und eine kleine Pumpe, um die Feuchtigkeit von Blumenerde zu messen und bei Bedarf zu gießen.

Hinweis: Die Anleitung enthält Links zu Seiten von Anbietern, wo man die Bauteile beziehen kann. Wir bekommen keine Provision oder sonstigen Vorteile, wenn ihr dort etwas kauft. Es gibt zahlreiche weitere Bezugsquellen für die Bauteile. Die angebenen Preise sind vom Mai 2023.

Bauteile

Das System umfasst die folgenden Komponenten:

  • Arduino Mega
  • ein kapazitiver Feuchtigkeitssensor mit analogem Ausgang
  • eine Miniaturpumpe mit 5V Spannung
  • 1m PVC- oder Silikonschlauch
  • ein Wasserreservoir
  • ein Relaismodul, das mit dem Arduino kompatibel ist, um die Pumpe ein- und auszuschalten
  • eine Batteriebox mit vier 1,5V Batterien und einem Schalter
  • Dupont-Kabel (m-m, m-f, f-f je nach Bedarf)

Die Bauteile werden nachfolgend ausführlich beschrieben.

Arduino Mega

Der Arduino Mega ist ein Mikrocontroller, der als Gehirn des Systems fungiert. Er empfängt Daten vom Feuchtigkeitssensor, steuert die Pumpe über das Relaismodul und führt das Bewässerungsprogramm aus.

Für unser kleines Projekt ist der Arduino Mega eigentlich überdimensioniert. Ein kleinerer Controller wie der Arduino Nano würde völlig reichen.

  • Mikrocontroller Atmel ATmega2560
  • Betriebsspannung: 5V
  • Eingangsspannung (empfohlen): 7-12V, (Grenzwerte): 6-20V
  • Digitale I/O-Pins 54 (davon 15 ausgegebenes PWM )
  • Analog Input Pins 16
  • DC-Strom pro I/O-Pin 40mA
  • DC-Strom für Pin 3.3V 50mA
  • Flash-Speicher 256KB, davon sind 8KB von dem Bootloader
  • SRAM 8KB
  • EEPROM 4KB
  • Taktfrequenz 16 MHz
  • USB-Controller CH340

Bezugsquelle: https://www.roboter-bausatz.de/p/mega-2560-r3-board
Kosten: 19,95 EUR

Wasserpumpe

Die Pumpe ist zusammen mit dem Schlauch für den Wassertransport zuständig. Sie wird in ein Vorratsgefäß mit Wasser eingetaucht und pumpt das Wasser aus dem Reservoir durch den Schlauch zur Pflanze.

  • Betriebsspannung: DC 3-5 V
  • Stromaufnahme: 130-220 mA
  • Leistung: 0.4 – 1.5 W
  • Flussrate: 70-120 L/H
  • Hydraulisches Potenzial: 40-110 cm
  • Lautstärke: < 40 dB
  • Abmessungen: ca. 38,5 x 46,6 x 24mm
  • Durchmesser des Auslasses (außen): 8mm

Bezugsquelle: https://www.roboter-bausatz.de/p/mini-wasserpumpe-mit-usb-vertikal
Kosten: 1,95 EUR

PVC- oder Silikon-Schlauch

Der Schlauch dient als Wasserleitung zwischen dem Vorratsbehälter und den Pflanzen. Der Innendurchmesser muss etwas kleiner sein als der Außendurchmesser des Pumpenauslasses. Der Schlauch soll ca. 50cm – 100cm lang sein.

  • Innendurchmesser: 7mm
  • Außendurchmesser: 10mm
  • Länge: 50cm

1m PVC Schlauch für Wasserpumpe (Meterware)

Bezugsquelle: https://www.roboter-bausatz.de/p/1m-pvc-schlauch-fuer-wasserpumpe-meterware
Kosten: 0,95 EUR / m

Alternativ kann ein etwas flexiblerer Silikonschlauch verwendet werden.

Bezugsquelle: https://www.amazon.de/B06XWYBM2K-Silikonschlauch-Lebensmittelecht-10/dp/B079FSH5MF/
Kosten: 4,87 EUR / m

Relais 5V / 230V

Mit dem Relaismodul wird die Pumpe ein- und ausgeschaltet. Der Arduino kann nur Ströme bis 30mA schalten. Die Pumpe benötigt aber bis zu 300mA, eine größere Pumpe noch mehr. Das Relaismodul wird dagegen mit einem geringen Steuerstrom von 15-20mA geschaltet.

  • Schaltspannung 5V
  • Steuerstrom 15-20mA
  • Relais schaltet Lasten bis AC 250V / 10A und DC 30V / 10A

Bezugsquelle: https://www.roboter-bausatz.de/p/1-kanal-relais-5v-230v
Kosten: 1,35 EUR

Kapazitiver Bodenfeuchtigkeitssensor

Der kapazitive Feuchtigkeitssensor (Moisture Sensor) misst den Feuchtigkeitsgehalt der Pflanzenerde. Dies bezieht sich auf direkt anliegende Feuchtigkeit, wie z.B. Hautfeuchtigkeit oder Bodenfeuchtigkeit, nicht jedoch auf Luftfeuchtigkeit. Der Sensor liefert ein analoges Signal (Spannung), das die Feuchtigkeit repräsentiert. Der Arduino kann Spannungen nicht direkt messen und wandelt die an einem analogen Pin anliegende Spannung in einen digitalen Zahlenwert zwischen 0 und 1023 um.

Bei unserem kapazitiven Sensor liegen die gemessenen Werte zwischen 300 (ganz nass) und 600 (ganz trocken). Die genaue Kalibrierung ist abhängig vom Sensor und von der Art der Flüssigkeit/Feuchtigkeit, die gemessen wird.

  • Betriebsspannung: DC 3.3-5.5V
  • Betriebsspannung: 5mA
  • Output Spannung: DC 0-3.0V
  • Anschluss: PH2.0-3P
  • Korrosionsbeständig
  • Abmessungen: 99x16mm

Bezugsquelle: https://www.roboter-bausatz.de/p/kapazitiver-bodenfeuchtigkeitssensor-fuer-arduino-raspberry-pi
Kosten: 1,95 EUR

Stromversorgung

Der Batteriekasten enthält vier 1,5V Batterien und einen Schalter. Er versorgt das ganze System mit Strom und ist unabhängig von einem Netzanschluss.

Um das System nachhaltig zu betreiben, sollen Akkus statt Batterien verwendet werden. Auch die Programmierung müsste angepasst werden, um den Stromverbrauch zu minimieren.

Batteriehalter für 4x AA Batterien 6V mit An/Aus-Schalter

Bezugsquelle: https://www.roboter-bausatz.de/p/batteriehalter-fuer-4x-aa-batterien-6v-mit-an-aus-schalter
Kosten: 1,45 EUR

Netzteil 5V

Alternativ zu Batteriehalter und Batterien kann ein Netzteil verwendet werden, wenn ein Netzanschluss zur Verfügung steht.

Verkabelung

Dupont-Kabel werden verwendet, um die verschiedenen Komponenten des Systems miteinander zu verbinden. Es gibt männlich-männliche (m-m), männlich-weibliche (m-f) und weiblich-weibliche (f-f) Dupont-Kabel, je nach den Anschlüssen der Komponenten.

Verdrahtungsplan

ArduinoRelaismodulFeuchtigkeitssensorPumpeGNDVcc
A0AOUT
GNDx
Vccx
6IN
Mittex
NOrot
weißx
Vinx
GNDx

Falls die Pumpe saugt statt zu fördern, müssen die Kontakte andersherum angeschlossen werden.

Software

Eine erste einfache Version der Software liest den aktuellen Feuchtigkeitswert des Sensors und vergleicht mit einem festgelegten Wert, ob die Pflanze noch genug Wasser hat. Falls nicht, wird die Pumpe für eine festgelegte Zeit eingeschaltet, wir wählen 20 Sekunden. Nach dem Gießen dauert es eine gewisse Zeit, bis sich das Wasser verteilt hat. Daher wartet die Software 60 Sekunden, bevor eine erneute Messung ausgeführt wird.

#define RELAY_PIN 6
#define MOISTURE_PIN A0
#define PUMP_TIME 20000
#define WAIT_TIME 60000

int nMoisture = 0;

void setup() {
    // Relais-Pin als Ausgang definieren
    pinMode(RELAY_PIN, OUTPUT);

    Serial.begin(115200);
}

void loop() {
    
    // Feuchtigkeitswert ermitteln
    nMoisture = analogRead(MOISTURE_PIN);
    
    Serial.println(nMoisture);

    // Die gemessenen Werte liegen zwischen 
    // 300 (ganz nass) und 600 (ganz trocken.
    
    // Ist die Pflanze noch feucht genug?
    // Falls nicht, Pumpe einschalten.
    if (nMoisture > 500) {
        // Pumpe einschalten
        digitalWrite(RELAY_PIN, HIGH); 

        // warten während die Pumpe läuft
        delay(PUMP_TIME);

        // Pumpe ausschalten
        digitalWrite(RELAY_PIN, LOW); 
        
        // warten bis sich das Wasser verteilt hat
        delay(WAIT_TIME);
    }

    delay(500);
}

Die Programmierung ist nicht sehr elegant. Der Microcontroller kann während des Gießvorgangs nichts anderes tun, da er mit Warten beschäftigt ist (so genanntes „busy waiting“). Der Aufbau des Programms ist aber sehr einfach nachvollziehbar und dem Zweck angemessen.

Ausbau

Die Gießanlage kann durch Hinzufügen weiterer Komponenten erheblich verbessert werden.

Display

Ein Display könnte den aktuellen Feuchtigkeitswert und andere Zustände der Anlage anzeigen.

Füllstandsmessung

Mit einem Abstandssensor oder weiteren Feuchtigkeitssensor kann der Füllstand des Wasserbehälters gemessen werden. Falls zu wenig Wasser zur Verfügung steht, wird das auf dem Display und / oder mit einer blinkenden LED signalisiert und die Pumpe nicht eingeschaltet.

Einstellbare Bodenfeuchtigkeit

Der gewünschte Feuchtigkeitsgrad kann mit einem Potentiometer einstellbar gemacht werden. Das Display zeigt dann den Soll- und den Istwert an.

Energieversorgung

Die Energieversorgung könnte mit Akkus und Solarzellen ortsunabhängig gemacht werden.

Aufzeichnung und Zeit

Mit einem SD-Card-Modul können die Messwerte über einen längeren Zeitraum aufgezeichnet werden. Dabei bietet es sich an, ein Zeitmodul hinzuzufügen, damit die erfassten Werte zeitlich eingeordnet werden können.