Los DHT22 y DHT11 son elementos que nos permiten detectar tanto la humedad como la temperatura, su popularidad es indiscutible y son muy empleados en el mundo de Arduino.
El DHT22 es el hermano mayor del DHT11 se dice por ahí que es mas preciso, con rangos de lectura mas amplios y algunas cosas mas... en mi experiencia lo que puedo decir es que los DHT22 tienen una vida media de 6 meses, mientras que los DHT11 que compre hace alrededor de 4 ó 5 años siguen funcionando.
Por su parte el precio de estos sensores oscila entre los 0,40€ para el DHT11 y los 3€ para los DHT22
Arduino cuenta con librerías para hacer uso de ellos con mucha comodidad. Hay que descargarla!!!
Por su parte la conexión es idéntica en ambos casos y sería algo así:
El valor de la resistencia puede oscilar entre 2,2KΩ y 10KΩ
Para mayor comodidad este sensor se suele vender con su shield, que nos va facilitar la conexión:
El de la izquierda cuenta con tres pines para la conexión directa a la Arduino: Positivo - señal - negativo.
Vamos a ver un código para comprobar su funcionamiento a través del serial:
/* ESQUEMA DE CONEXIONES - Compilación Arduino 1.8.1 14/03/2019 7-14v. +-----+ ____[PWR]___________________| USB |__ | +-----+ | | GND/RST2 [ ][ ] | | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | | 5V/MISO2 [ ][ ] A4/SDA[ ] | | AREF[ ] | | GND[ ] | | [ ]N/C SCK/13[ ] | | [ ]IOREF MISO/12[ ] | | [ ]RST MOSI/11[ ]~| | [ ]3V3 +---+ 10[ ]~| + DHT -----> | [ ]5v -| A |- 9[ ]~| - DHT -----> | [ ]GND -| R |- 8[ ] | | [ ]GND -| D |- | | [ ]Vin -| U |- 7[ ] |<-- Señal DHT | -| I |- 6[ ]~| | [ ]A0 -| N |- 5[ ]~| | [ ]A1 -| 0 |- 4[ ] | | [ ]A2 +---+ INT1/3[ ]~| | [ ]A3 INT0/2[ ] | | [ ]A4/SDA RST SCK MISO TX>1[ ] | | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | | [ ] [ ] [ ] | | UNO_R3 GND MOSI 5V ____________/ \_______________________/ */ #include "DHT.h" // Incluimos la libreria DHT #define DHTPIN 7 // Conectado al pin de datos del sensor //#define DHTTYPE DHT11 // descomentar para emplear DHT 11 #define DHTTYPE DHT22 // comentar para emplear el DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("Iniciando DHT"); dht.begin(); // Inicializa el sensor } void loop() { float hum = dht.readHumidity(); // asignamos el valor de humedad a nuestra variable hum float temp = dht.readTemperature();// asignamos el valor de temperatura a nuesta variable temp if (isnan(temp) || isnan(hum)) { // la funcion boolena isnan (isnotanumber), devuelve true si lo leido no es un numero Serial.println("ERROR al leer DHT"); } else { Serial.print("Humedad: "); Serial.print(hum); Serial.print(" %\t"); Serial.print("Temperatura: "); Serial.print(temp); Serial.println(" C"); } delay(500); }
La salida por Serial ...
y el conexionado ...
Como podemos ver, es de lo mas sencillo gracias a la librería DHT de Adafruit que podéis descargar AQUÍ MISMO