DHT11: Sensor de humedad/temperatura para Arduino

33
14107
GARD Pro Not Registered
El DHT11 es un sensor de humedad/temperatura de bajo costo y de media precisión, muy útil para los principiantes en el mundo de Arduino

 

Nota: Si se desea utilizar un sensor de humedad/temperatura de alta precisión recomiendo consultar el DHT22, parecido al DHT11 pero mucho más preciso.

En esta ocasión escribiré acerca del DHT11 que es un sensor de temperatura muy económico y muy utilizado por los amantes de la electrónica y los microcontroladores como Arduino. Image El DHT11 es un sensor que proporciona una salida de datos digital. Entre sus ventajas podemos mencionar el bajo coste y el despliegue de datos digitales. Esto supone una gran ventaja frente a los sensores del tipo análogo, como el LM335 por ejemplo, en los cuales las fluctuaciones en el voltaje alteran la lectura de datos.

Entre las desventajas pues, el DHT11 solo lee enteros, no podemos leer temperaturas con decimales por lo que tenemos que pensarlo muy bien a la hora de utilizar este sensor para trabajos en los que se requieran lecturas precisas de temperatura y/o humedad. En fin, vamos a lo que vamos. Para poder leer datos desde este sensor de una forma sencilla necesitamos descargar una librería que ha sido escrita para este propósito.

Hay tutoriales que explican como leer este sensor sin dicha librería, sin embargo el tema es bastante complicado para alguien que no esté acostumbrado a programar. Se necesita leer una onda cuadrada en la cual se envían los bits con separaciones de unos cuantos microsegundos. La verdad prefiero usar la librería DHT11.

Primero descargamos los archivos que conforman esta librería. Los podemos encontrar aquí. Ahora que hemos descargado, nos vamos a la carpeta de nuestro Arduino IDE, buscamos una carpeta llamada “libraries” y ahí descomprimimos el archivo *.rar. Nos debe quedar así:

GARD Pro Not Registered

Sin título Ahora abrimos Arduino IDE y pegamos el siguiente código:

 

Como podemos observar, no es difícil obtener lecturas de humedad y temperatura con este sensor. Ahora solo necesitamos conectarlo a Arduino e iniciar la lectura de datos.

El GND y el VCC del sensor se conectan en sus correspondientes pines en Arduino (GND y +5V, respectivamente). El pin “data” se conecta al pin 2, que ya declaramos en el código.

GARD Pro Not Registered

2013-02-14-249 2013-02-14-250 2013-02-14-253

Cuando subamos el código al micro, vamos al Monitor Serial y obtenemos el siguiente resultado:

Sin título

Cada 2 segundos obtendremos una nueva lectura.

Espero sus comentarios.

