Hallo hier zeig ich dir, wie ich meine Pflanzen trotz fehlenden grünen Daumen am Leben erhalte, durch eine automatische Pflanzenbewässerung,
mit der automatischen Pflanzenbewässerung werden zwei Pflanzen bewässert.

Als Hardware habe ich verwendet:

  • Arduino Nano
  • Unterwasserpumpe 2x (aus einem Set)
  • Feuchtigkeitssensor 2x
  • 5V Netzteil
  • Plastikschlauch (in benötigter Länge) passend für die Wasserpumpe
    (aus einem Set)

Links zu den Produckten die ich verwendet habe findest du am Ende.

Meine Anforderung:

Die Pflanzen sollen bewässert werden, wenn der Sensor meldet, dass die Bodenfeuchtigkeit unter 25% liegt.
Die Messung wird zweimal am Tag durchgeführt.
Da an dem Platz wo die Pflanzen stehen nur eine normale Steckdose ist soll dder Arduino Strom über ein Netzteil bekommen.

Der Aufbau:

Die Sensoren werden jeweils an einem analogen Pin am Arduino und die Pumpen jeweils an einem digitalen Pin.
Die Sensoren benötigen noch einen 3V Stromanschluss, dieser kann vom Arduino genommen werden.
Der minus Anschluss von Pumpe und Sensor können zusammen an einen der Ground Pins des Arduinos angeschlossen werden.
Plastikschlauch (nach benötigter/ gewünschter länge) passend für die Wasserpumpe.

Aufbauskize


Der Code:

Als erstes die Initiierung der Variabelen.

Hier werden die Anschlusspins des Arduino’s den Variablen zugewiesen.
Achtung!!!: Der sensorMax-Wert kann je nach verwendeten Feuchtigkeitssensor variieren. Den Maximalwert kann man einfach raus finden in dem man den Wert des Feuchtigkeitssensor per Serial.print über den Terminal ausgibt. Hierfür einfach den Wert an der Luft ablesen, danach den Sensor in ein Glas Wasser halten. So bekommt man den Maximal und Minimal Wert den der Sensor an den Arduino sendet raus.

#include <Arduino.h>

int sensorA = A1; // Datenanschluss vom Sensor A
int sensorB = A5; // Datenanschluss vom Sensor B
int pumpA = 4;  // Stromanschluss für die Pumpe A
int pumpB = 8;  // Stromanschluss für die Pumpe B
int feuchtigkeitA = 0; // Initiierung der Variabelen des umgerechneteten Sensorwertes in %
int feuchtigkeitB = 0; // Initiierung der Variabelen des umgerechneteten Sensorwertes in %
int sensorWertRawA; // der Sensorwert den Sensor A ausgibt
int sensorWertRawB; // der Sensorwert den Sensor B ausgibt
int sensorMaxA = 1023; //der maximal Wert den der Sensor bei 100% Feuchtigkeit ausgibt
int sensorMaxB = 1023; //der maximal Wert den der Sensor bei 100% Feuchtigkeit ausgibt
//int wartezeit = 1000; //Zeit fürs Debuggen
int wartezeit = 43200000; // Zeit in Millisekunden für 12 Std. (Überprüfung 1x Std. 3600000)

Nun kommt der “setup” Bereich, dieser Teil wird einmal beim Start des Arduino durchgeführt.
Hier wird festgelegt ob ein Arduino-Pin ein Eingangssignal bekommt oder ein Ausgangssignal senden soll.

void setup() {
pinMode(sensorA, INPUT); // hier wird festgelegt das der Pin sensorA (A1) ein eingangssignal ist
pinMode(sensorB, INPUT); // hier wird festgelegt das der Pin sensorB (A5) ein eingangssignal ist
pinMode(pumpA, OUTPUT); // hier wird festgelegt das der Pin pumpA (4) ein ausgangssignal sein soll
pinMode(pumpB, OUTPUT); // hier wird festgelegt das der Pin pumpA (8) ein ausgangssignal sein soll
}

