lunes, 2 de mayo de 2016

Tutorial - Huertos Inteligentes (DHT11 + Sensor de humedad de suelos)

Huertos Inteligentes (Herramientas básicas)




 En este tutorial llevaremos a cabo una simple monitorización de nuestras plantas. Esto, es aplicable a los huertos urbanos que cada vez más gente acostumbra a tener en casa. Monitorizaremos la humedad de la tierra, la humedad del ambiente y la temperatura ambiente para llevar de manera más eficiente el control y el cuidado de nuestras plantas.




Para el siguiente tutorial vamos a usar el tutorial del sensor DHT11 con muestra por pantalla en LCD como base. (Tutorial - DHT11

Los materiales que usaremos para este tutorial serán los siguientes:

- Arduino UNO

- Un potenciómetro de 10K
- Sensor DHT11 (Temperatura y Humedad ambientes)
- LCD 16x02
- Resistencia de 220 Ohm
- Cables
- Sensor FC-28 (Humedad de suelos) con módulo de control.

Seguidamente podéis volver a consultar en la siguiente imagen el montaje del DHT11. Después explicaremos cómo conectar nuestro sensor de humedad de suelos a nuestro montaje.




Así pues para conectar el sensor de Humedad de suelos al anterior montaje haremos lo siguiente:
Fuente: DealXtreme
Como podemos ver en la imagen el sensor lleva un pin positivo y otro negativo. Estos dos pines irán a los dos pines de la parte superior del módulo de control. De la parte inferior del módulo nos salen 4 pines. De izquierda a derecha tenemos AO ( Salida Analógica del sensor), DO (Salida digital del sensor controlada por el potenciómetro), VCC (+5 V) y GND que conectaremos con nuestro GND en el circuito. Para poder controlar lo que nos mostrará la pantalla acerca de la humedad del suelo usaremos el pin analógico que lo contectaremos al pin A0 en nuestro Arduino UNO.





Una vez todo montado escribiremos el código.


 #include <LiquidCrystal.h>
 #include <DHT11.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int pin=7;
int v_suelo;
DHT11 dht11(pin);

void setup() {
  // Definimos la LCD con dimension 2x16 y definimos 
//los caracteres que deben salir en las filas:
lcd.begin(16,2);
lcd.print("T=      H=");

}

//Hasta aquí hemos definido qué queremos que 
//salga impreso por la pantalla y el tamaño de ésta.
void loop() { 
 //Sensor de Humedad
  //0 - 250 seco
  //250 - 600 húmedo
  //600 - 950 Encharcado
      v_suelo= analogRead(0);
       int error;
       float temperatura, humedad;
       if((error = dht11.read(humedad, temperatura)) == 0){
        
  lcd.setCursor(2,0);
  lcd.print(temperatura);
  lcd.setCursor(10,0);
  lcd.print(humedad);
       }

       else{
        lcd.setCursor(0,0);
        lcd.print("ERROR");
       } 
 
 //condiciones de aviso de riego
  if(v_suelo<=250){
       lcd.setCursor(0,1);
lcd.print("Me Ahogo!     ");}
  if((v_suelo>250)&&(v_suelo<=600)){
  lcd.setCursor(0,1);
lcd.print("Estoy bien :)   ");
}
  if(v_suelo>600){
  lcd.setCursor(0,1);
lcd.print("Necesito Agua!   ");
}


  
  delay(1000);
  
  
} 
Como vemos, el programa no tiene ninguna complejidad. Hemos usado condicionales para que, dependiendo del grado de humedad del suelo, nos informe de si debemos o no regar nuestra planta. 



Además, aprovechándonos del sensor DHT11 podríamos usar sus condiciones para ajustar mucho más las necesidades de riego. Quizás si tenemos una temperatura ambiente de 36ºC y nuestra planta tiene una humedad buena de tierra podemos programar un condicional como por ejemplo: 

if(v_suelo>250)&&(v_suelo<=600)&&(temperatura>36){

lcd.setCursor(0,1);
lcd.print("Creo que voy a necesitar agua");
}

Se pueden hacer un montón de cosas con este montaje. Incluso podríais ir al tutorial de los buzzers y programar una alarma para cuando la humedad del suelo se baja y necesite regarse. Para los más manitas como idea podríais usar electroválvulas de rocío para que sea el propio sistema el que cuando necesita agua se auto riegue. Hay infinidad de configuraciones posibles!

Espero que os haya gustado y como siempre, para cualquier duda usad los comentarios de abajo.

C.