Dificultad: media

Una de las ventajas que nos ofrece el DHT11, además de medir la temperatura y la humedad, es que es digital. A diferencia de sensores como el LM35, este sensor utiliza un pin digital para enviarnos la información y por lo tanto, estaremos más protegidos frente al ruido.

En este articulo explicaremos las conexiones y un codigo básico para el uso del sensor DTH11.

Lista de componentes:

  • Arduino Uno
  • Modulo DTH11
  • Cables de conexión

Imágenes ilustrativas de componentes:

PASO 1 : conexión de componentes:

Este modelo de DHT11 dispone de 3 pines, la toma de tierra GND, para los datos DATA y para la alimentación VCC (de 3,5V a 5V). En la siguiente imagen puedes ver el esquema de conexión con Arduino.

Paso 2 programacion:

Si tuvieras que programar desde cero el sensor de temperatura y humedad DHT11, sería francamente complicado. Sin embargo, las librerías que hay entorno a Arduino nos facilitan mucho la vida. Este es un claro ejemplo.

Hay varias librerías que podemos utilizar para obtener la información de temperatura y humedad. En este caso vamos a utilizar la que nos proporciona Adafruit. Esta librería es muy sencilla de utilizar.

Debes añadir la librería Adafruit_Sensor.h. Sólo tienes que abrir el gestor de librerías y buscar adafruit unified sensor.

Instala la librería que pone Adafruit Unified Sensor.

Una vez instalada la librería, podemos pasar al código.

Copiar y pegar el siguiente código en tu Arduino IDE:

// Incluimos librería
#include <DHT.h> 
// Definimos el pin digital donde se conecta el sensor
#define DHTPIN 2
// Dependiendo del tipo de sensor
#define DHTTYPE DHT11
// Inicializamos el sensor DHT11
DHT dht(DHTPIN, DHTTYPE);
 
void setup() {
  // Inicializamos comunicación serie
  Serial.begin(9600);
  // Comenzamos el sensor DHT
  dht.begin();
}
void loop() {
    // Esperamos 5 segundos entre medidas
  delay(5000);
  // Leemos la humedad relativa
  float h = dht.readHumidity();
  // Leemos la temperatura en grados centígrados (por defecto)
  float t = dht.readTemperature();
  // Leemos la temperatura en grados Fahreheit
  float f = dht.readTemperature(true);
  // Comprobamos si ha habido algún error en la lectura
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Error obteniendo los datos del sensor DHT11");
    return;
  } 
  // Calcular el índice de calor en Fahreheit
  float hif = dht.computeHeatIndex(f, h);
  // Calcular el índice de calor en grados centígrados
  float hic = dht.computeHeatIndex(t, h, false);
  Serial.print("Humedad: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperatura: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Índice de calor: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
}

Aprieta el botón subir para enviar el código al Arduino.

Si “cargado exitosamente” aparece al fondo de la Ventana, significa que el código se cargó exitosamente en la placa.

Luego de cargar el programa, abrimos el monitor serie y configuramos los baudios y podremos ver en tiempo real la temperatura y humedad ambiental.