DHT11: Sensor de humedad/temperatura para Arduino

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

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.

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.

0 0 votes
Article Rating
Suscríbete
Notify of
guest

38 Comments
newest
oldest most voted
Inline Feedbacks
View all comments
nicolas
nicolas
4 years ago

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!

Antony García González
Antony García González
4 years ago
Reply to  nicolas

Necesitas conectarte a Internet o implementar un Real Time Clock (RTC)

ivan
ivan
5 years ago

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

Antony García González
Antony García González
5 years ago
Reply to  ivan

Posiblemente un problema de conxión. Verifica el protoboard

sebas glez ibarra (sebass)
sebas glez ibarra (sebass)
5 years ago

como puedo usarlo con if?(usando solo la temperatura

Juan Constancio
Juan Constancio
5 years ago

#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… Read more »

Antonio Morales Rocha
Antonio Morales Rocha
5 years ago

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
Antony García González
5 years ago

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

Jorge Gustavo Barmat
Jorge Gustavo Barmat
6 years ago

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);… Read more »

Antony García González
Antony García González
6 years ago

Parece una mala conexión del sensor

antonio pacheco
antonio pacheco
6 years ago

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
Antony García González
6 years ago

Sí es un código aparte

David
David
5 years ago

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
Marcos Pineda
6 years ago

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

Jaime Rodrigo
Jaime Rodrigo
6 years ago
Reply to  Marcos Pineda

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»

trackback

[…] DHT11, sensor para medición de humedad y temperatura en Arduino […]

jp
jp
6 years ago

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

leopoldo gomez
leopoldo gomez
5 years ago
Reply to  jp

hola, es probable que no tengas la libreria jaja

Antony García González
Antony García González
6 years ago

Gracias, amigo

Davis Fornes
Davis Fornes
7 years ago

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

PanamaHitek
6 years ago
Reply to  Davis Fornes

Sin muchos datos es imposible ayudarte.

Horacio
8 years ago

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… Read more »

jorge luis olivari
jorge luis olivari
9 years ago

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

BRENDA GUADALUPE GARCÍA TELLO
BRENDA GUADALUPE GARCÍA TELLO
9 years ago

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

Laionel
Laionel
9 years ago

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

antonygarciagonzalez
9 years ago
Reply to  Laionel

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
fernando
9 years ago

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
Alvaro
9 years ago

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

antonygarciagonzalez
9 years ago
Reply to  Alvaro

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
fernando
9 years ago
Reply to  Alvaro

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

antonygarciagonzalez
9 years ago
Reply to  fernando

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
Gustavo
9 years ago

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

antonygarciagonzalez
9 years ago
Reply to  Gustavo

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
Tecnosabana Innovamos Para Ti
6 years ago
Reply to  Gustavo

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