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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#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 } |
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.
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
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
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.
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.
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
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
Hola, disculpa soy nueva en arduino tu blog es muy bueno, a que te refieres con ir al monitor serial?
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
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
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
Hola. El DHT11 no puede ser utilizado para medir la humedad del suelo, al menos hasta donde yo se. Hay unos sensores especializados para leer la humedad del suelo, por lo que te recomiendo que los veas en ebay: http://www.ebay.com/itm/Soil-Hygrometer-Humidity-Detection-Module-Soil-Moisture-Water-Sensor-S9-/251379622736?pt=LH_DefaultDomain_0&hash=item3a8764a350
Con respecto a lo de leer los sensores, yo los grafico en Java o en Matlab. Algunos ejemplos:
https://panamahitek.com/proyecto-modulo-de-distribucion-de-caudales-para-mecanica-de-fluidos-con-arduino-y-java/
https://panamahitek.com/graficas-de-sensores-en-tiempo-real-con-arduino-java-y-jfreechart/
Saludos.
Hola, a mi me sale este error, me podrias ayudar
Temperatura:
nan
Humedad:
nan
Sin muchos datos es imposible ayudarte.
Gracias, amigo
ayudame me sale fatal erros no souch file or directory incluide dht
hola, es probable que no tengas la libreria jaja
[…] DHT11, sensor para medición de humedad y temperatura en Arduino […]
Buenas, muchas gracias por el aporte, tengo el mismo problema que jp, fatal error! ayuda!
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»
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?
Sí es un código aparte
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
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);
}
Parece una mala conexión del sensor
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.
Posiblemente sea un corto. El sensor puede estar dañado. Intentarlo con 3.3 volts
como puedo usarlo con if?(usando solo la temperatura
Busca la referencia sobre como usar la estructura condicional en Arduino
#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;
}
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
Posiblemente un problema de conxión. Verifica el protoboard
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!
Necesitas conectarte a Internet o implementar un Real Time Clock (RTC)