Als nächstest kommt der Loop-Bereich, der Teil des Codes wird in einer Endlosschlefe durchgeführt.

Als erstes wird der Wert vom Sensor A abgefragt und in die Variable sensorWertRawA gespeichert.
Dieser Wert wird als nächstes in Prozent umgerechnet mit der Methode map. Dabei wird der maximale Wert sensorMaxA im verhältnis zum aktuellen wert gesetzt um die Prozentzahl zu bekommen.
ACHTUNG!!!: Bei dem Sensor ist es so, je kleiner der Wert desto mehr Feuchtigkeit wird gemessen.

Im bereich Pumpe steuern wird der feuchtigkeitsA Wert abgefragt und wenn dieser und 20 (20%) liegt, wird die Pumpe eingeschaltet für 2000 ms, was 2 sec. Entspricht.
ACHTUNG!!!: Die dauer wie lange die Pumpe laufen soll muss getestet werden, es kommt auf die Leistung der Pumpe an, wieviel Wasser diese in 1 sec. Pumpt.

Das gleiche wird mit der nächsten if -Anweisung für die Pumpe B gemacht.
Die else – Anweisung muss nicht verwendet werden, aber man könnte hier eine grüne LED leuchten lassen, das z.B. der Boden noch feucht genug ist.

Zum Schluss wird hier die durch ein Delay gewartet bis der Code weiter geführt wird. In dem Fall sind es 12 Std.
Nach dem Delay wird nichts mehr ausgeführt und der “loop” wird wieder von vorne ausgeführt.

void loop() {

//Sensor A lesen und Prozentausrechnen
sensorWertRawA = analogRead(sensorA); 
feuchtigkeitA = map(analogRead(sensorA), 76, sensorMaxA, 100, 0); // 

//Sensor B lesen und Prozentausrechnen (Hier wird genau das gleiche wie bei A gemacht.)
sensorWertRawB = analogRead(sensorB);
feuchtigkeitB = map(analogRead(sensorB), 67, sensorMaxB, 100, 0);

//Pumpen steuern
  if (feuchtigkeitA < 20) {
    digitalWrite(pumpA, HIGH); //Pumpe wird eingeschaltet
    delay(2000); // die Dauer wie lange die Pumpe an sein soll.
    digitalWrite(pumpA, LOW); //Pumpe wird ausgeschaltet
  }
  if (feuchtigkeitB < 20) {
    digitalWrite(pumpB, HIGH);
    delay(2000);
    digitalWrite(pumpB, LOW);
  }
  else {} 

delay(wartezeit);
}

Das war schon alles. War doch ganz einfach 🙂

Kommen wir nun zu meiner Einkaufsliste.

Netzteil 9V/2A
https://www.amazon.de/dp/B07NSMYZXS/ref=cm_sw_em_r_mt_dp_Q85G1JSTS1VCYHXKJFNW?_encoding=UTF8&psc=1

Delock Adapter DC 5,5 x 2, 1 mm Buchse
https://www.amazon.de/dp/B009PH1J5Y/ref=cm_sw_em_r_mt_dp_55C24EJAK83RFY3QE2Q3?_encoding=UTF8&psc=1

AZDelivery 3 x Nano V3.0
https://www.amazon.de/dp/B078SBBST6/ref=cm_sw_em_r_mt_dp_Y6ZE9YGQD9XH61YEB5N8?_encoding=UTF8&psc=1

WayinTop Automatische Bewässerung DIY Kit Bewässerungssystem (Aus dem Set nur die Pumpen und den Schlauch genommen)
https://www.amazon.de/dp/B07TJQSHR2/ref=cm_sw_em_r_mt_dp_GXFN7QBCZZS7DNWEM18P?_encoding=UTF8&psc=1

iHaospace Soil Moisture Sensor and Soil Detector
https://www.amazon.de/dp/B07PPSYJW8/ref=cm_sw_em_r_mt_dp_W35G89RNDTQR4ZMG0WH4?_encoding=UTF8&psc=1