miércoles, 23 de marzo de 2016


La idea principal es automatizar un invernadero con arduino, con el que vamos a controlar:
- Temperatura y humedad del ambiente (sensor DHT11)
- Humedad de la tierra (sensor casero)
- Iluminación (LDR)
- Riego (humidificador)
- Nivel del agua del riego (sensor de nivel del agua arduino)
- Visualización de los valores (pantalla lcd )
- Ventilación (ventilador)
- Alerta de riesgo (zumbador)

Primero tenemos que planificar nuestro tiempo y vamos a usar una herramienta llamada Gantt Project

Pantalla lcd mediante interfaz i2C
Con este dispositivo vamos a visualizar los valores de los sensores en tiempo real, es una herramienta muy útil porque podemos ver los valores ya convertidos en grados, estados y porcentajes y trabaja con un voltaje muy bajo 5V.

Pero para optimizar mas el tiempo vamos a usar el interfaz I2C que se conecta en la parte trasera de la pantalla así nos evitamos de conectar todos los pines de la lcd es muy fácil de conectar ya que solo lleva 4 cables que se conectan así:
-rojo  a VCC
-negro a GND
-SDA del arduino
-SCL del arduino
Lo importante a tener en cuenta es incluir la libreria del IDE de arduino Wire y descargar la LiquidCristal que lo puedes hacer aqui, debes de tener en cuenta las dimensiones de la pantalla para que funcione. Algo que intente hacer el probar el varias versiones de arduino, pero solo funciono con la 1.0.5
Un ejemplo que te puede ayudar para empezar a configurar tu pantalla es el sgt:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
void setup() {
  // Inicializar el LCD
  lcd.init();
  //Encender la luz de fondo.
  lcd.backlight();
  // Escribimos el Mensaje en el LCD.
  lcd.print("Hola Mundo");
}
void loop() {
   // Ubicamos el cursor en la primera posición(columna:0) de la segunda línea(fila:1)
  lcd.setCursor(0, 1);
   // Escribimos el número de segundos trascurridos
  lcd.print(millis()/1000);
  lcd.print(" Segundos");
  delay(100);
} 
Sensor de humedad y temperatura
El sensor DHT11 consigue medir la temperatura y humedad del ambiente recibiendo la información únicamente a través del pin digital 2. Es capaz de leer un porcentaje de humedad relativa de entre el 20 y el 90% con un error de +-5%. Ademas, lee las temperaturas entre los 0 y los 50ºC. Necesita una alimentación de entre 3.3 y 5V de continua
En cuanto a sus conexiones:
- + a VCC
- - a  GND
- out salida del arduino


Para poder programar el sensor DHT11 en arduino necesitamos una libreria que implementa la comunicaion con el dispositivo. Esta libreria esta disponible en la pagina oficial de arduino o puedes pinchar aquí. Esta libreria esta disponible para incorporarla e nuestro IDE de arduino, descomprimimos el archivo descargandolo y la crapeta resultante la movemos al directorio libraries, dentro de la carpeta de instalacion de arduino.  Abrimos el IDE y en el apartado de archivo - ejemplos - DHT11 tendremos un ejemplo de codigo como este.

#include "DHT.h" 
// Creamos una variable del tipo DHT (definida en la librería que hemos incluído)
DHT dht; 
void setup(){
  Serial.begin(9600);
  Serial.println();
  Serial.println("Status\tHumidity (%)\tTemperature
 (C)\t(F)"); 
  dht.setup(2); // Sensor conectado al pin 2
} 
void loop(){
  // Esperamos el tiempo mínimo establecido por el sensor
  delay(dht.getMinimumSamplingPeriod()); 
  // Obtenemos la humedad y la temperatura (en grados)
  float humidity = dht.getHumidity();
  float temperature = dht.getTemperature(); 
  Serial.print(dht.getStatusString());
  Serial.print("\t");
  Serial.print(humidity);
  Serial.print("\t\t");
  Serial.print(temperature);
  Serial.print("\t\t");
  // Convertimos la temperatura de Celsius a Fahrenheit
  Serial.println(dht.toFahrenheit(temperature));
}
}
Ventilación con aviso de funcionamiento
Cuando la temperatura del ambiente sea mayor de la que hemos configurado en mi caso 24ºC, sonara un zumbador que hemos configurado como salida digital y pasado un retardo enciende el ventilador que vamos a controlarlo con un mosfet irf540 para el que he diseñado una placa conjunta con la iluminación led que se alimentan a 12V

Parte del programa usado:
#include "DHT.h" 
#define PIN 2 
DHT dht; 
int Temp=24; //Parámetro de encendido de ventilador
void setup() { 
  Serial.begin(9600); 
  pinMode(8,OUTPUT);
  }
void loop() {
  float t = dht.getTemperature();//Serial.println("Temperatura: ");   
  if (t >=Temp){
    digitalWrite(8,HIGH);
     }
  if(t < Temp){
    digitalWrite(8,LOW);
      }
  delay(3000);
}
Iuminacion
He creado una fotocelula con una resistencia LDR,conectado a una entrada analogica del arduino para que detecte la intensidad de luz que recae sobre el invernadero, encendera una tira de luces ledque sera controlada por medio de un transistor una vez detecte oscuridad y se pagara cuando insida sobre ella luz.

Sensor de humedad de la tierra
Hice una placa con dos cintas de cobre añadiendole a un lado una resistencia de 10K, y la salida de va conectada al arduino  para crear una diferencia de resistividad al estar en contacto en la humedad de la tierra me dará unos valores que yo misma he configurado según los estados. Tambien hay un sensor muy util para arduino que puedes usar
Este ha sido el programa creado segun los valores puestos aprueba
int Valor;  
void setup() {
Serial.begin(9600);
}
void loop(){
Serial.print("Sensor de Humedad valor:");
Valor = analogRead(0);
Serial.print(Valor);
if (Valor <= 300)
   Serial.println(" Encharcado");
if ((Valor > 300) and (Valor <= 700))
    Serial.println(" Humedo, no regar");
if (Valor > 700)
    Serial.println(" Seco, necesitas regar");
delay(1000);
}
Humidificador
He usado este dispositivo como una forma de riego ya que se ve muy curioso en forma de niebla, para controlarlo vamos a utilizar un mosfet para que según la temperatura de la tierra riegue o no, para ello he diseñado una placa de control porque el humidificador trabaja a 24V. Muy importante usar un recipiente que el humificador quede con un dedo por encima y otro por debajo de agua porque se puede romper su membrana

Sensor nivel del agua
Nos va ser muy útil ya que el humificador trabaja con una cantidad de agua y este nos va avisar cuando baje del nivel al que hayamos configurado el margen de agua para su correcto funcionamiento sin riesgos. Sus conexiones son muy sencillas 
- + a VCC
- - a GND
- out salida del arduino
Funcionamiento


Diseño de la placa impresa de doble cara























4 comentarios:

  1. cuanto tiempo puede estar encendido ???

    ResponderEliminar
  2. Hola mira que bueno lo voy a probar sin el humidificador gracias

    ResponderEliminar
  3. Yo estoy comenzando en la electronica y quería preguntarte si tenes algún links o algo con tus proyector para tener unas ideas sobre todo de su programación bueno muchas gracias

    ResponderEliminar
  4. Tendrías un links donde se puedan ver tus proyectos gracias

    ResponderEliminar