Automatización De Riego
by Fernandaflores984 in Circuits > Arduino
1828 Views, 0 Favorites, 0 Comments
Automatización De Riego

La propuesta es crear un programador de riego doméstico para que cualquier persona con conocimientos básicos de software y hardware pueda recrearlo. Este proyecto inicio de la optativa de tecnologías libres de la facultad de ciencias agrarias, donde se nos dio la libertad de elegir un proyecto que solucionara un problema.
Objetivos :
- Sustitución del control manual
- Ahorro de agua
- Eficiencia de riego
- Control de riego
Su alcance será reducido, para aproximadamente una o dos macetas inicialmente. Será funcional para usuarios potencialmente con pequeñas áreas de cultivo doméstico.
El objetivo del proyecto una vez finalizado es que riegue nuestras plantas de forma automática, mediante datos de temperatura y humedad del suelo, a través de los sensores, comprobando con los parámetros que nosotros estableceremos.
Nos guiamos y tomamos las bases de los siguientes proyectos similares:
https://www.hackster.io/jhonna_garcia/automated-irrigation-system-using-cayenne-a99fb8
https://www.hackster.io/313777/semi-automated-irrigation-system-d16c8e
http://gustavopilla.com.ar/blog/2013/07/11/jarduino-automatizando-el-jardin-con-arduino
https://www.hackster.io/antoniraj/automated-watering-of-potted-plants-with-intel-edison-fd66b9
Funcionamiento :
Opera mediante sensores de humedad y temperatura conectados al Arduino uno a su vez conectado a una bomba de inmersión. Los sensores de humedad y temperatura toman los datos del ambiente y con ellos determinamos si regar o no. Las condiciones que nosotros plasmamos son; cuando la humedad del suelo es menor al 20% la bomba se enciende y se riegan las plantas; cuando la humedad del suelo es mayor al 60% la bomba se apaga y se deja de regar; cuando la humedad del suelo es mayor al 20% y la temperatura es mayor a 25 grados celsius la bomba se apaga y no se riega; cuando la humedad del suelo es menor al 40% y la temperatura es menor a 25 grados celsius la bomba se enciende y las plantas se riegan.
Estas condiciones nos permiten mantener nuestras plantas con los requisitos necesarios de agua, sin desperdiciar cuando la planta tiene algo de humedad y hace calor. Las condiciones se cancelan inmediatamente cuando la otra se cumple.
Supplies
Aquí dejamos una lista con los materiales y herramientas que ocupamos.
Materiales :
- Arduino uno
- sensor de humedad de suelo capacitivo v1.2
- sensor de humedad relativa y temperatura DHT 22
- puentes de cables o jumpers
- resistencia 5000 ohm
- relé
- protoboard
- bomba de 12v
- fuente de alimentación para la bomba
- fuente de alimentación para Arduino
- cajita
- cono para resguardar el sensor de temperatura
- mangueras
- espiga rosca hembra 3/4"
Herramientas:
- alicate
- destornillador
- lápiz soldador de estaño
- estaño
Esquemática Del Circuito

Conexión De Sensores



