ESP32 - Sensor de Temperatura y Humedad

Este tutorial le enseña cómo usar el ESP32 para leer la temperatura y la humedad de los sensores DHT11 o DHT22 y mostrarlas en el Monitor Serial.

Acerca del sensor de temperatura y humedad DHT11 y DHT22

En resumen, el sensor DHT22 es más preciso, tiene un rango mayor, pero es más caro que el DHT11. Veamos las similitudes y diferencias entre ellos.

Los bienes comunes

  • La misma disposición de pines
  • El mismo cableado para ESP32
  • Código ESP32 similar

Las diferencias

La tabla a continuación muestra las diferencias detalladas entre DHT11 y DHT22:

DHT22 DHT11
The price low cost ultra low cost
The humidity range 0% to 100% 20% to 80%
The humidity accuracy ± 2% to 5% 5%
The temperature range -40°C to 80°C 0°C to 50°C
The temperature accuracy ± 0.5°C ± 2°C
The reading rate 0.5Hz (one time per 2 seconds) 1Hz (one time per second)
Dimension 15.1mm x 25mm x 7.7mm 15.5mm x 12mm x 5.5mm
Operating Voltage3 to 5V 3 to 5V

Pinout de DHT11 y DHT22

El sensor DHT11 y DHT22 incluye 4 pines:

  • Pin GND: conecta este pin a GND (0V)
  • Pin VCC: conecta este pin a VCC (3.3V o 5V)
  • Pin DATA: el pin se utiliza para comunicar entre el sensor y el ESP32
  • Pin NC: No conectado
Pinout del sensor de temperatura y humedad DHT11 y DHT22

Recomendamos encarecidamente utilizar los módulos de sensores DHT11 y DHT22. Los módulos tienen una resistencia integrada y solo tres pines: VCC, GND y DATA (o, alternativamente: +, -, y OUT).

Disposición de pines del módulo de temperatura y humedad DHT11 y DHT22
image source: diyables.io

El orden de los pines en el módulo puede ser diferente entre fabricantes. Por favor, verifique cuidadosamente las etiquetas de los pines impresas en el módulo.

Diagrama de cableado entre DHT11/DHT22 y ESP32

El cableado hacia el ESP32 es el mismo para ambos sensores. En su forma original, se requiere una resistencia de entre 5 kΩ y 10 kΩ para mantener la línea de datos en alto y para habilitar la comunicación entre el sensor y el ESP32.

ESP32 - Cableado del sensor DHT11

Diagrama de cableado del sensor DHT11 de temperatura y humedad para ESP32

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

ESP32 - Cableado del sensor DHT22

Diagrama de cableado del sensor de temperatura y humedad DHT22 para ESP32

This image is created using Fritzing. Click to enlarge image

ESP32 - Cableado del módulo DHT11

La mayoría de los módulos del sensor DHT22 tienen una resistencia integrada, por lo que no es necesario añadirla. Esto nos ahorra algo de cableado o de soldadura.

Diagrama de cableado del módulo DHT11 de temperatura y humedad para ESP32

This image is created using Fritzing. Click to enlarge image

Cableado del módulo ESP32-DHT22

La mayoría de los módulos de sensor DHT22 tienen una resistencia integrada, por lo que no necesitas añadirla. Eso nos ahorra algo de cableado o soldadura.

Diagrama de cableado del módulo de temperatura y humedad DHT22 para ESP32

This image is created using Fritzing. Click to enlarge image

Código ESP32 - DHT11

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-temperature-humidity-sensor */ #include <DHT.h> #define DHT_SENSOR_PIN 21 // ESP32 pin GPIO21 connected to DHT11 sensor #define DHT_SENSOR_TYPE DHT11 DHT dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE); void setup() { Serial.begin(9600); dht_sensor.begin(); // initialize the DHT sensor } void loop() { // read humidity float humi = dht_sensor.readHumidity(); // read temperature in Celsius float tempC = dht_sensor.readTemperature(); // read temperature in Fahrenheit float tempF = dht_sensor.readTemperature(true); // check whether the reading is successful or not if ( isnan(tempC) || isnan(tempF) || isnan(humi)) { Serial.println("Failed to read from DHT sensor!"); } else { Serial.print("Humidity: "); Serial.print(humi); Serial.print("%"); Serial.print(" | "); Serial.print("Temperature: "); Serial.print(tempC); Serial.print("°C ~ "); Serial.print(tempF); Serial.println("°F"); } // wait a 2 seconds between readings delay(2000); }

Código ESP32 - DHT22

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-temperature-humidity-sensor */ #include <DHT.h> #define DHT_SENSOR_PIN 21 // ESP32 pin GPIO21 connected to DHT22 sensor #define DHT_SENSOR_TYPE DHT22 DHT dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE); void setup() { Serial.begin(9600); dht_sensor.begin(); // initialize the DHT sensor } void loop() { // read humidity float humi = dht_sensor.readHumidity(); // read temperature in Celsius float tempC = dht_sensor.readTemperature(); // read temperature in Fahrenheit float tempF = dht_sensor.readTemperature(true); // check whether the reading is successful or not if ( isnan(tempC) || isnan(tempF) || isnan(humi)) { Serial.println("Failed to read from DHT sensor!"); } else { Serial.print("Humidity: "); Serial.print(humi); Serial.print("%"); Serial.print(" | "); Serial.print("Temperature: "); Serial.print(tempC); Serial.print("°C ~ "); Serial.print(tempF); Serial.println("°F"); } // wait a 2 seconds between readings delay(2000); }

Los dos códigos anteriores tienen solo una línea diferente.

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en el IDE de Arduino.
  • Realiza el cableado como en la imagen de arriba.
  • Conecta la placa ESP32 a tu PC mediante un cable micro USB.
  • Abre el IDE de Arduino en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
  • Haz clic en el icono Librerías en la barra izquierda del IDE de Arduino.
  • Escribe “DHT” en la caja de búsqueda, luego busca la biblioteca del sensor DHT de Adafruit
  • Instala la biblioteca haciendo clic en el botón Instalar.
Biblioteca de sensores DHT para ESP32
  • Aparece una ventana que te pide instalar las dependencias de la biblioteca.
  • Instala todas las dependencias de la biblioteca haciendo clic en el botón Instalar todo.
Biblioteca unificada de sensores de Adafruit para ESP32
  • Copia uno de los códigos anteriores y ábrelo con el IDE de Arduino
  • Compila y carga el código en la placa ESP32 haciendo clic en el botón Subir del IDE de Arduino
  • Haz que el sensor esté más frío o más caliente. Por ejemplo, colocando el sensor cerca de una taza de café caliente
  • Mira el resultado en el Monitor Serial. Se muestra a continuación:
COM6
Send
Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 32.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 29.00°C ~ 84.20°F Humidity: 32.00% | Temperature: 29.00°C ~ 84.20°F Humidity: 31.00% | Temperature: 29.00°C ~ 84.20°F
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!