Módulo DHT11, medir la temperatura y la humedad con Arduino.
| Actualizado:
Comentarios: 1
En este artículo veremos el funcionamiento del módulo DHT11 para medir la temperatura y la humedad, realizaremos la conexión con la placa Arduino y mostraremos las medidas obtenidas a través de una pantalla LCD.
Contenido
El sensor DHT11 nos permite medir la temperatura y la humedad con Arduino, este módulo utiliza un pin digital para enviar la información. Se puede encontrar de forma individual o insertado en una PCB. La versión en PCB consta de una resistencia de 5 kΩ y un led que nos avisa de su funcionamiento. La versión en PCB tiene 3 pines, mientras que el módulo suelto tiene 4 pines.
Los pines de la versión con PCB son:
- GND: conexión de tierra.
- DATA: para transmisión de datos.
- VCC: para la alimentación.
Conectando el sensor DHT11 a la placa Arduino
Material necesario:
- Placa Arduino o similar.
- Módulo DHT11 integrado dentro de un PCB.
- Cables.
Este módulo se caracteriza por incluir una resistencia integrada, en el esquema de montaje hay que tener en cuenta que el orden de los pines puede cambiar según el fabricante.
Esquema:
El módulo dispone de 3 pines: la toma de tierra se debe conectar al pin GND de la placa, la toma VCC al pin de alimentación y el pin DATA al pin digital 2 de la placa Arduino.
Código:
#include "DHT.h"
#define PinSensor 2 // Pin digital al que se conecta el sensor
#define Tipo DHT11 // Tipo de sensor
DHT dht(PinSensor, Tipo);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop(){
delay(5000);
float humedad = dht.readHumidity();
float temperatura = dht.readTemperature();
Serial.print("Humedad: ");
Serial.println(humedad);
Serial.print("Temperatura:");
Serial.println(temperatura);
}
Lo primero que hacemos es incluir la librería DHT.h. Seguidamente, indicamos el pin digital donde hemos conectado nuestro sensor (pin 2) y el tipo de sensor que vamos a utilizar, en nuestro caso es el DHT11.
#define PinSensor 2
#define Tipo DHT11
Creamos el objeto y entre paréntesis a qué pin se encuentra conectado y el tipo de sensor:
DHT dht(PinSensor, Tipo);
En la función setup(), inicializamos el monitor serial, por donde vamos a ver los resultados, y también inicializamos el objeto dht:
Serial.begin(9600);
dht.begin();
En la función loop(), primero esperamos 5 segundos para realizar la lectura y utilizamos las funciones dht.readHumidity() y dht.redtemperature() para leer la humedad y la temperatura:
delay(5000);
float humedad = dht.readHumidity();
float temperatura = dht.readTemperature();
El siguiente paso es mostrarlo por el monitor serial:
Serial.print("Humedad: ");
Serial.println(humedad);
Serial.print("Temperatura:");
Serial.println(temperatura);
En el monitor serial veremos los resultados:
¿Cómo mostrar la temperatura y la humedad por un LCD de 16×2?
Obviamente resulta mucho más cómodo ver reflejada la temperatura y la humedad en una pantalla LCD, es lo que vamos a realizar a continuación. Si no has conectado anteriormente una pantalla LCD con Arduino te aconsejamos que veas ¿cómo conectar un LCD a Arduino UNO?.
Material necesario:
- Placa Arduino o similar Protoboard
- Sensor DHT11
- Display LCD 16×2
- Cables
- Resistencia
- Potenciómetro lineal de 10K
Esquema:
Procedemos a montar el esquema de conexión asegurándonos que los pines del sensor DTH11 son los correctos, cada fabricante los tiene en un orden diferente. El GND conectado a tierra, VCC a la alimentación y el DATA, al pin digital 2 de la placa Arduino.
Desde el LCD: el terminal VSS (1) a tierra, VDD (2) a la alimentación, VO (3) al pin de salida del potenciómetro, RS (4) al pin 7 de Arduino, RW (5) a tierra, E (6) al 8 de la placa, D4 (11) al 9 de Arduino, D5 (12) al 10 Arduino, D6 (13) al 11 de Arduino, D7 (14) al 12 de Arduino, A (15) a la fuente de alimentación y K (16) a tierra.
Código:
#include
#include "DHT.h"
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
#define PinSensor 2
#define Tipo DHT11
DHT dht(PinSensor, Tipo);
void setup() {
lcd.begin(16, 2);
dht.begin();
}
void loop() {
delay(5000);
float humedad = dht.readHumidity();
float temperatura = dht.readTemperature();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temper. = ");
lcd.print(temperatura);
lcd.setCursor(0,1);
lcd.print("Humedad = ");
lcd.print(humedad);
}
En las dos primera líneas del código incluimos las bibliotecas LiquidCrystal.h y DHT.h; estas son las bibliotecas que necesitamos para controlar el LCD y el módulo DHT11, respectivamente:
#include
#include "DHT.h"
Seguidamente, indicamos qué pines de la placa tenemos conectados al LCD:
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
A continuación, indicamos el pin de la placa que está conectado al pin de datos del módulo DHT11, el tipo de sensor y creamos el objeto DHT:
#define PinSensor 2
#define Tipo DHT11
DHT dht(PinSensor, Tipo);
En la función setup() inicializamos el objeto LCD y el DHT:
lcd.begin(16, 2);
dht.begin();
En la función loop(), indicamos que nos muestre la temperatura y la humedad por la pantalla del LCD.
delay(5000);
float humedad = dht.readHumidity();
float temperatura = dht.readTemperature();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temper. = ");
lcd.print(temperatura);
lcd.setCursor(0,1);
lcd.print("Humedad = ");
lcd.print(humedad);