Einleitung
In diesem Tutorial werden wir einen Bodenfeuchtigkeits-Sensor (Soil Moisture Sensor) mit einer kleinen Wasserpumpe kombinieren, um so ein automatisches Bewässerungssystem mit einem Cactus Rev 2 zu erstellen. Diese Steuerung ist zum Beispiel für (m)einen Smart Plant Pot sehr sinnvoll.
Der Arduino Cactus Rev 2 misst mit dem Bodenfeuchtigkeits-Sensor (Soil Moisture Sensor) den Wassergehalt in der Erde und schaltet ab einer festen Schwelle die Wasserpumpe ein, um so den gewünschten Wassergehalt in der Erde wieder herzustellen.
Teileliste
- Cactus Rev 2 / Atmega32u4
- Breadboard und Steckverbindungen
- Powerbank (In diesem Tutorial ist eine externe Stromversorgung zwingend erforderlich!)
- Soil Moisture Sensor
- Mini Wasserpumpe
- Transistor BD911 NPN
Verkabelung
Die Verkabelung ist dieses Mal nicht so simpel, wie bei den bisherigen Tutorials. Bevor es jedoch los geht, solltet ihr die Verkabelung vom Soil Moisture Sensor vornehmen, in dem ihr dieses Tutorial lest: Tutorial: Arduino Cactus Soil Moisture Sensor
Nun können wir die Mini Wasserpumpe verkabeln:
- Den linken Pin vom Transistor (orangenes Kabel) an Pin 9 vom Atmega.
- Minuspol der Pump an den mittleren Pin vom Transistor.
- Pluspol der Pumpe an RAW vom Atmega.
- Den rechten Pin vom Transistor an GND vom Atmega.
- Plus und Minus der externen Stromversorgung an RAW und GND vom Atmega.
Code
Dieser Code liest den aktuellen Feuchtigkeitsgehalt in der Erde und beginnt die Pumpe anzusteuern, sobald der gemessene Wert unter 20% fällt. Den unten stehenden Code findet ihr wieder auf Github.
[sam_zone id=”2″ codes=”true”]
//This is a extended Sketch for the Cactus Rev 2 to read the value from a soil moisture sensorw ith a anti oxidation functionality and //also to controll a water pump for watering a plant for example. //You can find the tutorial on http://derpade.de/ //@author Patrick Hausmann <privat@patrick-designs.de> int soilMoisturePin1 = 4; int soilMoisturePin2 = 3; int soilMoisturePin3 = A3; int baudrate = 9600; //Transistor 'Base' pin or input pin of motor driver ic to Arduino PWM Digital Pin 3 const int motorPin = 9; int Speed; //Variable to store Speed, by defaul 0 PWM int flag; void setup() { pinMode(motorPin, OUTPUT); //Set pin 3 as an OUTPUT Serial.begin( baudrate ); while(!Serial); //Waiting for Serial connection } int readSoilMoisture() { int value; pinMode(soilMoisturePin1, OUTPUT); pinMode(soilMoisturePin2, OUTPUT); digitalWrite(soilMoisturePin1, HIGH); digitalWrite(soilMoisturePin2, LOW); delay(500); value = analogRead(soilMoisturePin3); digitalWrite(soilMoisturePin2, HIGH); digitalWrite(soilMoisturePin1, LOW); delay(500); digitalWrite(soilMoisturePin2, LOW); return value; } void loop() { int value_water = readSoilMoisture(); String water = String((int)((((double)value_water/1023.0)*100.0)));//Convert Raw value to percentage. This is a generic calculation, depending on raw values from 0 to 1023. Serial.print("Soil moisture: "); Serial.print(water); Serial.print("% Raw value: "); Serial.println( value_water ); //Check if incoming data is available: if (water.toInt() < 20) { Serial.println("Too dry, we should water it."); Speed = 100; flag=0; } else { Serial.println("Still wet, no need to water it."); Speed = 0; } if (Speed>=50 && Speed<=255) { analogWrite(motorPin, Speed); if (flag==0) { Serial.print("Motor spinning with "); Serial.print(Speed); Serial.println(" PWM"); flag=1; } } else if (Speed == 0) { analogWrite(motorPin, Speed); } delay(3000); }
Video
Bitte akzeptiere YouTube-Cookies, um dieses Video abzuspielen. Wenn du akzeptierst, greifst du auf Inhalte von YouTube zu, einem Dienst, der von einem externen Dritten bereitgestellt wird.
Wenn du diesen Hinweis akzeptierst, wird deine Auswahl gespeichert und die Seite aktualisiert.
Alle Tutorials zum Cactus Rev 2
- Tutorial: Arduino NTC 100K Thermistor schnell anschließen
- Tutorial: Arduino Cactus Soil Moisture und Wasserpumpe ansteuern
- Tutorial: Arduino Cactus Ultraschallsensor
- Tutorial: Arduino Cactus Rev 2 Soil Moisture Sensor
- Tutorial: Cactus Rev 2 Atmega32u4 ESP8266 Websocket
- Tutorial: Sketch/Firmware auf ESP8266 über ein Atmega32u4 hochladen
- Tutorial: Cactus Rev 2 ESP8266 flashen
- Tutorial: Cactus Rev 2 Atmega32u4 ESP8266-03 - Getting Started
Servus !
Ich habe einen Arduino Uno, welcher mit atmega328p-pu integriert ist.
würde es auch damit funktionieren?
Und wenn ja, was müsste ich statt raw benutzten: 3,3V oder 5V ?
Prinzipiell ja. Aber ich kenne das Board nicht.
Was du als RAW nehmen musst, müsste in den Specs vom Board stehen.
Ist es zwanghaft nötig das Modul per ATmega32u4 anzusteuern oder würde ein Arduino Uno oder Arduino Mega 2560 ebenso ausreichen?
Eigentlich ist nahezu jeder Atmega in der Lage, die obige Schaltung umzusetzen. Aber man muss wahrscheinlich die Pins anpassen, und ggfs. Die Messspannung.
Was für ein Schlauch wird für die Tauchpumpe benötigt?
Mit der aktuellen Teileliste würde die Pumpe ja noch kein Wasser fördern können.