(B2) MODULO SENSOR DE TEMPERATURA Y HUMEDAD RELATIVA DHT11
El DHT11 es un sensor de humedad relativa y temperatura de bajo costo y de media precisión a un bajo precio. La salida suministrada es de tipo digital utilizando solamente 1 pin de datos.Compatible con Arduino, Raspberry Pi y NodeMCU mediante conexión sencilla (VCC, GND y pin de datos). Cada sensor requiere su propio pin de datos si se usan varios. Recomendado usar cable apantallado (máx. 20 m) y proteger de radiación solar directa.
DESCRIPCIÓN:
El DHT11 es un sensor digital de temperatura y humedad relativa de bajo costo y fácil uso. Integra un sensor capacitivo de humedad y un termistor para medir el aire circundante, y muestra los datos mediante una señal digital en el pin de datos (no posee salida analógica). Utilizado en aplicaciones académicas relacionadas al control automático de temperatura, aire acondicionado, monitoreo ambiental en agricultura y más.
Utilizar el sensor DHT11 con las plataformas Arduino/Raspberry Pi/Nodemcu es muy sencillo tanto a nivel de software como hardware. A nivel de software se dispone de librerías para Arduino con soporte para el protocolo "Single bus". En cuanto al hardware, solo es necesario conectar el pin VCC de alimentación a 3-5V, el pin GND a Tierra (0V) y el pin de datos a un pin digital en nuestro Arduino. Si se desea conectar varios sensores DHT11 a un mismo Arduino, cada sensor debe tener su propio pin de datos. Quizá la única desventaja del sensor es que sólo se puede obtener nuevos datos cada 2 segundos. Cada sensor es calibrado en fabrica para obtener unos coeficientes de calibración grabados en su memoria OTP, asegurando alta estabilidad y fiabilidad a lo largo del tiempo. El protocolo de comunicación entre el sensor y el microcontrolador emplea un único hilo o cable, la distancia máxima recomendable de longitud de cable es de 20m., de preferencia utilizar cable apantallado. Proteger el sensor de la luz directa del sol (radiación UV).
En comparación con el DHT22 y DHT21, este sensor es menos preciso, menos exacto y funciona en un rango más pequeño de temperatura / humedad, pero su empaque es más pequeño y de menor costo.
ESPECIFICACIONES TÉCNICAS:
- Voltaje de Operación: 3V - 5V DC
- Rango de medición de temperatura: 0 a 50 °C
- Precisión de medición de temperatura: ±2.0 °C
- Resolución Temperatura: 0.1°C
- Rango de medición de humedad: 20% a 90% RH.
- Precisión de medición de humedad: 5% RH.
- Resolución Humedad: 1% RH
- Tiempo de censado: 1 seg.
- Interface digital: Single-bus (bidireccional)
- Modelo: DHT11
- Dimensiones: 16*12*5 mm
- Peso: 1 gr.
- Carcasa de plástico.
MATERIAL UTILIZADO:
- Módulo Arduino UnoC
- Cable para protoboard o JumpersC
- 1 Resistencia de 5000 ohmios

DESCRIPCION DEL CODIGO:
- Se incluye la librería DHT, que contiene las funciones necesarias para comunicarse con el sensor.
- Se define el pin digital 2 como la entrada de datos del sensor.
- Se especifica el tipo de sensor (DHT11), ya que también existen otros como el DHT22.
- Finalmente, se crea un objeto dht que permitirá interactuar con el sensor.
- Serial.begin(9600) inicia la comunicación serial a 9600 baudios para poder enviar datos al monitor serial.
- dht.begin() inicia el sensor DHT11, preparándolo para empezar a tomar lecturas.
- Se verifica si alguna lectura es inválida
- Si hay un error, se muestra un mensaje y se omite el resto del ciclo.
- • Se muestran los valores de humedad, temperatura y índice de calor en la pantalla serial.
CÓDIGO:
// 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");
}
DIAGRAMA ESQUEMÁTICO DE LA PRÁCTICA MENCIONADA EN ESTE DOCUMENTO:

Referencias específicas
- ean13
- 8582053381661