lunes, 25 de septiembre de 2017

Arduino: Medir temperatura y humedad con DHT11

Por fin me ha llegado el sensor de temperatura y humedad DHT11. Este tipo de sensores lee la humedad y temperatura ambiente la transmite a Arduino y de ahí a una pantalla LCD o al monitor serial del IDE de Arduino.


El DHT11 es el sensor es el "barato". No tiene mucha precisión un 2% en temperatura midiendo de 1ºC en 1ºC y un 5% en humedad, pero servirá para cualquier proyecto, que como ya he dicho, no necesite una gran precisión.
Si necesitas más precisión tienes el DHT22 con algo más de precisión que el primero.

Características técnicas del módulo:

Humedad:
  • Resolución de 16 Bits.
  • Rango de medida: De 20% a 80%
  • Precisión a 25ºC: +/-5%HR.
  • Sensor DHT11
  • Histéresis: <+/-0,3%HR.
Temperatura:
  • Resolución de 16 Bits.
  • Rango de medida: De 0ºC a 50ºC
  • Precisión a 25ºC: +/-2%ºC.
  • Tiempo de respuesta: 10 Segundos.
Características eléctricas:
  • Alimentación: 3,6 ~ 5.5V DC.
  • Consumo eléctrico: 0,3mA.
  • Período de muestreo: Más de 2 segundos.
Descripción de los pines:
  1. VDD Alimentación 5,5V.
  2. DATA Datos seriales, un solo BUS
  3. NC No conectado
  4. GND Masa o parte negativa.

Su conexión es muy sencilla y como adicional solo nos hará falta una resistencia de entre 4K7 hasta 10K conectada entre VCC y DATA.



Aunque la mayoría de los módulos DHT11 ya vienen montado es un pequeña plaquita con las resistencias ya instaladas:

Para simplificar la comunicación entre Arduino y el DTH11 utilizaremos la librería . Podéis encontrar la librería en el siguiente enlace: Librería DHT o en este otro: Libreria DHT GitHub.
Con ella podremos leer los siguientes parámetros:

  • Humedad ambiente en %.
float h = dht.readHumidity(); //Para leer la humedad.
  • Temperatura ambiente en grados Centígrados y Fahrenheit.
float t = dht.readTemperature(); //Para leer grados en Centígrados.
float f = dht.readTemperature(true);  //Para leer grados en Fahrenheit.
  • Indice de calor. Indica el calor teniendo en cuenta la temperatura y la humedad.
  float hif = dht.computeHeatIndex(f, h);  //Calcula el indice de calor teniendo en cuenta f y h.
  float hic = dht.computeHeatIndex(t, h, false); //Calcula el indice de calor en Centigrados teniendo en cuenta t y h.

Y con estos comandos tenemos  todas las lecturas del sensor para mostrar en el terminal serial:

Datos del DHT11 en el monitor serial

Descargar: Ejemplo básico DHT11 Infotronikblog

Espero que este ejemplo les sea útil Saludos!!!

4 comentarios :

  1. por que no pude correr los ejemplos del sensoe dht11 no los puedo copilar y me aparese esto
    Arduino:1.8.5 (Windows 7), Tarjeta:"Arduino/Genuino Uno"

    C:\Users\Christian\Documents\Arduino\libraries\DHT_sensor_library\examples\DHT_Unified_Sensor\DHT_Unified_Sensor.ino:10:29: fatal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compilando para la tarjeta Arduino/Genuino Uno.

    Este reporte podría tener más información con
    "Mostrar salida detallada durante la compilación"
    opción habilitada en Archivo -> Preferencias.

    ResponderEliminar
    Respuestas
    1. Buenas Christian, el problema es que no encuentra la librería "adafruit_sensor.h". Si usas el ejemplo que está para descargar, la librería que se ha usado es esta : https://github.com/adafruit/DHT-sensor-library
      Si tienes alguna duda puedes postear el código y lo comentamos, Saludos!!!

      Eliminar
  2. este es el codigo que pretendo usar y me sige dando el error de la libreria

    #include
    #include


    int SENSOR = 2;

    int VO = 3;
    int RS = 4;
    int E = 5;
    int D4 = 6;
    int D5 = 7;
    int D6 = 8;
    int D7 = 9;

    int temp;
    int humedad;

    DHT dht (SENSOR, DHT11);
    LiquidCrystal lcd (RS, E, D4, D5 ,D6, D7);

    void setup(){
    dht.begin();

    lcd.begin(16, 2);
    analogWrite(VO, 50); //contraste
    }

    void loop(){
    humedad = dht.readHumidity();
    temp = dht.readTemperature();

    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Temperatura: ");
    lcd.print(temp);
    lcd.print("C");
    lcd.setCursor(0,1);
    lcd.print("Humedad: ");
    lcd.print(humedad);
    lcd.print("%");

    delay(15000);
    }



    y este es el error de copilacion
    Arduino:1.8.5 (Windows 7), Tarjeta:"Arduino Nano, ATmega328P"

    In file included from C:\Users\Christian\Documents\Arduino\libraries\DHT_sensor_library\DHT_U.cpp:22:0:

    C:\Users\Christian\Documents\Arduino\libraries\DHT_sensor_library\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compilando para la tarjeta Arduino Nano.

    Este reporte podría tener más información con
    "Mostrar salida detallada durante la compilación"
    opción habilitada en Archivo -> Preferencias.

    ResponderEliminar
    Respuestas
    1. Buenas Christian Garcia, no puedo ver los includes que están al principio, pero imagino que sera el del LiquidCrystal.h y el DHT.h, comprueba que sea esta ultima y no DHT_U.cpp.
      La librería la has bajado de este enlace? http://descargas.infotronikblog.com/files/Arduino/Librerias/DHT-sensor-library-master.zip
      Por lo demás el código esta bien, lo he probado por el monitor serial y no me ha dado problemas, prueba a quitar todas las librerías que tengas del DHT11 e instalara la del enlace que he puesto arriba.
      Coméntame que tal te ha ido, saludos Christian!!!

      Eliminar