Automatisch bewateringssysteem met Arduino voor uw planten, boomgaard of tuin

Gieter planten water geven

De zomer is een tijd waarin velen de neiging hebben om buiten op vakantie te gaan en planten vormen een probleem, omdat dat niet zo kan zijn geef water op die dagen dat je niet thuis bent. Bovendien verkopen tuinwinkels meestal een soort gel die de plant ongeveer een maand lang hydrateert en voedt. Maar met de hitte die het is of als je langer dan een maand weggaat, heb je een wat beter systeem nodig, zodat ze bij terugkeer levend en krachtig blijven.

Om dat mogelijk te maken, is de oplossing die er bestaat om een automatisch irrigatiesysteem die je kunt programmeren of als je een maker bent en je houdt van DIY, dan kun je het zelf doen met Arduino. De materialen die je nodig hebt, afgezien van het Arduino-bord, zijn gemakkelijk te vinden en redelijk goedkoop, zodat ze niet al te hoge kosten met zich meebrengen. Ook voor sommige elementen, zoals de watertank, enz., Kunt u gerecyclede materialen gebruiken ...

Als je een beetje op internet surft, zul je ontdekken verschillende projecten van dit type, maar misschien wel het meest interessante is tuin. Daarin zal ik geïnspireerd worden voor dit project, aangezien ik van mening ben dat andere irrigatiesystemen die alleen vochtigheidssensoren gebruiken en niets anders niet zo compleet zijn.

Wat heb je nodig?

De materialen die nodig zijn voor uw automatische irrigatiesysteem zijn:

  • Geen producten gevonden., hoewel anderen de moeite waard zouden zijn.
  • Breadboard of PCB als je het wilt solderen en permanent wilt maken.
  • Temperatuur- en vochtigheidssensor Geen producten gevonden.
  • Kabels
  • Sensor YL-69 vochtigheid op de grond met een hygrometer om in je pot (en) of aarde te steken.
  • Minipomp 3V onderdompelbaar water en een geschatte stroom van 120 l / u.
  • Diode 1N4007
  • Bipolaire transistor PN2222
  • 3 weerstanden: 1x 220 ohm, 1x 1k, 1x Geen producten gevonden.
  • Watertank, dat kan een vat zijn of een fles van 5 of meer liter, enz.
  • buis om verbinding te maken met de minipomp en naar de plant (en) te brengen

Como alternatieve ideeën, Ik zou je willen zeggen dat je ook een sonoff- of een WiFi-module kunt gebruiken om het via internet te activeren, waar je ook bent, of het kunt verbeteren door ook een automatische klep aan de kraan toe te voegen om het vullen van de watertank te programmeren wanneer deze leegloopt , enz.

Hoe het automatische irrigatiesysteem op te zetten

Schematische voorstelling van de montage in Fritzing

De montage is vrij eenvoudig. Je kan gebruik het bovenstaande schema om alle verbindingen te maken. Plaats uw systeem op een plek bij het raam of waar de plant die u wilt bewateren zich bevindt en steek de twee uiteinden van de vochtigheidssensor in de grond van de plant, vlakbij de stam.

Het automatische bewateringssysteem met Arduino zal water geven wanneer het een reeks omgevingsomstandigheden. Wanneer het bijvoorbeeld weinig licht of duisternis detecteert, is de luchttemperatuur concreet die we zullen configureren in de Arduino IDE-schets en is de luchtvochtigheid op de grond laag. Op dat moment zou hij de motor activeren om de plant water te geven.

Het is raadzaam om de planten 's nachts, wanneer het minder warm is, water te geven, aangezien dit tijdens intens warme dagen meer kan schaden dan alleen maar voordelen ...

Onthoud dat u moet introduceer de minipomp onder water in de tank die je hebt bestemd voor irrigatie, en die voldoende capaciteit moet hebben om de dagen dat je er niet bent vast te houden. U kunt eerdere tests doen om te weten hoe lang het duurt en u moet wat meer water laten staan ​​voor het geval het verdampt door de intense hitte ...