Inicialmente nosotros conectamos los dos sensores, sensor de humedad de suelo capacitivo v1.2 y sensor de humedad relativa y temperatura DHT 22, al Arduino.
Sensor de humedad de suelo :
Conectamos con cables jumpers del pin GND del sensor a una línea del protoboard que está conectado al pin GND del Arduino.
Con otro cable jumper conectamos del pin VCC del sensor a una línea del protoboard que esta conectado al pin 5V del Arduino.
Por último conectamos con un cable jumper desde el pin ACUT del sensor al pin A0 del Arduino.
Calibración de sensor de humedad de suelo :
Para calibrar el sensor inicialmente abrimos Arduino IDE, vamos a archivo, ejemplos, básicos, analgReadSerial, con este ejemplo y el sensor conectado al Arduino podemos calibrarlo. Abrimos el monitor serie y colocamos el sensor en agua, esperamos que el valor máximo obtenido sea constante y éste será el 100% de humedad de suelo. Copiar el dato y asignárselo a la variable humedadAgua del código "riego-automatico.ino" (adjunto al final).
Con el monitor serie abierto secamos el sensor y lo dejamos al aire, esperamos el valor mínimo obtenido sea constante y este será nuestro 0% de humedad del suelo. Copiar el dato y asignárselo a la variable humedadAire del mismo código.
Sensor de temperatura y humedad relativa :
Soldamos la resistencia de 5000 ohm entre el primer y segundo pin del sensor(de izquierda a derecha mirando el sensor de frente como en la imagen) para que nos quede fija, y soldamos unos cables a los pines del sensor y a los cables jumpers desde el primero, segundo, y cuarto pin del sensor.
Desde el primer pin, conectamos el cable jumper en la línea del protoboard que está conectado al pin 5V del Arduino.
Desde el segundo pin conectamos el cable jumper en el pin 2 del Arduino. Se puede usar cualquier pin, tener en cuenta que si se usa el pin 15 se debe desconectar el DHT antes de cargar el programa.
Desde el cuarto pin conectamos el cable jumper en la línea del protoboard que esta conectado al pin GND del Arduino.
Para ocupar este sensor tuvimos que descargar una librería, para hacer esto abrimos Arduino, nos vamos a herramientas, administrador de bibliotecas, y buscamos la librería : “DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library y Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor “ ambas se descargan juntas .
Conexión De La Bomba Con Relé


Conexión relé Arduino :
Con cables jumper conectamos el pin VCC del relé a la línea del protoboard conectado al 5V del Arduino.
Con cables jumper conectamos desde el pin GND del relé a la línea del protoboard conectado al pin GND del Arduino.
Con cables jumper conectamos desde el pin IN del relé al pin 9 del Arduino.
Conexión relé fuente bomba :
Con un cable conectamos desde el contacto auxiliar "COM" del relé hasta el contacto auxiliar "+" de la fuente.
Con un cable conectamos desde el contacto auxiliar "NO" del relé al cable de la bomba.
El otro cable de la bomba se conecta con el contacto auxiliar "-" de la fuente.
Código
// Se requiere tener instaladas las siguientes librerias // - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library // - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor #include "DHT.h" #define DHTPIN 2 // Declaramos el pin conectado al DHT // Descomentar el tipo de sensor a usar //#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 //#define DHTTYPE DHT21 // DHT 21 (AM2301) void setup() { Serial.begin(9600); Serial.println(F("DHTxx test!")); dht.begin(); pinMode(bomba, OUTPUT); //declaramos la bomba como salida } void loop() { DHT dht(DHTPIN, DHTTYPE); //CALIBRACION const int sensorPin = A0;//declaracion de variables sensor humedad suelo const int humedadAire = 470; //Reemplazar los valores obtenidos con el sensor seco al aire const int humedadAgua = 207; //Reemplazar con los valores obtenidos con el sensor en agua int porcentajeHumedad =0; const int bomba = 9; //declaramos el pin donde conectamos la bomba delay(2000); //Codigo del sensor DHT // Reading temperature or humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) float h = dht.readHumidity(); // Read temperature as Celsius (the default) float t = dht.readTemperature(); // Read temperature as Fahrenheit (isFahrenheit = true) float f = dht.readTemperature(true); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println(F("Failed to read from DHT sensor!")); return; } // Compute heat index in Fahrenheit (the default) float hif = dht.computeHeatIndex(f, h); // Compute heat index in Celsius (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false); Serial.print(F("Humedad relativa: ")); Serial.print(h); Serial.print(F("% Temperatura: ")); Serial.print(t); Serial.print(F("°C ")); //bloque sensor humedad suelo int humedad = analogRead(sensorPin); porcentajeHumedad = map(humedad, humedadAire, humedadAgua, 0, 100); Serial.print("Humedad de suelo: "); Serial.print(porcentajeHumedad); Serial.println("%"); //LOGICA if (porcentajeHumedad <20) { digitalWrite(bomba, LOW); Serial.println("Bomba PRENDIDA"); } if ((porcentajeHumedad>20) & (t>25)) { digitalWrite(bomba, HIGH); Serial.println("Bomba apagada"); } if ((porcentajeHumedad<40) & (t<25)) { digitalWrite(bomba, LOW); Serial.println("Bomba prendida"); } if (porcentajeHumedad>60) { digitalWrite(bomba, HIGH); Serial.println("Bomba apagada"); } delay(1000); }