Los sensores de humedad y temperatura DHT11/DHT22 son una herramienta crucial en numerosos proyectos de electrónica y automatización. En este artículo, te daremos instrucciones completas sobre cómo utilizar estos sensores con Arduino. Desde la conexión física hasta la programación, te guiaremos paso a paso para que puedas sacar el máximo provecho de estas piezas esenciales en tus creaciones. ¡No te lo pierdas!
Este artículo es una guía de los populares sensores de temperatura y humedad DHT11 y DHT22 con Arduino. Explicaremos cómo funciona, demostraremos algunas de sus características y mostraremos un ejemplo de proyecto Arduino que puede modificar para usarlo en sus propios proyectos.
Para obtener más guías sobre otros sensores populares, consulte nuestro resumen de más de 60 tutoriales y proyectos de Arduino: Más de 60 proyectos y tutoriales de Arduino.
Presentamos los sensores DHT11 y DHT22
Los sensores DHT11 y DHT22 se utilizan para medir la temperatura y la humedad relativa. Son muy populares entre los aficionados y aficionados a la electrónica.
Estos sensores contienen un chip que realiza una conversión de analógico a digital y emite una señal digital con temperatura y humedad. Esto los hace muy fáciles de usar con cualquier microcontrolador.
DHT11 frente a DHT22
DHT11 y DHT22 son muy similares pero difieren en sus especificaciones. La siguiente tabla compara algunas de las especificaciones clave de los sensores de temperatura y humedad DHT11 y DHT22. Puede encontrar un análisis más detallado de estos sensores en la hoja de datos de los sensores.
Rango de temperatura | 0 a 50°C +/-2ºC | -40 a 80ºC +/-0,5ºC |
rango de humedad | 20 a 90% +/-5% | 0 a 100% +/-2% |
resolución | Humedad: 1% Temperatura: 1°C |
Humedad: 0,1% Temperatura: 0,1°C |
Tensión de funcionamiento | 3-5,5 VCC | 3-6 VCC |
Suministro de corriente | 0,5-2,5 mA | 1-1,5 mA |
Fase de prueba | 1 segundo | 2 segundos |
Precio | $1 a $5 | $4 a $10 |
Donde comprar | Consultar precios | Comparar precios |
El sensor DHT22 tiene mejor resolución y un mayor rango de medición de temperatura y humedad. Sin embargo, es un poco más caro y sólo puedes solicitar lecturas cada 2 segundos.
El DHT11 tiene un alcance más corto y es menos preciso. Puede consultar los valores de los sensores cada segundo. También es un poco más barato.
A pesar de sus diferencias, funcionan de manera similar y puedes usar el mismo código para leer la temperatura y la humedad. Todo lo que tienes que hacer es seleccionar el tipo de sensor que estás utilizando en el código.
Configuración de pines DHT
Los sensores DHT tienen cuatro pines, como se muestra en la siguiente figura. Sin embargo, si instala su sensor DHT en una placa de conexión, solo tendrá tres pines y una resistencia pull-up interna en el pin 2.
La siguiente tabla muestra la asignación de pines de DHT22 y DHT11. Cuando el sensor está frente a usted, la numeración de los pines comienza en 1 de izquierda a derecha.
bolígrafo DHT | Adjunto a |
1 | 5V |
2 | Cualquier GPIO digital; Conecte también una resistencia pull-up de 10k ohmios. |
3 | no te conectes |
4 | Dimensiones |
¿Donde comprar?
Usted puede mirar Herramientas del Asesor Maker' y encuentre el mejor precio para estos módulos:
- Haga clic aquí para encontrar el mejor precio para DHT11
- Haga clic aquí para encontrar el mejor precio para DHT22
Sensor de temperatura y humedad DHT11 con Arduino
En esta sección, crearemos un proyecto simple usando Arduino que lee la temperatura y la humedad y muestra los resultados en el monitor serie.
Piezas requeridas
Para completar este tutorial necesitará los siguientes componentes:
- Arduino UNO – leer Los mejores kits de inicio de Arduino
- Sensor de temperatura y humedad DHT11
- tablero de circuitos
- Resistencia de 4,7 kOhmios
- Cables de puente
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Esquema
Siga el siguiente diagrama esquemático para conectar el sensor de temperatura y humedad DHT11 (o DHT22) al Arduino.
Aquí están las conexiones (de izquierda a derecha):
pasador DHT | arduino |
Pluma 1 | 5V |
Pluma 2 | T2 – El segundo día o cualquier otro pin digital |
Pluma 3 | no establecer una conexión |
clavija 4 | Dimensiones |
Nota: Si utiliza un módulo con un sensor DHT, normalmente solo tiene tres pines. Los pines deben estar etiquetados para que sepas cómo conectarlos. Además, muchos de estos módulos ya vienen con una resistencia pull-up interna, por lo que no es necesario agregar una al circuito.
Instalación de bibliotecas
Usamos el para leer el sensor DHT. Biblioteca DHT de Adafruit. Para utilizar esta biblioteca, también debes instalarla. Biblioteca de sensores unificada de AdafruitSiga los siguientes pasos para instalar estas bibliotecas.
Abra su IDE de Arduino y vaya a Bosquejo > incluir biblioteca > Administrar bibliotecas. El Administrador de biblioteca debería abrirse.
Buscar «DHT”en el cuadro de búsqueda e instale la biblioteca DHT de Adafruit.
Después de instalar la biblioteca DHT de Adafruit, escriba «Sensor unificado de Adafruit”en el campo de búsqueda. Desplácese hacia abajo para buscar e instalar la biblioteca.
Después de instalar las bibliotecas, reinicie su IDE de Arduino.
código
Después de instalar las bibliotecas necesarias, puede cargar código de muestra desde la biblioteca.
En su IDE de Arduino, vaya a archivo > Ejemplos > Biblioteca de sensores DHT > probador de DHT
Debería cargarse el siguiente código. Lee la temperatura y la humedad y muestra los resultados en el monitor de serie.
// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
#include "DHT.h"
#define DHTPIN 2 // what pin we're connected to
// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius
float t = dht.readTemperature();
// Read temperature as Fahrenheit
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan
Serial.println("Failed to read from DHT sensor!");
return;
}
// Compute heat index
// Must send in temp in Fahrenheit!
float hi = dht.computeHeatIndex(f, h);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %t");
Serial.print("Temperature: ");
Serial.print
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *Ft");
Serial.print("Heat index: ");
Serial.print(hi);
Serial.println(" *F");
}
Así es como funciona el código
Se empieza por incluir el DHT Biblioteca:
#include "DHT.h"
Luego defina el pin al que está conectado el sensor DHT. En este caso se conecta al pin digital 2.
#define DHTPIN 2 // what digital pin we're connected to
Luego deberá definir el tipo de sensor DHT que está utilizando. En nuestro ejemplo utilizamos el DHT11.
#define DHTTYPE DHT11 // DHT 11
Si está utilizando un sensor DHT diferente, debe comentar la línea anterior y eliminar uno de los siguientes comentarios:
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
Luego inicializa un DHT Objeto nombrado dht con el pin y tipo que definiste anteriormente:
DHT dht(DHTPIN, DHTTYPE);
En el configuración()Inicialice el monitor serie con una velocidad de 9600 baudios para fines de depuración.
erial.begin(9600);
Serial.println("DHTxx test!");
Inicialice el sensor DHT con .comenzar() Método.
dht.begin();
En el Cinta()Al principio hay un retraso de 2 segundos. Este retraso es necesario para que el sensor tenga tiempo suficiente para registrar los valores medidos. La frecuencia de muestreo máxima es de dos segundos para el DHT22 y de un segundo para el DHT11.
delay(2000);
Leer la temperatura y la humedad es muy fácil. Para determinar la humedad, todo lo que tienes que hacer es leerhumedad() método en el dht Objeto. En este caso almacenamos la humedad en el h Variable. Tenga en cuenta que el leerHumedad() El método devuelve un valor de tipo Float.
float h = dht.readHumidity();
Para leer la temperatura, utilice también el leer temperatura() Método.
float t = dht.readTemperature();
Para obtener la temperatura en Fahrenheit, simplemente ingrese lo siguiente VERDADERO Para el leerTemperatura() Método de la siguiente manera:
float f = dht.readTemperature(true);
Esta biblioteca también contiene métodos para calcular el índice de calor en Fahrenheit y Celsius:
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Finalmente, todos los valores medidos se muestran en el monitor de serie.
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %t");
Serial.print("Temperature: ");
Serial.print
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *Ft");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
demostración
Después de cargar el código en Arduino, abra el monitor serie con una velocidad de 9600 baudios. Debería obtener lecturas del sensor cada dos segundos. Esto es lo que debería ver en su monitor serie Arduino IDE.
Solución de problemas: error de lectura del sensor DHT
Si está intentando leer la temperatura y la humedad del sensor DHT11/DHT22 y ve un mensaje de error en su monitor en serie, siga los siguientes pasos para ver si su sensor está funcionando (o lea nuestra guía de solución de problemas DHT dedicada). .
“¡Error de lectura del sensor DHT!” o lecturas de Nan
Si su sensor DHT devuelve el mensaje de error «¡Error de lectura del sensor DHT!» o las lecturas de DHT devuelven «Nan»:
Pruebe uno de los siguientes consejos para la solución de problemas:
- Alambrado: Al construir un proyecto electrónico, es necesario volver a verificar el cableado o la distribución de pines. Si su circuito aún no funciona después de verificarlo y probarlo para asegurarse de que esté conectado correctamente, continúe leyendo los siguientes consejos para la solución de problemas.
- Rendimiento: El sensor DHT tiene un rango operativo de 3V a 5,5V (DHT11) o de 3V a 6V (DHT22). Si está alimentando el sensor desde un pin de 3,3 V, en algunos casos, suministrar al DHT 5 V resuelve el problema.
- Puerto USB o cable USB defectuoso: A veces no basta con alimentar el Arduino directamente desde el puerto USB de un PC. Intente conectarlo a un concentrador USB alimentado por una fuente de alimentación externa. También puede ser útil reemplazar el cable USB por uno mejor o más corto. Un puerto USB que proporcione suficiente energía o el uso de un buen cable USB suelen solucionar este problema.
- Fuente de energía: Como se mencionó en el consejo anterior, es posible que su Arduino no esté suministrando suficiente energía para leer correctamente el sensor DHT. En algunos casos, es posible que necesites alimentar el Arduino con una fuente de alimentación que proporcione más energía.
- Tipo de sensor: Vuelva a verificar que haya descomentado o descomentado el sensor correcto para su proyecto en su código. En este proyecto utilizamos el DHT22:
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
- Tasa de muestreo: El sensor DHT recibe lecturas muy lentamente (las lecturas del sensor pueden tardar hasta 2 segundos). En algunos casos el problema se puede solucionar ampliando el tiempo entre mediciones.
- El sensor DHT está roto o defectuoso: Desafortunadamente, a veces estos sensores baratos se ven perfectamente bien pero están quemados o rotos. Entonces, incluso si ha ensamblado el circuito y el código correctos, las mediciones aún no se transmitirán. Intente usar un sensor diferente para ver si eso resuelve el problema.
- No se pudo cargar una velocidad de baudios o un código incorrectos: Si no ve nada en su monitor serie Arduino IDE, verifique que haya seleccionado la velocidad en baudios y el puerto COM correctos o que haya cargado correctamente el código.
Al construir nuestros proyectos, encontramos problemas similares con el DHT y siempre se resolvieron siguiendo uno de los métodos descritos anteriormente.
Error fatal: Adafruit_Sensor.h: no existe tal archivo o directorio
También hay un error común que ocurre al compilar el código. Si recibe el siguiente error:
fatal error: Adafruit_Sensor.h: No such file or directory
#include <Adafruit_Sensor.h>
Debe instalar la biblioteca de controladores de Adafruit Unified Sensor. En su IDE de Arduino, escriba «Sensor unificado de Adafruit“, desplácese hacia abajo para buscar e instalar la biblioteca.
Después de instalar la biblioteca, reinicie su IDE de Arduino y el código debería compilarse sin ningún mensaje de error.
Envolver
Los sensores DHT11 y DHT22 proporcionan una forma sencilla y rentable de realizar mediciones de temperatura y humedad utilizando Arduino. El cableado es muy simple: sólo necesita conectar el pin de datos DHT a un pin digital Arduino.
Escribir el código para obtener temperatura y humedad también es fácil gracias al DHT Biblioteca. Obtener lecturas de temperatura y humedad es tan fácil como usar el leerTemperatura() Y leerHumedad() Métodos.
Espero que esta guía te haya resultado útil. Instrucciones adicionales para el sensor de temperatura y humedad DHT11/DHT22:
- ESP8266 DHT11/DHT22 Servidor web de temperatura y humedad – Arduino IDE
- ESP32 con servidor web de temperatura y humedad DHT11 DHT22 – Arduino IDE
- MicroPython: ESP32/ESP8266 con sensor de temperatura y humedad DHT11/DHT22
- MicroPython: ESP32/ESP8266 con servidor web DHT11/DHT22
Si te gusta Arduino, es posible que también te gusten los siguientes recursos:
- Mini curso de Arduino (gratis)
- Proyectos Arduino paso a paso (curso)
- Más de 60 proyectos y tutoriales de Arduino
- Recursos electrónicos y libros electrónicos gratuitos
Gracias por leer.
25 de abril de 2019
Instrucciones completas para el sensor de humedad y temperatura DHT11/DHT22 con Arduino
Introducción
Este artículo es una guía para los populares sensores de temperatura y humedad DHT11 y DHT22 con Arduino. Explicaremos cómo funcionan, mostraremos algunas de sus características y compartiremos un ejemplo de proyecto de Arduino que puedes modificar para usar en tus propios proyectos.
Introduciendo los Sensores DHT11 y DHT22
Los sensores DHT11 y DHT22 se utilizan para medir la temperatura y humedad relativa. Son muy populares entre los fabricantes y los aficionados a la electrónica.
DHT11 vs DHT22
Los sensores DHT11 y DHT22 son muy similares, pero difieren en sus especificaciones. La siguiente tabla compara algunas de las especificaciones más importantes de los sensores de temperatura y humedad DHT11 y DHT22. Para un análisis más detallado de estos sensores, consulte la hoja de datos de los sensores.
- DHT11
- DHT22
Esquema de Pines
Los sensores DHT tienen cuatro pines. Sin embargo, si obtienes tu sensor DHT en una placa de conexión, solo vendrá con tres pines y una resistencia pull-up de 10k Ohm en el pin 2.
DHT11 Sensor de Temperatura y Humedad con Arduino
En esta sección, construiremos un proyecto simple con Arduino que lee temperatura y humedad y muestra los resultados en el Monitor Serial.
Partes Necesarias
Para completar este tutorial, necesitas los siguientes componentes:
- Arduino UNO
- Sensor de temperatura y humedad DHT11
- Protoboard
- Resistor de 4.7k Ohm
- Cables puente
Instalación de Librerías
Para leer desde el sensor DHT, utilizaremos la librería DHT de Adafruit. Para usar esta librería, también necesitas instalar la librería de Sensor Unificado de Adafruit.
Código
Después de instalar las librerías necesarias, puedes cargar un código de ejemplo desde la librería.
Cómo Funciona el Código
Empiezas por incluir la librería DHT, luego defines el pin al que está conectado el sensor DHT y el tipo de sensor que estás utilizando. Luego inicializas el sensor DHT en el setup(), y en el loop() lees la temperatura y humedad.
Resolución de Problemas
Si tienes problemas al leer desde el sensor DHT, como mensajes de error en el Monitor Serial, sigue los pasos mencionados para intentar solucionarlos.
Conclusión
Los sensores DHT11 y DHT22 proporcionan una manera fácil y económica de obtener mediciones de temperatura y humedad con Arduino. La conexión es muy sencilla y la lectura de temperatura y humedad se realiza mediante la librería DHT.
Espero que hayas encontrado esta guía útil. ¡Gracias por leer!
Referencias externas:
Buen post, me ayudó un montón con mi proyecto de Arduino. ¡Gracias por las instrucciones claras!