← All Projects

Temperature & Humidity Monitor with DHT11 and LCD

190 viewsFebruary 18, 2026
ArduinoDHT11LCDTemperatureHumidityBeginner

A real-time temperature and humidity monitoring system using the DHT11 sensor and a 16x2 LCD. Displays live readings with min/max tracking. Ideal for room climate monitoring or greenhouse environments.

Components & Supplies

×1Arduino Uno R3
×1DHT11 Temperature & Humidity Sensor
×116x2 LCD Display (HD44780)
×110kΩ Resistor
×110kΩ Potentiometer
×1Breadboard

Circuit Connections

ComponentPinPinComponent
ArduinoD8DATADHT11
Arduino5VVCCDHT11
ArduinoGNDGNDDHT11
ArduinoD12RSLCD
ArduinoD11ENLCD
ArduinoD5D4LCD
ArduinoD4D5LCD
ArduinoD3D6LCD
ArduinoD2D7LCD

Overview

The DHT11 is a basic digital temperature and humidity sensor. It uses a capacitive humidity sensor and a thermistor to measure surrounding air. This project reads the sensor every 2 seconds and displays the current temperature (°C) and humidity (%) on a 16x2 character LCD.

The sketch also tracks minimum and maximum values since power-on, making it useful for overnight climate logging.

Setup Notes

Required library: DHT sensor library by Adafruit. Install via Arduino Library Manager.

Wiring notes:

  • The DHT11 data pin needs a 10kΩ pull-up resistor to VCC.
  • Some breakout boards include the pull-up resistor onboard — check your module.
  • The LCD uses a standard 4-bit parallel connection with a potentiometer for contrast adjustment.
arduinoDHT11 Monitor Sketch
#include <DHT.h>
#include <LiquidCrystal.h>

#define DHTPIN 8
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

float minTemp = 999, maxTemp = -999;
float minHum = 999, maxHum = -999;

void setup() {
  Serial.begin(9600);
  dht.begin();
  lcd.begin(16, 2);
  lcd.print("DHT11 Monitor");
  delay(2000);
}

void loop() {
  float temp = dht.readTemperature();
  float hum = dht.readHumidity();

  if (isnan(temp) || isnan(hum)) {
    lcd.clear();
    lcd.print("Sensor Error!");
    delay(2000);
    return;
  }

  if (temp < minTemp) minTemp = temp;
  if (temp > maxTemp) maxTemp = temp;
  if (hum < minHum) minHum = hum;
  if (hum > maxHum) maxHum = hum;

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("T:");
  lcd.print(temp, 1);
  lcd.print("C ");
  lcd.print(minTemp, 0);
  lcd.print("-");
  lcd.print(maxTemp, 0);

  lcd.setCursor(0, 1);
  lcd.print("H:");
  lcd.print(hum, 1);
  lcd.print("% ");
  lcd.print(minHum, 0);
  lcd.print("-");
  lcd.print(maxHum, 0);

  Serial.print("Temp: ");
  Serial.print(temp);
  Serial.print(" C | Humidity: ");
  Serial.print(hum);
  Serial.println(" %");

  delay(2000);
}