In this project we will learn to measure Humidity and temperature using DHT22 and Arduino.
There are 2 version of the sensor DHT11 and DHT22.
DHT22 sensor is more expensive and obviously has better performance and accuracy. Its temperature measure range is -40 to 80 degree Celsius with +-0.5 degree accuracy. Also the DHT22 sensor has better humidity measuring range, from 0 to 100% with 2-5% accuracy. Operating voltage is 3v-5v.
Circuit and Schematics
Download the DHT library for Arduino from location.
Https://GitHub.com/adafruit/DHT-sensor-library
- Connect Pin 1 of DHT22 to Arduino 5v
- Connect Pin 2 of DHT22 to Data pin of Arduino ( eg: Pin 2 or Pin3)
- Connect Pin 3 of DHT22 to Ground pin of Arduino
Code v1 – without LCD
#include <DHT.h> #define DHTPIN 2 //Defines the pin number to which the sensor is connected. #define DHTTYPE DHT22
DHT dht(DHTPIN,DHTTYPE); //creates a DHT object
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
float t = dht.readTemperature(); // Gets the values of the temperature
float h = dht.readHumidity(); // Gets the values of the humidity
if(isnan(t) || isnan(h))
{
Serial.println(“Failed to read from DHT sensor!”);
return;
}
// Printing the results on the serial monitor
Serial.print(“Temperature = “);
Serial.print(t);
Serial.print(” *C “);
Serial.print(” Humidity = “);
Serial.print(h);
Serial.println(” % “);
delay(2000); // Delays 2 secods, as the DHT22 sampling rate is 0.5Hz
}
Code v2 – With LCD display
Add LCD to the above code. Use my other post on how to connect LCD to Arduino for more details.
#include <DHT.h> #include <LiquidCrystal.h> // includes the LiquidCrystal Library #define DHTPIN 3 //Defines the pin number to which the sensor is connected. #define DHTTYPE DHT22 LiquidCrystal lcd(1, 2, 5, 6, 7,8); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7) DHT dht(DHTPIN,DHTTYPE); //creates a DHT object
void setup() {
// put your setup code here, to run once:
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
lcd.print(“Digitalab.org”);
}
void loop() {
// put your main code here, to run repeatedly:
float t = dht.readTemperature(); // Gets the values of the temperature
float h = dht.readHumidity(); // Gets the values of the humidity
if(isnan(t) || isnan(h))
{
Serial.println(“Failed to read from DHT sensor!”);
return;
}
// Printing the results on the serial monitor
lcd.setCursor(0,0); // Sets the location at which subsequent text written to the LCD will be displayed
lcd.print(“Temp.: “); // Prints string “Temp.” on the LCD
lcd.print(t); // Prints the temperature value from the sensor
lcd.print(” C”);
lcd.setCursor(0,1);
lcd.print(“Humi.: “);
lcd.print(h);
lcd.print(” %”);
delay(2000); // Delays 2 secods, as the DHT22 sampling rate is 0.5Hz
}
Completed Versions