Saludos.

  • sebas glez ibarra (sebass)

    como puedo usarlo con if?(usando solo la temperatura

    • Antony García González

      Busca la referencia sobre como usar la estructura condicional en Arduino

    • Juan Constancio

      #include “DHT.h” //cargamos la librería DHT
      #define DHTPIN 2 //Seleccionamos el pin en el que se //conectará el sensor
      #define DHTTYPE DHT11 //Se selecciona el DHT11 (hay //otros DHT)
      DHT dht(DHTPIN, DHTTYPE); //Se inicia una variable que será usada por Arduino para comunicarse con el sensor
      void setup() {
      Serial.begin(9600); //Se inicia la comunicación serial
      dht.begin(); //Se inicia el sensor
      }
      void loop() {
      float h = dht.readHumidity(); //Se lee la humedad
      float t = dht.readTemperature(); //Se lee la temperatura
      //Se imprimen las variables
      Serial.println(“Humedad: “);
      Serial.println(h);
      Serial.println(“Temperatura: “);
      Serial.println(t);
      delay(2000); //Se espera 2 segundos para seguir leyendo //datos
      //Sin afectar el codigo del compañero.
      if (t [Condición])
      acciones;
      }

  • Antonio Morales Rocha

    hola buenas estube probando el sensor dht11 pero lo conecto en 5v y se me apaga el arduino,
    lo tengo conectado por usb a mi note.

    • Antony García González

      Posiblemente sea un corto. El sensor puede estar dañado. Intentarlo con 3.3 volts

  • Jorge Gustavo Barmat

    Me está dando “nan” (not a number) constantemente. Lo tengo conectado el pin de datos al 13.
    No se si el que está fallando es el sensor o es algo que tengo mal en el código.
    Desde ya muchas gracias.

    #include “DHT.h”

    #define DHTpin 13

    #define DHTType DHT11

    DHT dht(DHTpin, DHT11);

    void setup() {

    // put your setup code here, to run once:

    Serial.begin(9600);

    dht.begin();

    }

    void loop() {

    // put your main code here, to run repeatedly:

    int err;

    float hum = dht.readHumidity();

    float temp = dht.readTemperature();

    // Esto lo puse para ver el valor que esta arrojando

    Serial.println(hum);

    if (isnan(temp) || isnan(hum))

    {

    Serial.println(“Error al leer el DHT”);

    }

    else

    {

    Serial.print(“Humedad: “);

    Serial.print(hum);

    Serial.print(” %”);

    Serial.print(“Temperatura: “);

    Serial.print(temp);

    Serial.println(” º”);

    }

    delay (1000);

    }

    • Antony García González

      Parece una mala conexión del sensor

  • antonio pacheco

    Hola, gracias por el aporte, soy nuevo en este mundo de la electrónica y quisiera saber como sacaron esa ventana de java donde muestra la humedad, es otro código aparte?

    • Antony García González

      Sí es un código aparte

    • David

      Se llama Monitor Serial, lo puedes sacar desde Herramientas–>Monitor Serie o bien (ctrl+Mayus+M) o bien, del lado derecho veerás un botón con una Lupa que parece de búsqueda, presionalo y aparecerá directamente.

      Saludos

  • Marcos Pineda

    Buenas, muchas gracias por el aporte, tengo el mismo problema que jp, fatal error! ayuda!

    • Jaime Rodrigo

      Eso significa que no tienes la libreria de DHT instalada. Que sistema operativo y version del Arduino IDE utilizas?.
      Si has instalado la libreria en el lugar que dice el post principal y aún no te funciona, prueba instalandola en esta carpeta: “Mis DocumentosArduinolibraries”

  • Pingback: Sensores DHTxx | Panama Hitek()

  • jp

    ayudame me sale fatal erros no souch file or directory incluide dht

  • Antony García González

    Gracias, amigo

  • Davis Fornes

    Hola, a mi me sale este error, me podrias ayudar
    Temperatura:
    nan
    Humedad:
    nan

  • Buenas tardes amigos, es muy interesante esto de Arduino pero soy totalmente nuevo.
    Tendo dos consultas:

    1) Debido a mi ignorancia en el tema, si por ejemplo quiero que los datos de la humedad y temperatura sean leidos por un programa externo (un soft realizado por mi) esto es posible??
    Ya que necesito realizar un soft que lleve estadisticas de las mediciones de las temperaturas de un determinado suelo.. alguna guia para esto.

    2) El DHT11 me puede servir para medir la humedad de un suelo? o estos dispositivos no pueden ser sometidos bajo tierra o al roce con el agua, que puedes recomendarme al respecto..

    Muchas gracias desde ya.. soy desde este momento un seguidor de tu sitio

    Saludos desde ya

  • jorge luis olivari

    Hola amigos, espero puedan ayudarme estoy tratando de leer dos sensores de estos al mismo tiempo y no encuentro un ejemplo del codigo, los quiero conectar a pines diferentes para asi poder llerlos por separado

    • [email protected]

      Se debe declarar dos veces el DHT11 y establecer diferentes pines para sus funcionamientos. En el comando DHT dht(DHTPIN, DHTTYPE); habría que colocar algo así como DHT dht1(DHTPIN1, DHTTYPE1); y DHT dht2(DHTPIN2, DHTTYPE2); asignando los valores necesarios a DHTPIN y DHTTYPE para que cada sensor tenga sus propios pines

  • BRENDA GUADALUPE GARCÍA TELLO

    Hola, disculpa soy nueva en arduino tu blog es muy bueno, a que te refieres con ir al monitor serial?

    • [email protected]

      En el programa de Arduino IDE, busca en el menú herramientas donde dice Monitor Serial. Te aparece una ventana donde escribes los caracteres que deseas enviar y Arduino los recibirá e interpretará según el código que hayas colocado en la placa

  • Laionel

    0.00
    Read failHumedad:
    nan
    Temperatura:
    0.00
    Read failHumedad:
    nan
    Temperatura:
    0.00
    Read failHumedad:
    nan
    Temperatura:
    0.00

    Hola un saludo a todos este es el error que me arroja constantemente, lo he mirado todo y esta puesto tal como lo he visto en la web y nada, sigue saliendo lo mismo todo el rato. A ver si alguien me puede hechar un cable que llevo mas de dos días para intentar mover este sensor.

    Gracias.
    Read failHumedad:
    nan
    Temperatur

    • Tienes el sensor conectado en el pin que no es. Debes establecerlo correctamente y conectar el pin Data al que hayas establecido en tu codigo

  • fernando

    ALVARO el problema aparte de la librería puede ser las comillas que se utilizan en la web no son aceptadas por el ide de arduino solo cámbialas y correrá el programa

  • Alvaro

    HOLA LA PROGRAMACION NO SIRVE ME PUDE AYUDAR VOTA UN ERROR ACA
    DHT dht(DHTPIN, DHTTYPE); //Se inicia una variable que será usada por Arduino para comunicarse con el sensor
    me pordria ayudar muchas grax

    • Es probable que no hallas agregado la librería DHT a la carpeta “libraries” en la ruta de Arduino.

      No digas que no sirve ya que el código ha sido probado por muchos usuarios.

      Agrega la librería necesaria en la ruta especificada.

    • fernando

      ALVARO el problema aparte de la librería puede ser las comillas que se utilizan en la web no son aceptadas por el ide de arduino solo cámbialas y correrá el programa

      • Ya he hecho unas correcciones para que al copiar el código no suceda lo de las comillas. Gracias por el apoyo a través de los comentarios.

        Saludos.

  • Gustavo

    Consulta: Usas una fuente externa para alimentar la placa o directamente toma alimentacion del puerto USB??

    • Para este ejemplo solo uso USB. Todavía no he publicado nada donde necesite una fuente externa. Creo que el único proyecto en donde se aprecia una fuente es en el de la Grúa Magnética

    • Tecnosabana Innovamos Para Ti

      saludos el arduino puede proporcionar alimentacion a todo el circuito incluyendo el sensor de temperatura y humedad DHT11 pues su consumo de corriente es minimo.
      pongo a todos los usuarios a disposicion esta tienda para componentes http://www.tecnosabanaelectronica.com