Ejemplo 4

Medici贸n de temperatura y humedad usando el sensor DTH11 en el ESP32

Descripci贸n

Este ejemplo muestra en el monitor serial se muestran las variables: humedad, temperatura (en 掳C y 掳F) e indice de calor (en 掳C y 掳F) medidas usando el sensor de temperatura y humedad (DTH11). Este ejemplo fue adaptado (copiado y modificado) de la pagina ESP32 with DHT11/DHT22 Temperature and Humidity Sensor using Arduino IDE (link) de Random Nerd Tutorials

Componentes

La siguiente tabla muestra los componentes principales del circuito a montar:

Componentes
Cantidad
Observaciones

ESP32

1

DYH11 (sensor de temperatura y humedad)

1

Disponible en el modulo kit de Elegoo.

Conexi贸n

La conexi贸n entre el sensor DTH11 se muestra en la siguiente tabla:

ESP32
DTH11

GND

GND - (pin 3 - derecha)

3.3V

Vin (pin 2 - centro)

GPIO2

S (pin 1 - izquierda)

Esquematico

La siguiente figura muestra el esquematico:

Conexi贸n

A continuaci贸n se muestra la conexi贸n entre los componentes:

Archivo Fritzing

Pasos previos si se usa platformio

  1. Configurar en Platformio la plataforma a emplear eligiendo como dispositivo el ESP32 tal y como se resume en la siguiente tabla:

Parametro
Valor

Name

Nombre del proyecto (ESP32_Temp-DS18B20 para este ejemplo)

Board

NodeMCU-32S (Board disponible en el laboratorio)

Framework

Arduino (Es el que hemos manejado)

  1. Agregue las librerias necesarias: En nuestro caso estamos empleando el sensor DTH11 (link) por lo que es necesario agregar la libreria DHT sensor library (link). En la siguiente figura se muestra cuando se esta en la busqueda de la libreria:

Libreria
Observaciones

DHT sensor library

Libreria de Arduino (Mantenida por Adafruit) para sensores de temperatura/humedad de la serie DTH (link). Un ejemplo muy util se encuentra en el siguiente documento de Adafruit (link)

Adafruit Unified Sensor

Una vez que se encuentra la libreria se procede a instalarla (Add project dependency).

Finalmente una vez hecho lo anterior, si todo esta bien, el archivo platform.ini se vera de la siguiente forma:

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

platform = espressif32
board = nodemcu-32s
framework = arduino
lib_deps = 
	adafruit/DHT sensor library@^1.4.4
	adafruit/Adafruit Unified Sensor@^1.1.9
  1. Configurar el monitor serial.

Programa (implementado en el IDE de Arduino)

A continuaci贸n se muestra el programa que se ejecuta en el ESP32, este el cual basicamente es el mismo programa implementado para el Arduino UNO pero empleando otros pines. Si este se hubiese implementado en platformio adicionalmente el main.cpp tendria incluida la libreria al principio:

#include <Arduino.h>

En nuestro ejemplo como la implementaci贸n se hizo en el IDE de Arduino no se incluye esta libreria de modo que queda como se muestra a continuaci贸n.

/* Librerias*/
#include "DHT.h"

/**
   Hardware Connections:

    ESP32 | DHT11
    -------------------
      3.3V  |   S (pin 1 - izquierda)
      2     |   Vin (pin 2 - centro)
      GND   |   GND (pin 3 - derecha)
*/

// Pines
#define DHTPIN 2 

#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

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(t) || isnan(f)) {
    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(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"));
}

La documentaci贸n de la libreria empleada puede ser consultada en el suguiente repositorio (link).

Prueba de funcionamiento

Una vez que la aplicaci贸n ha sido correctamente compilada y descargada a la ESP32 se puede proceder a verificar su correcto funcionamiento. En nuestro caso, si todo esta bien, la salida que se mostrara en el monitor serial tendra la siguiente forma:

Simulaci贸n

Para comprender el funcionamiento del programa, puede seguir el siguiente link. Tenga en cuenta que en la simulaci贸n el sensor empleado es el DTH22 (y no el DTH11) por lo que tanto el c贸digo como la conexi贸n del simulador se adapto para este sensor. A continuaci贸n se muestra la figura asociada a la simulaci贸n:

Last updated