Panama Hitek Logo
Panama Hitek Logo

DHT11: Sensor de humedad/temperatura para Arduino

El DHT11 es un sensor de humedad y temperatura de bajo costo y de media precisión, ideal para aquellos que se están iniciando en el emocionante mundo de Arduino y la electrónica DIY (hágalo usted mismo). Este sensor es ampliamente reconocido por su facilidad de uso y su capacidad para proporcionar lecturas confiables, lo que lo convierte en una opción perfecta para proyectos educativos y experimentos de aficionados.

Nota: Para aquellos proyectos que requieran una mayor precisión en las mediciones de humedad y temperatura, recomiendo echar un vistazo al DHT22. Este sensor es similar al DHT11 en términos de funcionalidad, pero ofrece una mayor precisión y un rango de medición más amplio, lo que lo hace ideal para aplicaciones más avanzadas y profesionales.

El DHT11, un sensor excepcionalmente económico que ha ganado popularidad entre entusiastas y profesionales por igual. Su bajo costo no sacrifica su utilidad, convirtiéndolo en un componente indispensable en muchos proyectos de electrónica y microcontroladores, especialmente aquellos que utilizan Arduino. Su sencillez de programación y versatilidad lo hacen perfecto tanto para principiantes que buscan entender los fundamentos de los sensores, como para expertos que necesitan una solución rápida y eficaz para sus prototipos.

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í:

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.

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

 

Con este sencillo pero efectivo montaje, nuestro sensor DHT11 proporcionará una nueva lectura de humedad y temperatura cada dos segundos. Esto no solo demuestra la eficiencia del sensor, sino que también abre un abanico de posibilidades para proyectos futuros.

Me encantaría escuchar sobre sus experiencias con el DHT11. ¿En qué tipo de proyectos lo han utilizado? ¿Han experimentado con alguna modificación o aplicación innovadora usando este sensor? Cualquier comentario o pregunta es bienvenido, ya que entre todos podemos aprender y explorar aún más las capacidades de este fascinante mundo de Arduino.

Antony García González
Antony García González
Ingeniero Electromecánico, egresado de la Universidad Tecnológica de Panamá. Miembro fundador de Panama Hitek. Entusiasta de la electrónica y la programación.

Posts relacionados

38 COMENTARIOS

  1. 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

  2. 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

  3. 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

    • 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

  4. 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

    • 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

  5. 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

    • 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»

  6. 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?

  7. 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);

    }

  8. 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.

    • #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;
      }

  9. Hola compañeros, tengo todo conectado y al ir a monitor serial solo me muestra lo siguiente:
    Humedad:
    2.00
    Temperatura:
    1.00
    Humedad:
    2.00
    Temperatura:
    1.00
    Alguien me podria decir a que se debe, por favor

  10. Hola, implementé éste proyecto, funciona perfecto, usé DHT22 y nodeMCU.
    Ahora mi pregunta es, como podría mostrar estos mismos datos pero añadiendole la fecha y hora en consola de Arduino.
    Gracias!

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

Post relacionados