Het spreekt voor zich dat de buis zo aan de plant moet worden bevestigd dat deze niet met de wind meebeweegt of dat het water eruit kan vallen en verloren gaat. En ik denk dat het niet nodig zou zijn om te onthouden dat je een stroomtoevoer naar het Arduino-bord moet behouden om het te laten werken ...

programmering

Dit is het moment waarop u het code nodig in Arduino IDE om de microcontroller te kunnen programmeren die de hardware beheert die je hebt gebruikt. Dit is het moment om de juiste temperatuur, vochtigheid en lichtwaarden aan te passen aan het water in uw omgeving, aangezien dit kan variëren afhankelijk van waar u zich bevindt. Maar het voorbeeld dat je als basis kunt gebruiken is (ik heb opmerkingen achtergelaten waarin je de waarden kunt wijzigen, de rest kun je zo laten):

Download de code van code-irrigatie-autobewateringsauto voor uw tuin

#include <SimpleDHT.h>
#include <SPI.h>
#define humidity_sensor_pin A0
#define ldr_pin A5
//Bibliotecas para los módulos sensores usados necesarias
//Y definición de variables para los sensores de humedad y LDR en los pines A0 y A5

int pinDHT11 = 2;
SimpleDHT11 dht11;
int ldr_value = 0;
int water_pump_pin = 3;
int water_pump_speed = 255;
//Aquí puedes dar valores desde 0 a 255 para la velocidad a la que trabajará la minibomba
//Haz pruebas previas del caudal y configura la. Yo he //elegido 255 pero ustedes pueden elegir la que estimen conveniente. A más velocidad, mayor //bombeo de agua
void setup() {
  Serial.begin(9600);
}
void loop() {
// Mide la temperatura y humedad relativa y muestra resultado
  Serial.println(“***”);
  Serial.println(“Muestra DHT11…”);
  
  byte temperature = 0;
  byte humidity_in_air = 0;
  byte data[40] = {0};
  if (dht11.read(pinDHT11, &temperature, &humidity_in_air, data)) {
    Serial.print(“Lectura del sensor DHT11 fallida”);
    return;
  }
  
  Serial.print(“Muestra RAW Bits: “);
  for (int i = 0; i < 40; i++) { Serial.print((int)data[i]); if (i > 0 && ((i + 1) % 4) == 0) {
      Serial.print(‘ ‘);
    }
  }
  Serial.println(“”);
  
  Serial.print(“Muestra OK: “);
  Serial.print(“Temperatura: “);Serial.print((int)temperature); Serial.print(” *C, “);
  Serial.print(“Humedad relativa en aire: “);Serial.print((int)humidity_in_air); Serial.println(” %”);
  
  int ground_humidity_value = map(analogRead(humidity_sensor_pin), 0, 1023, 100, 0);
  Serial.print(“Humedad en suelo: “);
  Serial.print(ground_humidity_value);
  Serial.println(“%”);

  int ldr_value = map(analogRead(ldr_pin), 1023, 0, 100, 0);
  Serial.print(“Luz: “);
  Serial.print(ldr_value);
  Serial.println(“%”);
   Serial.println(“***”);

//**
// Condiciones de riego 
// Si la humedad en el suelo es igual o inferior al 60%, si la luminosidad es inferior al 30%,
// Si la temperatura es inferior al 35%, entonces el sistema de riego riega. 
// En caso de que no se  cumpla alguno o ninguno de los 3 requisitos anteriores,
// el sistema de riego no riega
//**
//Aquí puedes variar los parámetros que necesites de 60, 35 y 30, e incluso usar otros operandos <>=...
 if( ground_humidity_value <= 60 && ldr_value<30 && temperature<35) {
 digitalWrite(water_pump_pin, HIGH);
 Serial.println(“Irrigación”);
 analogWrite(water_pump_pin, water_pump_speed);

 }
 else{
 digitalWrite(water_pump_pin, LOW);
 Serial.println(“Riego detenido”);

 }
 delay (2000); 
// Ejecuta el código cada 2000 milisegundos, es decir, 2 segundos. Puedes variar la frecuencia de muestreo
}

Meer informatie - Arduino-programmeercursus (gratis pdf)

Fuentes

Meer informatie - tuin