jueves, 24 de marzo de 2016

Cagei: conexión del sensor DTH11 al circuito


Para usar el sensor de humedad y temperatura DHT11 se requiere la libreria Dht11.h


En este caso usaremos el pin digital 7. Seguiremos el artículo de instructables "Sensor de humedad y temperatura"

Hay que recordar que este artículo es la continuación  de http://tecnonaranjal.blogspot.com.co/2016/03/cagei-configuracion-del-modulo-reloj.html que corresponde a un temporizador digital, que además mostrará la temperatura y humedad del cultivo hidropónico interno en android.



Ahora les presento el código con el modulo ds1307 y la temperatura funcionando a la par.



#include <Wire.h> 
#include "RTClib.h"
#include "DHT.h"
#define DHTPIN 7
#define DHTTYPE DHT11 

DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 RTC;

int hora=0;
int minutos=0;
int segundos=0;
int luz=13;
int aire=12;


void setup () {
  //Inicializamos el puerto serie, wire y el modulo RTC
    Serial.begin(9600);
    dht.begin();
    Wire.begin();
    RTC.begin();
    //Si quitamos el comentario de la linea siguiente, se ajusta la hora y la fecha con la del ordenador
    //RTC.adjust(DateTime(__DATE__, __TIME__));
  
  pinMode(luz,OUTPUT);
  pinMode(aire,OUTPUT);

  }
  
void loop () 
  {
    
 // Se llama a la función fecha() para imprimir la fecha en el monitor serie -----
    fecha();
//-------------------------------------------

 //lee el tiempo del modulo ds1307, previamente se ha configurado con la hora.
    DateTime now = RTC.now();
    hora=(now.hour(),DEC);
    minutos=(now.minute(),DEC);
    segundos=(now.second(),DEC);

// tanto el temporizador de luz como aire se puede incluir en un if mayor
// para dar la opción de manual o automático y poder mostrar desde el celular
// como se puede accionar con la app.


//-------------------------- TEMPORIZADOR  DIGITAL PARA ENCENDER LA ILUMINACION ------------------------
// el foto periodo inicia a las 6am y termina a las 20:00 horas o 8pm.
// 14 horas de luz, con un periodo de 10 sin la misma.
// hay que buscar la manera de modificar esto desde android, pero que quede grabado en rom.

  if (now.hour()>= 6 && now.hour()<20)
  {
  digitalWrite(luz,HIGH);
  Serial.println("led on");
  }
  else 
  {
  digitalWrite(luz,LOW);
  Serial.println("led off");
  }

  
//--------------------TEMPORIZADOR PARA ENCENDER Y APAGAR EL AIREADOR -----------------------------------

// Este se encenderá 4 veces al día, de las 1:00 a las 3:00;    2 horas
// de las 9:00 a las 11:00                                      2 horas
// de las 13:00 a las 14:00                                     1 hora
// de las 18:00 a las 20:00                                     2 horas total 7 horas, potencia del aireador 5W

if (now.hour()>= 1 && now.hour()<3)
  {
  digitalWrite(aire,HIGH);
  Serial.println("aireador on");
  }
  else if (now.hour()>= 9 && now.hour()<11)
    {
      digitalWrite(aire,HIGH);
      Serial.println("aireador on");
    }
      else if (now.hour()>= 13 && now.hour()<14)
        {
        digitalWrite(aire,HIGH);
        Serial.println("aireador on");
        }
        else if (now.hour()>= 18 && now.hour()<20)
          {
            digitalWrite(aire,HIGH);
            Serial.println("aireador on");
          }
  else
  {
  digitalWrite(aire,LOW);
  Serial.println("aireador off");
  }


//--------------------- LEER SENSOR DHT11 ----------------------------

int h = dht.readHumidity();// Lee la humedad
int t = dht.readTemperature();//Lee la temperatura
//////////////////////////////////////////////////Humedad
Serial.print("      Humedad Relativa: ");                 
Serial.print(h);//Escribe la humedad
Serial.println(" %");                     
///////////////////////////////////////////////////Temperatura              
Serial.print("     Temperatura: ");                  
Serial.print(t);//Escribe la temperatura
Serial.println(" C");                   
///////////////////////////////////////////////////             





delay(1000);   
   
}//cierre del void loop



//-------------- función para leer la fecha del ds1307-----
//-------------- también escribe en el monitor serie ------

void fecha(){
   
    //lee el tiempo del modulo ds1307, previamente se ha configurado con la hora.
    DateTime now = RTC.now();
    hora=(now.hour(),DEC);
    minutos=(now.minute(),DEC);
    segundos=(now.second(),DEC);
  
   //imprimimos por el monitor serial para ver la información en el pc
  
    //Imprimimos el dia
    Serial.print(now.day(), DEC);
    Serial.print('/');
    //Imprimimos el mes
    Serial.print(now.month(), DEC);
    Serial.print('/');
    //Imprimimos el año
    Serial.print(now.year(), DEC);
    Serial.print(' ');
    //Imprimimos la hora
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    //Imprimimos los minutos
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    //Imprimimos los segundos
    Serial.print(now.second(), DEC);
    Serial.println();
  }
//---------------- FIN FUNCION FECHA-------------------------------------------

No hay comentarios:

Publicar un comentario