DHT11 es un componente bastante simple de usar. Tiene baja precisión y es bastante lento para leer, pero es lo suficientemente bueno para la mayoría de las aplicaciones de control de ambiente. Se compone de un sensor de humedad resistivo y un termistor de coeficiente negativo de temperatura (NTC), ambos controlados a través de un chip de micro-controlador de 8 bits. Este transforma los valores medidos a números a través de una línea de comunicación en serie. El micro-controlador también tiene los parámetros de calibración programados. El componente tiene cuatro patas o pines.
El pin 1 es la fuente de alimentación VCC que va desde 3,5 a 5,5 V de CC. Nótese que no es posible alimentarlo con 3.3V. El pin 2 es el de datos en serie, un bus serie de única línea. Pin 3 No lleva conexión. Y el pin 4 es tierra GND, o pata de alimentación negativa. El pin de datos debe tener una resistencia de pull-up de unos 5.1k según lo sugerido por el fabricante. Sin embargo, cualquier valor entre 4K7 y 10K va a funcionar bien. El rango de humedad de va desde el 20% al 90% de humedad relativa (HR). La precisión de la Humedad es de +/- 5% de humedad relativa. El rango de medición de temperatura va de 0 a 50 °C. La exactitud de la temperatura es de +/- 2% °C.
Ver:
http://www.aosong.com/en/products-21.html
https://akizukidenshi.com/download/ds/aosong/DHT11.pdf
http://www.micro4you.com/files/sensor/DHT11.pdf
See also http://playground.arduino.cc/Main/DHT11Lib
Se puede comprar solo o incluido en un ladrillo o shield. En este caso se utiliza un shield e incluye la resistencia de pull-up de 10K. El shield tiene sólo tres pines. El pin 1 es de señal/datos. El Pin 2 es VCC, y el pin 3 es GND.
Hay otros sensores con mayor precisión como el DHT21 y DHT22. Los valores se envían sobre una sola línea digital a través de un protocolo. El protocolo de comunicación para las DHT21 /22 es idéntico al de DHT11, solo que el formato de datos es diferente. Vamos a utilizar el ejemplo CII-LCD para mostrar humedad y temperatura a través de una pantalla LCD. Y se utilizará la biblioteca de Rob Tillaart DHTstable
https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTstable 0.1.13.
Descargar y descomprimir en el directorio de bibliotecas de el Arduino IDE. En este caso utilizamos un Arduino UNO Rev.3
Ahora cree un sketch con el siguiente código:
/** * Enrique Latorres LCD Temp Humid Demo */ #include <Wire.h> #include <LCD.h>; #include <LiquidCrystal_I2C.h> #define I2C_ADDR 0x3F // 0x3F is the I2C bus address for my unmodified module LiquidCrystal_I2C lcd(I2C_ADDR, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTstable 0.1.13 #include <dht.h> dht DHT; #define DHT11_PIN 7 //Pin to connect signal pin of DHT11 void setup() { lcd.setBacklightPin(3,POSITIVE); lcd.begin(16, 2); lcd.setBacklight(HIGH); lcd.clear(); lcd.setCursor(0,0); lcd.print(«Enrique Latorres»); lcd.setCursor(0,1); lcd.print(«LCDTempHumidDemo»); delay(3000); //Make sure you read my banner } void loop() { int chk = DHT.read11(DHT11_PIN); //Read DHT11 through the right pin switch (chk) { case DHTLIB_OK: lcd.clear(); lcd.setCursor(0,0); lcd.print(«Temp=»); lcd.print(DHT.temperature); lcd.print((char)223); lcd.print(«C»); lcd.setCursor(0,1); lcd.print(«Hum=»); lcd.print(DHT.humidity); lcd.print(«%»); break; case DHTLIB_ERROR_CHECKSUM: lcd.setCursor(0,0); lcd.print(«Checksum error»); break; case DHTLIB_ERROR_TIMEOUT: lcd.setCursor(0,0); lcd.print(«Time out error»); break; default: lcd.setCursor(0,0); lcd.print(«Unknown error»); break; } delay(1000); }
/** * Enrique Latorres LCD Temp Humid Demo */ #include <Wire.h> #include <LCD.h> #include <LiquidCrystal_I2C.h> #define I2C_ADDR 0x3F // 0x3F is the I2C bus address for my unmodified module LiquidCrystal_I2C lcd(I2C_ADDR, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTstable 0.1.13 #include dht DHT; #define DHT11_PIN 7 //Pin to connect signal pin of DHT11 void setup() { lcd.setBacklightPin(3,POSITIVE); lcd.begin(16, 2); lcd.setBacklight(HIGH); lcd.clear(); lcd.setCursor(0,0); lcd.print("Enrique Latorres"); lcd.setCursor(0,1); lcd.print("LCDTempHumidDemo"); delay(3000); //Make sure you read my banner } void loop() { int chk = DHT.read11(DHT11_PIN); //Read DHT11 through the right pin switch (chk) { case DHTLIB_OK: lcd.clear(); lcd.setCursor(0,0); lcd.print("Temp="); lcd.print(DHT.temperature); lcd.print((char)223); lcd.print("C"); lcd.setCursor(0,1); lcd.print("Hum="); lcd.print(DHT.humidity); lcd.print("%"); break; case DHTLIB_ERROR_CHECKSUM: lcd.setCursor(0,0); lcd.print("Checksum error"); break; case DHTLIB_ERROR_TIMEOUT: lcd.setCursor(0,0); lcd.print("Time out error"); break; default: lcd.setCursor(0,0); lcd.print("Unknown error"); break; } delay(1000); }
Compile, verifique y cargue el programa. Su Arduino debiera estar mostrando dos líneas el el display LCD.
Temp=19.00ºC
Hum=58.00%
Hay algunas funciones para agregar, como Punto de Rocío e Indice de Calor, que pueden ser encontradas en Internet y se pueden agregar a un proyecto con LCD de 4 líneas de estación de tiempo y clima. ;
DHT11-LCD project on
Espero que haya sido de su agrado.