En este artículo repasaremos un proyecto para la medición de temperatura y humedad con Arduino.
Utilizaremos el sensor DTH11 que nos provee una medición muy estable y fiables de estos parámetros. Este sensor lo podemos encontrar en dos versiones: suelto o montado en una placa PCB. Cualquiera de los dos nos sirve para el proyecto y no hay una diferencia de precio considerable entre ambos.
Técnicamente la diferencia está en que el modelo que viene montado en una plaqueta PCB tiene la resistencia pull-up de 5 Kohm incorporada y un led que indica su funcionamiento. Esta versión tiene 3 pines, mientras que el modelo que viene suelto tiene 4 pines.
En ambos casos la alimentación se hará por los pines VCC y GND. Los datos serán transmitidos por el pin DATA.
Características del sensor DHT11
Característica | Valor – Rango |
---|---|
Alimentación | de 3,5 V a 5 V |
Consumo | 2,5 mA |
Señal de salida | Digital |
Medición de Temperatura | |
Rango | de 0ºC a 50ºC |
Precisión | a 25ºC ± 2ºC |
Resolución | 1ºC (8-bit) |
Medición de Humedad | |
Rango | de 20% RH a 90% RH |
Precisión | entre 0ºC y 50ºC ± 5% RH |
Resolución | 1% RH |
Conexionado
Lo importante es que en el conexionado del sensor suelto (sin PCB), debemos colocar la resistencia pull-up, conectada al pin DATA y a VCC. Se recomienda utilizar una resistencia de 5 Kohm (5000 ohm).
El código
El siguiente código nos permite dar los primeros pasos con el sensor. Los datos se mostrarán en el monitor serie.
// Incluimos librería include <DTH.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.println(" *F\t"); Serial.print("Sensación térmica: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F"); Serial.println (""); }