Proyecto 24 – Módulo sensor DHT22

En este proyecto vamos a utilizar un módulo sensor DHT22, que nos permite registrar la temperatura y la humedad relativa del aire con un sólo módulo un utilizando un solo pin del Arduino, aunque parece algo complicado este es otro de esos proyectos muy fáciles de implementar y de código muy sencillo.

Módulo sensor DHT22

Módulo DHT11

El Sensor DHT22 es un sensor de temperatura y humedad digital, este sensor posee internamente un termistor para medir la temperatura del aire circundante y un sensor capacitivo para la medición de la humedad, el es muy fácil de utilizar con el Arduino, en general con cualquier microcontrolador, ya que solo utiliza un pin de comunicaciones. Es un sensor un poco lento, pero más preciso que su hermano el DHT11.

Es muy útil para una gran variedad de aplicaciones, como por ejemplo climatización de ambientes, monitoreo de equipos electrónicos, invernaderos, etc.

Especificaciones:

  • Voltaje de operación: 3.3 – 5V
  • Consumo de corriente: 2.5mA
  • Rango de medición de humedad: 0% a 100% RH
  • Precisión de medición de humedad: 2%
  • Resolución Humedad: 0.1% RH
  • Histéresis de humedad: <±0.3% RH
  • Rango de medición de temperatura: -40 a 80°C
  • Precisión de medición de temperatura: ±0.5°C
  • Resolución temperatura: 0.1°C
  • Tipo de salida: Digital

Componentes

  • Arduino UNO o placa compatible
  • Módulo DHT22
  • Cables o Jumpers
diagrama sensor DHT22 en Arduino
Diagrama del sensor DHT22 con el Arduino

Al utilizar el módulo HDT22 las conexiones son muy simples ya que el módulo ya posee una resistencia pull-up y sólo debemos preocuparnos por la tierra, los 5V y la salida del sensor. Hay que revisar bien los pines de los módulos, ya que el que usamos en el proyecto tiene los pines en una distribución diferente que puede diferir a la otros fabricantes.

Lo primero que vamos a conectar es un cable que va del pin + del sensor al 5V del Arduino, lo siguiente es un cable del pin OUT al pin digital 6 del Arduino y por último el pin – del sensor al GND del Arduino.

Pin módulo DHT22Pin Arduino
+5V
OUT6
GND

Instalando la librería sensor DHT

Los sensores DHT11, DHT22 (AM2302), DHT21 (AM2301) poseen su protocolo propio de comunicaciones, el cual les permite enviar la información por un sólo pin, pero crear el código para ese comunicarse por este protocolo es mucho trabajo, afortunadamente Adafruit ha creado una librería para lograr esa comunicación y solo usaremos una cuantas líneas de código.

La instalación de la biblioteca, es bastante simple, lo primero es ir al menú Programa> Incluir Librería> Administrar bibliotecas, aquí hay que esperar un poco a que se actualice el indice librerías o bibliotecas instaladas.

Una vez termine de actualizar vamos al cuadro de búsqueda y digitamos «DHT sensor». Nos aparecerían varios resultados, pero seleccionamos las que se llama «DHT sensor library» de Adafruit y le damos instalar.

Código

#include <DHT.h>

#define DHTTYPE DHT22
 
const int DHTPin = 6;
 
DHT dht(DHTPin, DHTTYPE);
 
void setup() 
{
   Serial.begin(9600);
   Serial.println("Probando DHT22!");
 
   dht.begin();
}
 
void loop() 
{
   delay(2000);
 
   float h = dht.readHumidity();
   float t = dht.readTemperature();
 
   if (isnan(h) || isnan(t)) 
   {
      Serial.println("No se pudo leer el sensor DHT!");
      return;
   }
 
 
   Serial.print("Humedad: ");
   Serial.print(h);
   Serial.print(" %\t");
   Serial.print("Temperatura: ");
   Serial.print(t);
   Serial.println(" *C ");
}

Explicación del código

Comenzaremos a revisar el código, primero vamos a ver las declaraciones de las variables.

#define DHTTYPE DHT22

const int DHTPin = 6;
 
DHT dht(DHTPin, DHTTYPE);

Lo primero que observamos es la declaración de una constante con DHTTYPE a la que le asignamos el el valor DHT22, #define DHTTYPE DHT22, luego encontramos la declaración de otra constante entera DHTPin a la que asignaremos el valor de 6, el cual sera el pin del Arduino al que irá conectado el sensor. Por último tenemos la creación de una instancia de un objeto del tipo DHT, al que llamamos dht y le asignamos el pin y el modelo del sensor.

Función setup()

Serial.begin(9600);
Serial.println("Probando DHT22!");
 
dht.begin();

Como bien sabemos en el setup ponemos todo lo que debe ser inicializado o ejecutado una sola vez, el el caso de este proyecto lo primero que vemos es la inicialización de la comunicación serial a una velocidad el 9600 baudios, la cual utilizaremos para poder ver los valores de nuestro sensor. La línea siguiente nos imprime en el monitor de serie la frase «Probando DHT22!». Por último encontramos la inicialización del objeto dht, con el cual iniciamos la comunicación con nuestro sensor.

Función loop()

delay(2000);
 
//La lectura de la temperatura o la humedad tarda unos 250 milisegundos!
float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(h) || isnan(t)) 
{
   Serial.println("No se pudo leer el sensor DHT!");
   return;
}
 
 
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C ");

Iniciamos la función loop con una pausa de 2 segundos delay(2000), ya que es lo recomendado entre lectura y lectura, con esto nos aseguramos que haya pasado 2 segundo desde la última lectura. Luego declaramos una variable de punto flotante h float h = dht.readHumidity(), la cual almacena la lectura de la humedad del sensor dht. De igual manera declaramos otra variable de punto flotante h float t = dht.readTemperature(), a esta le asignaremos la lectura de de la temperatura del sensor dht.

Ahora encontramos la condicional if (isnan(h) || isnan(t)), en la que se evalúa que si el valor de la variable h o el valor de la variable t no es un número entonces imprimirá en el monitor serial «No se pudo leer el sensor DHT!» Serial.println("No se pudo leer el sensor DHT!") y luego vuelve a comenzar la función loop return.

En la última parte del código del loop encontramos ya la impresión de los valores del sensor. Primero vemos que imprimirnos la palabra «Humedad: «, después imprimimos el valor de h, que es el valor de la humedad relativa (RH), seguido a esto imprimimos una tabulación.

Seguimos con la siguiente línea, la cual es la impresión de un texto «Temperatura: «, la línea que sigue es la impresión del valor de t, variable que contiene el valor en centígrados de la temperatura. Por último, imprimimos » *C» y un salto de línea.

Salida del monitor serial

Resumen

Cuando conectamos nuestro Arduino a la computadora e iniciamos el monitor serial, comenzaremos a registrar los valores de la temperatura y humedad relativa que va midiendo nuestro sensor DHT22.


Deja un comentario

Este sitio está protegido por reCAPTCHA y se aplican la política de privacidad y los términos de servicio de Google.