Humidity and Temperature Sensor DHT11 Arduino


DHT11 is a quite simple to use component. It has low precision and is quite slow to read, but is good enough for most ambient control applications. It consists of a resistive humidity sensor and a Negative Temperature Coefficient (NTC) thermistor, both controlled through a 8 bit micro-controller chip that translates measured values to numbers through a serial communication line. The micro-controller also has calibration parameters programmed. It has four pins.

Pin 1 is the VCC power supply ranging from 3.5 to 5.5V DC. Pin 2 is the DATA serial pin, a single line serial bus. Pin 3 is a no connection pin (NC). And pin 4 is GND ground, the negative power pin. The DATA pin should have a pull-up resistor of about 5.1K as suggested by the manufacturer. But any value from 4K7 to 10K will work fine.

Humidity Range goes from 20 to 90% Relative Humidity (RH). Humidity Accuracy is +/-5% RH. Temperature Measurement Range goes from 0 to 50 °C.  Temperature Accuracy is +/-2% °C. Operating Voltage 3.5V to 5.5V (notice 3.3v is out of range)

See:
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

It can be bought alone or included in a brick or shield. In this case a brick is used and includes the 10K pull-up resistor. The Brick has only three pins. Pin 1 is SIGNAL/DATA. Pin 2 is VCC, and Pin 3 is GND.

There are other sensors with higher accuracy DHT21 and DHT22. The values are pulsed over a single digital line through a handshake (handshake for DHT21/22 is identical, data format differs).

We will use the IIC-LCD example to show Humidity and Temperature over an LCD Display. And will use Rob Tillaart DHTstable libraryhttps://github.com/RobTillaart/Arduino/tree/master/libraries/DHTstable 0.1.13. Download and unzip in your Arduino IDE library directory.

In this case we use an Arduino UNO Rev.3

LCD-DHT11 Project layout

Now create a new sketch with the following code:

/**
* Enrique Latorres LCD Temp Humid Demo
*/
#include 
#include 
#include 
#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, check and load. Your Arduino should be showing two lines on the LCD Display:
Temp=19.00ºC
Hum=58.00%

There are some functions to add Dew Point and Heat Index calculations that can be found on Internet and could be shown with a four line LCD Display for your weather station project.

DHT11-LCD project on

Regards

Related posts