Muchos proyectos requieren de medir temperatura y humedad, todo con el fin de crear sistemas de refrigeración y climatización precisos. Te enseñamos como instalar el Sensor DHT11 con arduino.
En este artículo te hablaremos del DHT11, un dos en uno fácil de implementar con cualquier microcontrolador, que, además, posee una señal digital calibrada que lo dota de estabilidad y otras características interesantes.
¿Qué es el sensor DHT11?
Es un dispositivo preciso y silencioso que permite medir la temperatura y humedad mediante el uso de la plataforma Arduino, el cual utiliza un pin digital que se encarga de enviar la información.
Lo puedes comprar en dos formatos diferentes:
De forma individual con cuatro pines
En este caso, tenemos una presentación individual, sin estar insertado, que posee cuatro pines los cuales son para las siguientes conexiones:
- VCC: Este es para la alimentación.
- I/O: Transmisión de datos.
- NC: Sin conexión, el pin está al aire, es decir. No Conecta.
- GND: Conexión a Tierra.
Insertado en una PCB con 3 pines
En este caso, tenemos una presentación individual, sin estar insertado, que posee cuatro pines los cuales son para las siguientes conexiones:
- GND: Conexión con tierra.
- DATA: El Pin de transmisión de datos.
- VCC: Su Alimentación.
Características del DHT11
En general, ambos tipos de DHT11 poseen las siguientes características que lo hacen único como aparato:
- Muy barato.
- Funciona con 3,3 y/o 5V de alimentación.
- Entre 0º a 50º con 5º precisión en temperatura.
- Rango de humedad: de 20% al 80% con 5º precisión.
- 1 Muestra por segundo.
- Bajo consumo. ( 2.5 mA)
- Devuelve la medida en grados centígrados.
Pinout y datasheet del sensor DHT11
La información técnica del DHT11 está en sus datasheets, donde cada fabricante aporta algunos valores que podrían variar en menor medida.
Vale acotar, que los datos se transmiten de forma digital, aunque el sensor sea analógico, posee un sistema que hace la conversión y conecta directamente a una entrada digital de Arduino.
La señal analógica del sensor se acopla al formato digital y es enviada al microcontrolador de Arduino, transmitiendo en una trama de 40-bits correspondientes a los datos sobre humedad y temperatura.
Los primeros dos grupos de bits (16 en total) permiten medir la humedad, es decir, son los más significativos de la trama, mientras que los otros 2 grupos corresponden a la temperatura.
Asimismo, la primera parte siempre será entera y la segunda en decimales, con una paridad para evitar errores, es decir, que permita comprobar que todo está correcto. Por tanto, si la suma da igual a la paridad, la cosa irá bien.
Mientras tanto, cuando ya sabes lo descrito en el punto anterior, debes adentrarte a conocer los pines, un proceso sencillo, en el que juegan un papel fundamental el de alimentación o Vcc, el E/S para transmitir datos, y un GND para la conexión a tierra.
Conexión con Arduino
Una vez familiarizado con el pinout del DHT11 y la placa Arduino, la conexión es muy simple. Si eliges el módulo integrado en un PCB, recuerda que los pines serán tres (Viene sin NC para facilitar las cosas).
Posteriormente, debes conectar el pin de tierra con alguna de la GND de Arduino, mientras que el de alimentación va a la conexión de 5v, de esta forma, el sensor será alimentado con GND y Vcc.
Para ello, podrás usar cualquier entrada digital para transmitir los datos desde el sensor DHT11 a la placa Arduino. Podrás usarlo una vez creado el código en Arduino IDE, un paso necesario para tales fines.
Asimismo, cuando el sensor está alejado, deberás usar un cable de longitud superior a 20 metros y una resistencia pull-up de 5k, para cables mayores deberá ser proporcionalmente mayor.
Ten en cuenta que, si usas 3,5v en vez de 5v, entonces el cable no debe ser mayor de 20 cm.
¿Cómo se transmite los datos ?
Vale recordar, que dentro del propio dispositivo se hace la conversión entre analógico y digital, por lo tanto, se el sensor DHT11 trabaja inicialmente con una señal analógica que posteriormente la transforma en digital para que al enviarlo al microcontrolador este, la pueda entender.
En este proceso se cumplen varios pasos o procesos. Te los describiremos a continuación:
Trama datos DHt11
El primer proceso es la trama de datos, esta se divide en 4 grupos.
- En este grupo contiene los datos relativas a la humedad.
- El segundo es la parte decimal.
- Datos de temperatura.
- Más datos de temperatura.
En esta etapa los bits de paridad son confirmados, de manera que no haya datos corrompidos. Además de corroborar que la información sea correcta.
Código para tu proyecto con el DHT11
Ahora que tienes el circuito listo (módulo con PCB o sin PCB) e instalada la librería, solo debes crear un nuevo programa.
Un ejemplo para obtener 3 valores del DHT11 sería:
- Humedad referente: Es la cantidad de agua que se transporta por el aire y determina el desarrollo de las nubes y la precipitación.
- Grados Temp. ambiente: Temperatura del lugar.
- Índice de calor: Indica la temperatura sabiendo la humedad relativa y la temperatura.
Otros datos importantes sobre el sensor DHT11
Librerías
Si programas el sensor sin usar librerías puede que sea complejo, por eso, preferimos que instales la librería presionando la combinación de teclas “Ctrl+Mayús+I” y el IDE te debería dejar instalar la librería que necesitas.
En todo caso siempre puedes hacerlo manualmente con la librería de Adafruit.
Código
Permite leer y mostrar en el monitor la humedad relativa y temperatura en grados Celsius y Fahrenheit.
// 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");
}
Hoja de datos o datasheet sensor DHT11
Es un documento que permite describir la funcionalidad y características del sensor DHT11 el rango de temperatura, corriente que soporta, y un largo etc, lo podéis ver en el siguiente PDF
Cuanto vale un sensor DHT11
El precio es lo mejor de todo, en el caso del dht11, es muy barato. Podemos encontrarlo 0,70€ en tiendas chinas tipo aliexpress, y su modelo superior el dht22 lo podemos encontrar por 2,40€ que sigue siendo barato.
Si eres de los que tiene prisa y no puede esperar 2 semanas a que llegue el componente, siempre lo puedes pedir en amazon, que aunque sea más caro, te llega en 24h.
Conclusión
El resultado al ejecutar el programa debe ser como lo describe el protocolo, si en el proceso da un mensaje de error, debes revisar las conexiones y verificar que el aparato esté en buenas condiciones.