Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino UNO Based DHT11 Temperature and Humidity Monitoring System

View and Edit Project In Cirkit DesignerImage of Arduino UNO Based DHT11 Temperature and Humidity Monitoring System

Circuit Documentation

Summary

This circuit is designed to collect temperature and humidity measurements using a DHT11 Humidity and Temperature Sensor interfaced with an Arduino UNO microcontroller. The sensor data is processed by the Arduino and output to the serial monitor. A resistor is included in the circuit to provide the necessary pull-up for the data line of the DHT11 sensor.

Component List

DHT11 Humidity and Temperature Sensor

Arduino UNO

Resistor

Wiring Details

DHT11 Humidity and Temperature Sensor

Arduino UNO

Resistor (10kΩ)

Documented Code

Arduino UNO Code for DHT11 Sensor

/**
 * 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 

// Uncomment the type of sensor in use:
#define DHTTYPE    DHT11     // DHT 11

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("%"));
  }
}

Additional Arduino UNO (Unused in this circuit)

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

This additional Arduino UNO does not have any specific code associated with the current circuit configuration and is not used in the temperature and humidity measurement application.