Sensor DHT11: Temperatura y Humedad

Este sensor nos permite obtener la temperatura y la humedad relativa del aire, pues mide el vapor de agua presente en el aire a cierta temperatura, es muy fácil de agregar a nuestras arduino. Este sensor se puede conseguir en formato de modulo con 3 pines o formato normal de 4 pines.

La diferencia de esta manera de conseguirlo en el mercado se basa en que el modulo posee la resistencia pull-up ya en el, y en el normal debemos agregarla entre vcc y data. La resolución de temperatura de este sensor es de 1 °C, con un margen de error de 2°C y el rango de temperatura es de 0°C a 50 °C y la temperatura relativa es dada en porcentaje de 20% a 90% con un margen de error de 5%, el ciclo de muestreo es de 1 segundo (1Hz) osea que cada segundo el sensor actualizara su información.

dht111

Este sensor envía 5 tramas de datos de 8 bits donde la primera trama de 8 bits tiene la información de la humedad parte entera, la segunda los decimales de la humedad, la tercera la parte entera de la temperatura, la cuarta la parte decimal de la temperatura y la quinta y ultima la trama de paridad.

Este sensor se puede alimentar con 3,3V o 5V, permitiendo mayor versatilidad al momento de diseñar nuestro proyecto, es importante tener en cuenta la resistencia pull-up cuando extendemos el sensor a distancias mayores, ya que esta es la diferencia entres el modulo y el sensor normal, pues si queremos posicionar el sensor a una distancia amplia del control (arduino) debemos modificar esta resistencia.

Para facilitar la programación recomiendo las librerías de adafruit donde son necesarias 2, la primera es  Sensor_Adafruit.h, que proporciona las características de muchos sensores para usar con sus librerías, puedes descargarlo AQUI! , y la segunda es la del sensor DHT11 y DHT22 que permite la captura de datos de estos sensores, hacer conversiones de centigrados a fahrenheit, la puedes descargar AQUI!.

CONEXIÓN ARDUINO

La conexión del sensor con nuestra arduino es muy sencilla, y enfatizare en el sensor normal ya que su grado de dificultad es un poco mayor, bueno es solo agregar la resistencia pull-up de 22k Ohmios, en el modulo no se debe asignar ya que ya se encuentra en el. En el diagrama se ve una de 220 Ohmios pero en realidad es de 22k.

dht11_1

En el código siguiente veremos los datos a través del monitor serial.

//Librerias
#include <DHT.h>
#include <DHT_U.h>
#include <Adafruit_Sensor.h>


int pinData = 2; // pin de lectura del sensor
int ModDht = 11; // modelo del sensor DHT11
// si fuera el DHT22 sería 22.

//se crea el objeto dht
DHT dht(pinData,ModDht);

void setup() {
// se inicia el puerto serial
Serial.begin(9600);
// se inicia el sensor
dht.begin();
}

void loop() {
 
Serial.print("Temp: ");
//se toma la lectura de temperatura
// si se quiere en fahrenheit sería asi
//dht.readTemperature(true) 
Serial.print(dht.readTemperature());
Serial.print("  ");
Serial.print("Hum: ");
//se toma la lectura de la temperatura
Serial.println(dht.readHumidity());
delay(1000);

}

ahora para hacerlo mediante un display LCD 16×2 con modulo I2C, si tienes dudas sobre la conexión del modulo para el display o el bus I2C les dejo a continuación los siguientes enlaces donde pueden obtener información sobre estos.

dht11_2

#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <DHT_U.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);

int pinData = 2;
int ModDht = 11;

DHT dht(pinData,ModDht);

void setup() {
lcd.begin(16,2);
dht.begin();
lcd.clear();
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);

}

void loop() {

lcd.setCursor(0,0);
lcd.print("Temp:");
lcd.moveCursorRight();
lcd.print(dht.readTemperature());
lcd.setCursor(0,1);
lcd.print("Hum:");
lcd.moveCursorRight();
lcd.print(dht.readHumidity());
delay(1000);
lcd.clear();
delay(100);
}

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *