El ESP32 es una placa de desarrollo muy versátil que nos permite crear una amplia variedad de proyectos. En este artículo te enseñaremos cómo utilizar el sensor de temperatura y humedad DHT11/DHT22 con el ESP32 y el Arduino IDE. ¡Sigue leyendo para descubrir cómo incorporar estos sensores a tus proyectos de IoT!
Este tutorial muestra cómo usar los sensores de temperatura y humedad DHT11 y DHT22 con el ESP32 usando el IDE de Arduino. Daremos una breve introducción a estos sensores, el pinout, el diagrama del circuito y finalmente el boceto de Arduino.
Aprenda a mostrar valores de temperatura y humedad en un servidor web usando las tarjetas ESP32 o ESP8266:
- Servidor web ESP32 DHT11/DHT22 con Arduino IDE
- Servidor web ESP8266 DHT11/DHT22 con Arduino IDE
Sensores de temperatura y humedad DHT11 y DHT22
Los sensores DHT11 y DHT22 se utilizan para medir la temperatura y la humedad relativa. Son muy populares entre los fabricantes y entusiastas de la electrónica.
Estos sensores contienen un chip que realiza una conversión de analógico a digital y genera una señal digital con temperatura y humedad. Esto los hace muy fáciles de usar con cualquier microcontrolador.
Si quieres utilizar estos sensores con la placa Arduino, puedes leer el siguiente tutorial:
- Instrucciones para el sensor de humedad y temperatura DHT11/DHT22 con Arduino
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 |
Fuente de alimentación | 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 | Comparar 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 coloca 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/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 | 3,3 V |
2 | Cualquier GPIO digital; También conecte una resistencia pull-up de 10k ohmios. |
3 | no te conectes |
4 | Dimensiones |
Piezas requeridas
Para seguir este tutorial necesitas conectar el sensor de temperatura DHT11 o DHT22 al ESP32. Necesita utilizar una resistencia pull-up de 10k ohmios.
Aquí hay una lista de las piezas que necesitará para construir el circuito:
- ESP32 (leer Las mejores placas de desarrollo ESP32)
- DHT11 o DHT22 Sensor de temperatura y humedad
- resistencia de 10k ohmios
- tablero de circuitos
- 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!
Representación esquemática
Conecte el sensor DHT22 o DHT11 a la placa de desarrollo ESP32 como se muestra en el siguiente diagrama de circuito.
En este ejemplo conectamos el pin de datos DHT a GPIO4. Sin embargo, también puedes utilizar cualquier otro pin digital adecuado.
Aprenda a utilizar los GPIO ESP32 en nuestra guía: Referencia de distribución de pines ESP32: ¿Qué pines GPIO debería utilizar?
Instalación de bibliotecas
Usamos el para leer el sensor DHT. Biblioteca DHT de Adafruit. Para utilizar esta biblioteca también debes tener la 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 la 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.
ESP32 – Croquis para leer temperatura y humedad
Para leer la temperatura y la humedad del sensor DHT, utilizamos un ejemplo basado en la biblioteca Adafruit DHT. Copie el siguiente código en su IDE de Arduino.
// Example testing sketch for various DHT humidity/temperature sensors written by ladyada
// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
#include "DHT.h"
#define DHTPIN 4 // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors. This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println(F("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 (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// 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);
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
}
El código contiene numerosos comentarios con información útil. Entonces deberías revisar los comentarios. Continúe leyendo para saber cómo funciona el código.
Cómo funciona el código
Primero necesitas importar el DHT Biblioteca:
#include "DHT.h"
Luego defina el pin digital al que está conectado el pin de datos del sensor DHT. En este caso está conectado a GPIO4.
#define DHTPIN 4 // Digital pin connected to the DHT sensor
Luego deberá seleccionar el tipo de sensor DHT que está utilizando. La biblioteca admite DHT11, DHT22 y DHT21. Descomente el tipo de sensor que está utilizando y marque todos los demás. En este caso utilizamos el sensor DHT22.
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
Crear un… DHT Objeto nombrado dht en el pin y con el tipo de sensor que especificaste anteriormente.
DHT dht(DHTPIN, DHTTYPE);
En el configuración()inicialice la depuración en serie con una velocidad de baudios de 9600 e imprima un mensaje en el monitor en serie.
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
Finalmente, inicialice el sensor DHT.
dht.begin();
El Cinta() comienza con un retraso de 2000 ms (2 segundos) porque el período de muestreo máximo de DHT22 es de 2 segundos. Por lo tanto sólo podemos obtener lecturas cada dos segundos.
delay(2000);
La temperatura y la humedad se devuelven en formato flotante. Creamos variables flotantes. h, tY F para almacenar la humedad, la temperatura en grados Celsius y la temperatura en Fahrenheit respectivamente.
Puedes controlar fácilmente la humedad y la temperatura con el leerhumedad() Y leer temperatura() métodos en el dht Objeto como se muestra a continuación:
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
Si desea obtener la temperatura en grados Fahrenheit, debe utilizar el VERDADERO Parámetro como argumento a favor de la leer temperatura() Método.
float f = dht.readTemperature(true);
También hay una declaración if que verifica si el sensor devolvió valores válidos de temperatura y humedad.
if (isnan(h) || isnan
Serial.println(F("Failed to read from DHT sensor!"));
return;
Después de determinar la humedad y la temperatura, la biblioteca cuenta con un método que calcula el índice de calor. Puede obtener el índice de calor tanto en grados Celsius como en Fahrenheit como se muestra a continuación:
// 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, imprima todas las lecturas en el monitor serie usando los siguientes comandos:
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
demostración
Sube el código a tu placa ESP32. Asegúrese de haber seleccionado la placa y el puerto COM correctos en la configuración de su IDE de Arduino.
Después de cargar el código, abra el monitor en serie con una velocidad de baudios de 9600. Debería recibir las últimas lecturas de temperatura y humedad en el monitor en serie cada dos segundos.
Solución de problemas: error de lectura del sensor DHT
Si intenta leer la temperatura y la humedad del sensor DHT11/DHT22 y recibe un mensaje de error en su monitor en serie, siga los siguientes pasos para verificar si puede hacer que su sensor funcione (o consulte 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 alimenta el sensor desde el pin de 3.3V del ESP32, en algunos casos suministrar 5V al DHT resuelve el problema.
- Puerto USB o cable USB defectuoso: A veces no basta con alimentar el ESP32 directamente a través de un puerto USB del PC. Intente conectarlo a un concentrador USB que funcione con 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 ESP no esté proporcionando suficiente energía para leer correctamente el sensor DHT. En algunos casos, es posible que necesites alimentar el ESP con una fuente de energía que proporcione más corriente.
- 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 tarda mucho en recuperar las lecturas (puede tardar hasta 2 segundos en recuperar las lecturas del sensor). En algunos casos, el problema se puede solucionar ampliando el tiempo entre lecturas.
- El sensor DHT está quemado o roto: Desafortunadamente, a veces estos sensores baratos se ven perfectamente bien pero están quemados o rotos. Por lo tanto, 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 Arduino IDE Serial Monitor, 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 el mensaje de error.
Envolver
En este tutorial, aprendió cómo obtener lecturas de temperatura y humedad de un sensor DHT11 o DHT22 usando ESP32 con Arduino IDE. Obtener valores de temperatura y humedad utilizando la biblioteca Adafruit DHT es muy sencillo. solo usas eso leer temperatura() Y leerhumedad() Métodos en uno DHT Objeto.
Ahora puede llevar este proyecto al siguiente nivel y mostrar las lecturas de sus sensores en un servidor web al que puede acceder a través del navegador de su teléfono inteligente. Aprenda a crear un servidor web utilizando ESP32 para mostrar las lecturas de sus sensores: Servidor web ESP32 DHT11/DHT22: temperatura y humedad con Arduino IDE.
Si te gusta ESP32, es posible que también te gusten los siguientes recursos:
- Aprenda ESP32 con Arduino IDE (libro electrónico + curso en vídeo)
- Servidor web ESP32 – IDE de Arduino
- Servidor web ESP32 con BME280 – mini estación meteorológica
- Más de 20 proyectos y tutoriales de ESP32
Esperamos que esta guía le resulte útil.
Gracias por leer.
Introducción al uso de sensores de temperatura y humedad DHT11 y DHT22 con el ESP32 utilizando Arduino IDE
Este tutorial muestra cómo utilizar los sensores de temperatura y humedad DHT11 y DHT22 con el ESP32 utilizando Arduino IDE. Vamos a hacer una breve introducción a estos sensores, el esquema de pines, diagrama de conexión y finalmente el sketch de Arduino.
Aprende a mostrar lecturas de temperatura y humedad en un servidor web utilizando placas ESP32 o ESP8266:
Sensores de temperatura y humedad DHT11 y DHT22
Los sensores DHT11 y DHT22 se utilizan para medir la temperatura y la humedad relativa. Son muy populares entre los fabricantes y los entusiastas de la electrónica.
Estos sensores contienen un chip que realiza la conversión analógica a digital y emite una señal digital con la temperatura y la humedad. Esto los hace muy fáciles de usar con cualquier microcontrolador.
Si estás buscando utilizar estos sensores con la placa Arduino, puedes leer el siguiente tutorial: Guía para el sensor de humedad y temperatura DHT11/DHT22 con Arduino
DHT11 vs DHT22
El 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, consulta la hoja de datos de los sensores.
- Temperatura rango:
- DHT11: 0 a 50 ºC +/- 2 ºC
- DHT22: -40 a 80 ºC +/- 0.5ºC
- Humedad rango:
- DHT11: 20 a 90% +/- 5%
- DHT22: 0 a 100% +/- 2%
- Resolución:
- DHT11: Humedad: 1% Temperatura: 1ºC
- DHT22: Humedad: 0.1% Temperatura: 0.1ºC
- Voltaje de funcionamiento:
- DHT11: 3 – 5.5 V DC
- DHT22: 3 – 6 V DC
- Corriente de alimentación:
- DHT11: 0.5 – 2.5 mA
- DHT22: 1 – 1.5 mA
- Periodo de muestreo:
- DHT11: 1 segundo
- DHT22: 2 segundos
- Precio:
- DHT11: $1 a $5
- DHT22: $4 a $10
El sensor DHT22 tiene una mejor resolución y un rango de medición de temperatura y humedad más amplio. Sin embargo, es un poco más caro y solo puedes solicitar lecturas con un intervalo de 2 segundos.
El DHT11 tiene un rango más pequeño y es menos preciso. Sin embargo, puedes solicitar lecturas del sensor cada segundo. También es un poco más barato.
A pesar de sus diferencias, funcionan de manera similar y puedes utilizar el mismo código para leer la temperatura y la humedad. Solo necesitas seleccionar en el código el tipo de sensor que estás utilizando.
Esquema de pines DHT
Los sensores DHT tienen cuatro pines como se muestra en la figura. Sin embargo, si obtienes tu sensor DHT en una placa de breakout, viene con solo tres pines y con una resistencia pull-up interna en el pin 2.
La siguiente tabla muestra el esquema de pines DHT22/DHT11. Cuando el sensor está frente a ti, la numeración de pines comienza en 1 de izquierda a derecha.
- DHT pin – Conectar a
- 1 – 3.3V
- 2 – Cualquier GPIO digital; también conectar una resistencia pull-up de 10k Ohm
- 3 – No conectar
- 4 – GND
Partes requeridas
Para seguir este tutorial necesitas cablear el sensor de temperatura DHT11 o DHT22 al ESP32. Necesitarás usar una resistencia pull-up de 10k Ohm.
Aquí tienes una lista de las partes que necesitas para construir el circuito:
- ESP32 (lee los mejores tableros de desarrollo ESP32)
- sensor de temperatura y humedad DHT11 o DHT22
- Resistencia de 10k Ohm
- Protoboard (breadboard)
- Cables jumper
Puedes utilizar los enlaces anteriores o ir directamente a MakerAdvisor.com/tools para encontrar todas las partes para tus proyectos al mejor precio.
Diagrama esquemático
Cablea el sensor DHT22 o DHT11 a la placa de desarrollo ESP32 tal como se muestra en el siguiente diagrama esquemático.
En este ejemplo, estamos conectando el pin de datos del DHT a GPIO 4. Sin embargo, puedes utilizar cualquier otro pin digital adecuado.
Aprende cómo utilizar los GPIOs del ESP32 con nuestra guía: Referencia de pinout del ESP32 – ¿Qué pines GPIO deberías usar?
Instalación de bibliotecas
Para leer del sensor DHT, utilizaremos la biblioteca DHT de Adafruit. Para usar esta biblioteca también necesitas instalar la biblioteca de sensor unificado de Adafruit. Sigue los siguientes pasos para instalar esas bibliotecas.
Abre tu Arduino IDE y ve a Sketch > Include Library > Manage Libraries. El Administration de Librerías should open.
Busca «DHT» en el cuadro de búsqueda e instala la biblioteca DHT de Adafruit.
Después de instalar la biblioteca DHT de Adafruit, escribe «Adafruit Unified Sensor» en el cuadro de búsqueda. Desplázate hasta el final para encontrar la biblioteca e instálala.
Después de instalar las bibliotecas, reinicia tu Arduino IDE.
Sketch de lectura de temperatura y humedad ESP32
Para leer la temperatura y humedad del sensor DHT, utilizaremos un ejemplo basado en la biblioteca Adafruit DHT. Copia el siguiente código a tu Arduino IDE.
// Aquí va el código del sketch de lectura de temperatura y humedad ESP32
Cómo funciona el código
Primero, necesitas importar la biblioteca DHT:
#include "DHT.h"
Luego, define el pin digital al que está conectado el pin de datos del sensor DHT. En este caso, está conectado a GPIO 4.
#define DHTPIN 4 // Digital pin connected to the DHT sensor
Luego, debes seleccionar el tipo de sensor DHT que estás utilizando. La biblioteca admite DHT11, DHT22 y DHT21. Descomenta el tipo de sensor que estás utilizando y comenta todos los demás. En este caso, estamos usando el sensor DHT22.
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
Crea un objeto DHT llamado dht en el pin y con el tipo de sensor que has especificado anteriormente.
DHT dht(DHTPIN, DHTTYPE);
En el setup(), inicializa el depurado Serial a una velocidad de baudios de 9600 e imprime un mensaje en el Monitor Serial.
Serial.begin(9600); Serial.println(F("DHTxx test!")); dht.begin();
El loop() comienza con una espera de 2000 ms (2 segundos), porque el periodo de muestreo máximo del DHT22 es de 2 segundos. Por lo tanto, solo podemos obtener lecturas cada dos segundos.
delay(2000);
La temperatura y la humedad se devuelven en formato float. Creamos variables float h, t y f para guardar la humedad, la temperatura en Celsius y la temperatura en Fahrenheit, respectivamente.
Obtener la humedad y la temperatura es tan fácil como usar los métodos readHumidity() y readTemperature() en el objeto dht, como se muestra a continuación:
float h = dht.readHumidity(); float t = dht.readTemperature(); float f = dht.readTemperature(true);
También hay una instrucción if que comprueba si el sensor ha devuelto lecturas válidas de temperatura y humedad.
if (isnan(h) || isnan(t) || isnan(f)) { Serial.println(F("Failed to read from DHT sensor!")); return; }
Después de obtener la humedad y la temperatura, la biblioteca tiene un método que calcula el índice de calor. Puedes obtener el índice de calor tanto en grados Celsius como en grados Fahrenheit.
float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false);
Finalmente, imprime todas las lecturas en el Monitor Serial con los siguientes comandos:
Serial.print(F("Humidity: ")); Serial.print(h); Serial.print(F("% Temperature: ")); Serial.print(t); Serial.print(F("°C ")); Serial.print(f); Serial.print(F("°F Heat index: ")); Serial.print(hic); Serial.print(F("°C ")); Serial.print(hif); Serial.println(F("°F"));
Demostración
Sube el código a tu placa ESP32. Asegúrate de tener la placa correcta y el puerto COM seleccionado en la configuración de tu Arduino IDE.
Después de cargar el código, abre el Monitor Serial a una velocidad de baudios de 9600. Deberías obtener las últimas lecturas de temperatura y humedad en el Monitor Serial cada dos segundos.
Resolución de problemas – Error al leer del sensor DHT
Si estás tratando de leer la temperatura y la humedad del sensor DHT11/DHT22 y recibes un mensaje de error en tu Monitor Serial, sigue los siguientes pasos para ver si puedes hacer que tu sensor funcione (o lee nuestra Guía de resolución de problemas dedicada a DHT).
«Error al leer del sensor DHT!» o lecturas de Nan
Si tu sensor DHT devuelve el mensaje de error «Error al leer del sensor DHT!» o las lecturas DHT devuelven «Nan»:
Prueba uno de los siguientes consejos de resolución de problemas:
- Cableado: al construir un proyecto electrónico, debes comprobar el cableado o la asignación de pines. Después de comprobar y probar que tu circuito está conectado correctamente, si aún no funciona, continúa leyendo los siguientes consejos de resolución de problemas.
- Alimentación: el sensor DHT tiene un rango de funcionamiento de 3V a 5.5V (DHT11) o 3V a 6V (DHT22). Si estás alimentando el sensor desde el pin 3.3V del ESP32, en algunos casos alimentar el DHT con 5V resuelve el problema.
- Puerto USB o cable USB defectuoso: a veces, alimentar el ESP32 directamente desde un puerto USB de la PC no es suficiente. Intenta conectarlo a un concentrador USB alimentado por una fuente de alimentación externa. También puede ayudar reemplazar el cable USB por uno mejor o más corto. Tener un puerto USB que suministre suficiente energía o usar un buen cable USB a menudo resuelve este problema.
- Fuente de alimentación: como se mencionó en el consejo anterior, tu ESP puede no estar suministrando suficiente energía para leer correctamente del sensor DHT. En algunos casos, es posible que necesites alimentar el ESP con una fuente de alimentación que proporcione más corriente.
- Tipo de sensor: verifica que hayas descomentado/comentado en tu código el sensor correcto para tu proyecto. En este proyecto, estábamos usando el DHT22:
- Tasa de muestreo: el sensor DHT es muy lento para obtener las lecturas (las lecturas del sensor pueden tener hasta 2 segundos de antigüedad). En algunos casos, aumentar el tiempo entre las lecturas resuelve el problema.
- El sensor DHT está dañado o roto: lamentablemente, estos sensores baratos a veces parecen estar totalmente bien, pero están dañados/rotos. Así que, aunque hayas ensamblado correctamente el circuito y el código, seguirá fallando al obtener las lecturas. Intenta usar un sensor diferente para ver si se soluciona tu problema.
- Tasa de baudios incorrecta o fallo al cargar el código: si no ves nada en el Monitor Serial de tu Arduino IDE, verifica que hayas seleccionado la tasa de baudios correcta, el puerto COM o que hayas cargado el código correctamente.
// Descomenta/comenta el tipo de sensor de temperatura que estás utilizando //#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 //#define DHTTYPE DHT21 // DHT 21 (AM2301)
Mientras construyes nuestros proyectos, hemos experimentado problemas similares con el DHT y siempre se han resuelto 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 cuando intentas compilar el código. Si recibes el siguiente error:
fatal error: Adafruit_Sensor.h: No such file or directory #include <Adafruit_Sensor.h>
Debes instalar la biblioteca del controlador Adafruit Unified Sensor. En tu Arduino IDE, escribe en el cuadro de búsqueda «Adafruit Unified Sensor», desplázate hasta el final para encontrar la biblioteca e instálala.
Después de instalar la biblioteca, reinicia tu Arduino IDE y el código debería compilar sin el mensaje de error.
Conclusión
Con este tutorial has aprendido cómo obtener lecturas de temperatura y humedad de un sensor DHT11 o DHT22 utilizando el ESP32 con Arduino IDE. Obtener lecturas de temperatura y humedad con la biblioteca Adafruit DHT es muy simple, solo necesitas usar los métodos readTemperature() y readHumidity() en un objeto DHT.
Ahora, puedes llevar este proyecto al siguiente nivel y mostrar tus lecturas de sensor en un servidor web que puedes consultar utilizando el navegador de tu smartphone. Aprende cómo construir un servidor web con el ESP32 para mostrar tus lecturas de sensor: ESP32 DHT11/DHT22 Web Server – Temperatura y Humedad usando Arduino IDE
Si te gusta el ESP32, es posible que también te gusten los siguientes recursos:
- ¡Aprende ESP32 con Arduino IDE! (eBook + curso en vídeo)
- ESP32 Web Server – Arduino IDE
- ESP32 Web Server con BME280 – Mini estación meteorológica
- ¡Más de 20 proyectos y tutoriales de ESP32!
Es
¡Interesante! ¡Me gustaría probar este proyecto!
¡Qué buena idea! Me encantaría aprender a utilizar el sensor de temperatura y humedad DHT11/DHT22 con el ESP32 y Arduino IDE. ¡Seguro que es un proyecto muy interesante!
¡Esto suena genial! Me emociona la idea de poder usar el ESP32 con el sensor de temperatura y humedad DHT11/DHT22. ¡Definitivamente es algo que quiero probar! 🔥🙌