Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Project Documentation

Arduino UNO Based Temperature and Humidity Monitoring with LCD Display

Image of Arduino UNO Based Temperature and Humidity Monitoring with LCD Display

Circuit Documentation

Summary

This circuit is designed to collect temperature and humidity measurements using a DHT11 sensor and display the data on an LCD display. The Arduino UNO serves as the microcontroller to interface with the DHT11 sensor and control the LCD display. A resistor is used to pull up the data line of the DHT11 sensor. The circuit is powered by the Arduino UNO's 5V output, which is distributed to the LCD display and the DHT11 sensor. Ground connections are shared among all components.

Component List

DHT11 Humidity and Temperature Sensor

  • Description: A sensor that measures ambient temperature and humidity.
  • Pins: VDD (Power), DATA (Data Output), NULL (No Connection), GND (Ground).

Arduino UNO

  • Description: A microcontroller board based on the ATmega328P.
  • Pins: Various digital and analog I/O pins, power, and ground.

Resistor

  • Description: A passive two-terminal electrical component that implements electrical resistance as a circuit element.
  • Value: 10,000 Ohms (10kΩ).

LCD Display (16 pin)

  • Description: A 16-pin liquid crystal display that can show characters.
  • Pins: VSS (Ground), VDD (Power), VO (Contrast Adjustment), RS, R/W, E, DB0-DB7 (Data Bus), A (Anode), K (Cathode).

Wiring Details

DHT11 Humidity and Temperature Sensor

  • VDD: Connected to the 5V power supply from the Arduino UNO.
  • DATA: Connected to digital pin D2 on the Arduino UNO through a 10kΩ pull-up resistor.
  • GND: Connected to the ground (GND) on the Arduino UNO.

Arduino UNO

  • 5V: Provides power to the LCD display and the DHT11 sensor.
  • GND: Common ground for the LCD display and the DHT11 sensor.
  • D2: Receives data from the DHT11 sensor.

Resistor (10kΩ)

  • One end: Connected to the DATA pin of the DHT11 sensor.
  • Other end: Connected to the D2 pin on the Arduino UNO.

LCD Display (16 pin)

  • VDD: Connected to the 5V power supply from the Arduino UNO.
  • VSS: Connected to the ground (GND) on the Arduino UNO.

Documented Code

/**
 * This example demonstrates how to collect temperature and humidity measurements
 * from the Adafruit DHT11 sensor. Measurements are printed out to the serial monitor.
 *
 * - Make sure to first install the following libraries through the Arduino Library Manager:
 *   - DHT Sensor Library (by Adafruit)
 *   - Adafruit Unified Sensor (by Adafruit)
 * - When you open the serial monitor to view measurements from the DHT11, make sure
 * that you select 9600 baud so that the serial monitor can receive data from the Arduino.
 *
 * This example was originally written by Adafruit Industries LLC.
 */

#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>

#define DHTPIN 2     // Digital pin connected to the DHT sensor 
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.

// Uncomment the type of sensor in use:
#define DHTTYPE    DHT11     // DHT 11
//#define DHTTYPE    DHT22     // DHT 22 (AM2302)
//#define DHTTYPE    DHT21     // DHT 21 (AM2301)

// See guide for details on sensor wiring and usage:
//   https://learn.adafruit.com/dht/overview

DHT_Unified dht(DHTPIN, DHTTYPE);

uint32_t delayMS;

void setup() {
  Serial.begin(9600);
  // Initialize device.
  dht.begin();
  Serial.println(F("DHTxx Unified Sensor Example"));
  // Print temperature sensor details.
  sensor_t sensor;
  dht.temperature().getSensor(&sensor);
  Serial.println(F("------------------------------------"));
  Serial.println(F("Temperature Sensor"));
  Serial.print  (F("Sensor Type: ")); Serial.println(sensor.name);
  Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);
  Serial.print  (F("Unique ID:   ")); Serial.println(sensor.sensor_id);
  Serial.print  (F("Max Value:   ")); Serial.print(sensor.max_value); Serial.println(F("°C"));
  Serial.print  (F("Min Value:   ")); Serial.print(sensor.min_value); Serial.println(F("°C"));
  Serial.print  (F("Resolution:  ")); Serial.print(sensor.resolution); Serial.println(F("°C"));
  Serial.println(F("------------------------------------"));
  // Print humidity sensor details.
  dht.humidity().getSensor(&sensor);
  Serial.println(F("Humidity Sensor"));
  Serial.print  (F("Sensor Type: ")); Serial.println(sensor.name);
  Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);
  Serial.print  (F("Unique ID:   ")); Serial.println(sensor.sensor_id);
  Serial.print  (F("Max Value:   ")); Serial.print(sensor.max_value); Serial.println(F("%"));
  Serial.print  (F("Min Value:   ")); Serial.print(sensor.min_value); Serial.println(F("%"));
  Serial.print  (F("Resolution:  ")); Serial.print(sensor.resolution); Serial.println(F("%"));
  Serial.println(F("------------------------------------"));
  // Set delay between sensor readings based on sensor details.
  delayMS = sensor.min_delay / 1000;
}

void loop() {
  // Delay between measurements.
  delay(delayMS);
  // Get temperature event and print its value.
  sensors_event_t event;
  dht.temperature().getEvent(&event);
  if (isnan(event.temperature)) {
    Serial.println(F("Error reading temperature!"));
  }
  else {
    Serial.print(F("Temperature: "));
    Serial.print(event.temperature);
    Serial.println(F("°C"));
  }
  // Get humidity event and print its value.
  dht.humidity().getEvent(&event);
  if (isnan(event.relative_humidity)) {
    Serial.println(F("Error reading humidity!"));
  }
  else {
    Serial.print(F("Humidity: "));
    Serial.print(event.relative_humidity);
    Serial.println(F("%"));
  }
}

This code is designed to be uploaded to the Arduino UNO microcontroller. It initializes the DHT11 sensor and reads temperature and humidity data, which are then printed to the serial monitor. The code requires the Adafruit DHT sensor library and the Adafruit Unified Sensor library to be installed. The DHT sensor is connected to digital pin 2 on the Arduino UNO.