DHT11: Sensor de temperatura y Humedad 

Sensor de temperatura y humedad

Por eso se desarrollaron los sensores de la familia DHT. Nos proporcionan de forma digital la temperatura y la humedad, con diferente precisión según el modelo.

Básicamente hay dos variantes DHT11

Las características del DHT11 son:

  • Muy barato, sobre 2€
  • Funciona con 3,3 y 5V de alimentación
  • Rango de temperatura: de 0º a 50º con 5% de precisión (pero solo mide por grados, no fracciones)
  • Rango de humedad: de 20% al 80% con 5% de precisión
  • 1 Muestra por segundo (No es el más rápido del oeste)
  • Bajo consumo
  • Devuelva la medida en ºC

Destacar que el chip incorpora electrónica para hacer internamente la conversión de temperatura y humedad y nos da un valor de medida de forma digital, es decir, que no necesitamos un pin analógico.

El Programa de lectura del DHT11

En primer lugar, tenemos que descargar una librería para manejarlos cómodamente, DX11.zip e importarla. Aquí teneís la librería DHT11.zip

Hacemos el importar la librería DHT11 que nos pondrá:

#include <DHT11.h>

Y definimos una instancia del sensor donde declaramos el pin al que esta conectado.

int pin=2; 

DHT11 dht11(pin);

Leerlo ahora es muy sencillo:

int error ; 

float temp, humi; 

error = dht11.read(humi, temp)

Basta con hacer dht11.read pasandole las variables donde queremos el resultado, y comprobamos que no haya errors (Siempre es buena idea comprobar que no hay error cuando hacemos una llamda).

Código:

#include <DHT11.h> 
int pin=2; 
DHT11 dht11(pin); 

void setup() 
   { 
       Serial.begin(9600); 
   } 

void loop() 
   { 
       int err; 
       float temp, hum; 
       if((err = dht11.read(hum, temp)) == 0) // Si devuelve 0 es que ha leido bien 
          { 
             Serial.print("Temperatura: "); 
             Serial.print(temp); 
             Serial.print(" Humedad: "); 
             Serial.print(hum); 
             Serial.println(); 
          } 
       else 
          { 
             Serial.println(); 
             Serial.print("Error Num :"); 
             Serial.print(err); 
             Serial.println(); 
          } 
       delay(1000); // lee una vez por segundo 
   }

El resultado se envía a la consola.

Para hacer variar los valores, de humedad y temperatura y comprobar que todo funciona correctamente, podeis, sencillamente, enviar vuestro aliento al sensor, subirá tanto la temperatura como la humedad.