Fork me on GitHub

Project Notes

#817 DHT21 Sensor Library Test

Logging temperature and humidity with an Aosong AM2301 DHT21-compatible sensor. Uses the Adafruit Arduino DHT Sensor Library directly.

Build

Notes

This is a test of the DHT21 with the Adafruit DHT Sensor Library directly (without the unified sensor framework).

About the Aosong AM2301 DHT21 sensor

The AM2301 is a DHT21-compatible temperature and humidity sensor. Key specifications:

  • temperature: -40-80°C ±0.3°C, 0.1°C resolution
  • relative humidity: 0-99% ±3%, 0.1% resolution
  • supply voltage range 3.3V - 5.2V, recommended supply voltage is 5V

module

Circuit Design

Designed with Fritzing: see Tester.fzz.

bb

schematic

bb_build

Demonstration Script

The DHT11 uses a single-wire two-way communications protocol.

The Tester.ino sketch simply outputs current readings to the console.

Requires the following Arduino libraries:

It is based on the DHTtester.ino example.

#include "DHT.h"

const int DHT_PIN = 2;
const int DHT_TYPE = AM2301;
const int DELAY = 2000;

DHT dht(DHT_PIN, DHT_TYPE);


/*
 * Command: one-time setup
 */
void setup() {
  Serial.begin(115200);
  Serial.println("AM2301 test!");

  dht.begin();
}


/*
 * Command: main loop
 */
void loop() {
  delay(DELAY);

  float humidity = dht.readHumidity();
  float temp_c = dht.readTemperature();
  float temp_f = dht.readTemperature(true);

  if (isnan(humidity) || isnan(temp_c) || isnan(temp_f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  float heat_index_c = dht.computeHeatIndex(temp_c, humidity, false);
  float heat_index_f = dht.computeHeatIndex(temp_f, humidity);

  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.print("%\t");
  Serial.print("Temperature: ");
  Serial.print(temp_c);
  Serial.print("˚C ");
  Serial.print(temp_f);
  Serial.print("˚F\t");
  Serial.print("Heat index: ");
  Serial.print(heat_index_c);
  Serial.print("˚C ");
  Serial.print(heat_index_f);
  Serial.println("˚F");
}

Test Results

Sample console output:

console-output

NOTE: I seem to have an issue with the humidity sensor on my device. It is consistently returning a 5.0% reading no matter what the actual humidity is. My current conclusion is that I have a faulty device. I’ll re-run this test when I can get my hands on a replacement sensor.

Credits and References

About LEAP#817 SensorsArduinoDHT21AM2301

This page is a web-friendly rendering of my project notes shared in the LEAP GitHub repository.

Project Source on GitHub Return to the LEAP Catalog
About LEAP

LEAP is my personal collection of electronics projects - usually involving an Arduino or other microprocessor in one way or another. Some are full-blown projects, while many are trivial breadboard experiments, intended to learn and explore something interesting.

Projects are often inspired by things found wild on the net, or ideas from the many great electronics podcasts and YouTube channels. Feel free to borrow liberally, and if you spot any issues do let me know or send a pull-request.

NOTE: For a while I included various scale modelling projects here too, but I've now split them off into a new repository: check out LittleModelArt if you are looking for these projects.

Project Gallery view the projects as an image gallery Notebook reference materials and other notes Follow the Blog follow projects and notes as they are published in your favourite feed reader