zurück zur Übersicht...
18.02.2018

Sensor DHT22

DHT22 Sensor
Abb.: DHT22 Sensor mit nummerierten Pins

Technische Daten

Pin-Belegung

Pin Funktion
1 Vdd (3,3V - 5,5V)
2 SDA (serielle Daten)
3 -nicht belegt-
4 GND (Ground/Masse)

Verwendete Bauteile

Aufbau

Laut dem Datenblatt für den DHT22 muss am Daten-Pin ein Pullup-Widerstand von 5,1kΩ verwendet werden. Hier wird ein 4,7kΩ-Widerstand benutzt, da dieser gebräuchlicher und evtl. leider zur Hand ist.
Unter Umständen kann dieser externe Pullup-Widerstand auch weggelassen werden, wenn die unten verwendete Library benutzt wird. Diese verwendet nämlich den internen Pullup des Arduinos und liefert dieselben Ergebnisse auch ohne externen Pullup.

Aufbau der Schaltung
Abb.: Aufbau der Schaltung

Sketch I.

Für diesen Sketch werden zwei externe Libraries benötigt: Adafruit DHT-Sensor und Adafruit Unified Sensor.

#include "DHT.h"

#define DHTTYPE DHT22
#define PIN_DHT22 2

DHT dht(PIN_DHT22, DHTTYPE);
float humidity, temperature;

void setup()
{
    Serial.begin(9600);
    dht.begin();
}

void loop()
{
    humidity = dht.readHumidity();
    temperature = dht.readTemperature();

    Serial.print("Humidity: ");
    Serial.print(humidity);
    Serial.print("%, Temperature: ");
    Serial.print(temperature);
    Serial.println("°C");

    delay(1000);
}
Ausgabe der ermittelten Werte auf der seriellen Konsole
Abb.: Ausgabe der ermittelten Werte auf der seriellen Konsole

Sketch II.

Der zweite Sketch macht prinzipiell dasselbe, nur mit dem Unterschied, dass die ermittelten Werte mit Leerzeichen getrennt an die serielle Schnittstelle geschickt werden. Dadurch kann man den seriellen Plotter der Arduino-IDE als grafische Ausgabe der Messwerte verwenden.

#include "DHT.h"

#define DHTTYPE DHT22
#define PIN_DHT22 2

DHT dht(PIN_DHT22, DHTTYPE);
float humidity, temperature;

void setup()
{
    Serial.begin(9600);
    dht.begin();
}

void loop()
{
    humidity = dht.readHumidity();
    temperature = dht.readTemperature();

    Serial.print(humidity);
    Serial.print(" ");
    Serial.println(temperature);

    delay(1000);
}
Ausgabe der ermittelten Werte mit dem seriellen Plotter
Abb.: Ausgabe der ermittelten Werte mit dem seriellen Plotter (blau=Luftfeuchtigkeit; rot=Temperatur