Der DHT22 am ESP8266 - Wie man die Temperatur und Luftfeuchtigkeit misst

von cooper.bin
veröffentlicht am 12.03.2024 aktualisiert am 12.03.2024

Die Auswahl an Temperatursensoren für Arduino, ESP8266 und Raspberry Pi ist groß. Neben dem DS18B20 oder dem BME280 kann man auch mit dem DHT22 eine Temperaturmessung durchführen. Aber das ist noch nicht alles:

Neben der Temperatur kann man mit dem DHT22 auch noch die Luftfeuchtigkeit messen. Um genau diese Kombination geht es in diesem Tutorial: Wir werden einen ESP8266 D1 Mini zusammen mit einem DHT22 betreiben, um die Temperatur sowie die Luftfeuchtigkeit zu messen.

Zum Kapitel springen Hardware

Um dieses Tutorial nachzubauen, werden folgende Komponenten benötigt:

Solltest du nicht wissen, wie man einen ESP8266 D1 Mini programmiert, kannst du dir gerne diese Anleitung anschauen. Darin wird der Start mit dem ESP8266 erklärt und beinhaltet alle notwendigen Informationen die du zum Programmieren eines ESP8266 Boards brauchst.

Zum Kapitel springen Bibliotheken installieren

Bibliotheken sind Sammlungen von Code, die uns die Arbeit erleichtern, indem sie komplexe Funktionen und Routinen zur Verfügung stellen.

Anstatt jede Fubktionktion von Grund auf neu zu schreiben, können wir auf diese vorgefertigten Code-Schnipsel zurückgreifen, um mit Hardware-Komponenten wie dem DHT22 Sensor zu kommunizieren. Das spart Zeit und macht den Entwicklungsprozess einfacher.

Für unser Projekt benötigen wir die Adafruit DHT22 Sensor Library, welche die Kommunikation mit dem DHT22 über eine einfache Schnittstelle ermöglicht. So können wir Temperatur und Luftfeuchtigkeit mit wenigen Codezeilen auslesen. Folge diesen Schritten, um die Bibliothek zu installieren:

Arduino IDE
└───Werkzeuge
    └───Bibliotheken verwalten...

Die passende Bibliothek findet man über den Suchbegriff "DHT22 Sensor Library".

dht22-sensor-library-arduino-ide ><

Zum Kapitel springen Verdrahtung

Eine der benutzerfreundlichsten Methoden einen DHT22 mit dem ESP8266 D1 Mini zu verbinden, ist die Verwendung eines speziellen Shields.

Ein Shield ist eine Erweiterungsplatine, die direkt auf den D1 Mini gesteckt werden kann, ohne dass komplexe Verdrahtungen notwendig sind. Dies macht das Shield ideal für Anfänger oder Projekte, bei denen eine schnelle und einfache Lösung bevorzugt wird.

Dieses DHT22 Shield ist speziell dafür konzipiert, nahtlos mit dem D1 Mini zu arbeiten, und erfordert keine weiteren Verkabelungen – eine echte Plug-and-Play-Lösung.

DHT22 Shield für den ESP8266 D1 Mini ><

Für diejenigen, die eine direkte Verdrahtung des DHT22 am ESP8266 D1 Mini bevorzugen, gibt es hier einen Schaltplan zur Verdrahtung:

ESP8266 D1 Mini DHT22
3.3V / 5V VCC
GND GND
D4 DATA
- NC

Zum Kapitel springen Programmcode

Nach allen Vorbereitungen kann endlich der passende Programmcode ausgeführt werden. Der nachfolgende Code dient als Ausgangslage für eigene Projekte mit dem DHT22.

/*
    DHT22 Basic Code
    Temperatur und Luftfeuchtigkeit auslesen mit einem DHT22 Shield
    Created by cooper.bin, 2020
    makesmart.net
*/

#include "DHT.h"
#define sensor DHT22

int dataPin = 2; // PIN D4 = GPIO 2
               
// DHT22 initialisieren
DHT dht(dataPin, sensor);                

// Temperatur
float temperature;
// Luftfeuchtigkeit
float humidity;
//Gefühlte Temperatur
float heatindex;
 
void setup() {
  Serial.begin(115200);
  delay(100);
  
  pinMode(dataPin, INPUT);
  dht.begin();              
}



void loop() {
  
  temperature = dht.readTemperature(); // Die Temperatur des Sensors
  humidity = dht.readHumidity(); // Die Luftfeuchtigkeit des Sensors
  
  // Gefühlte Temperatur wird errechnet aus temperature und humidity
  heatindex = dht.computeHeatIndex(temperature, humidity, false);

  Serial.println("##############################");
  Serial.println("Temperatur: " + String(temperature) + " °C");
  Serial.println("Feuchtigkeit: " + String(humidity) + " %");
  Serial.println("Gefühlte Temperatur: " + String(heatindex) + " °C");

  
  delay(3500);
  
}

Es sind drei Variablen verfügbar:

  • temperature enthält die aktuelle Temperatur als float.
  • humidity enthält die aktuelle Luftfeuchtigkeit als float.
  • heatindex enthält die aktuell gefühlte Temperatur als float.

Die Ausgabe im seriellen Monitor sieht wie folgt aus:

##############################
Temperatur: 26.10 °C
Feuchtigkeit: 32.10 %
Gefühlte Temperatur: 25.60 °C

Die Themen arduino-ide und smarthome gibt es auch auf dem makesmart Discord-Server! Trete bei, um dich auszutauschen.

mehr erfahren

Teile diesen Beitrag



Diese Artikel könnten dich auch interessieren

ESP8266 D1 Mini programmieren - Der Start mit der Arduino IDE

Erfahre, wie du den ESP8266 D1 Mini mit der Arduino IDE programmierst. Dank den kostenlosen Entwicklungswerkzeugen und der microUSB-Buchse ist das für jeden ein Kinderspiel.

cooper.bin am 10.02.2024

Der DS18B20 Temperatursensor am ESP8266 D1 Mini - Einfache Temperaturmessung

Lerne, wie du mit der Arduino IDE, dem ESP8266 und einem DS18B20 Temperatursensor einfache und schnelle Temperaturmessungen durchführen kannst.

cooper.bin am 05.03.2024

HC-SR04 und JSN-SR04T - Entfernungen messen mit Ultraschallsensoren am ESP8266

Lerne in diesem Tutorial, wie die Ultraschallsensoren HC-SR04 und JSN-SR04T mit ESP8266 D1 Mini für Distanzmessungen eingesetzt werden, die Grundlagen, Anwendungen und mehr.

cooper.bin am 09.03.2024

ESP8266 - Ein einfacher Webserver mit mDNS

Während Webserver wie Apache2 oder NGNIX auf Rechnern laufen, kann man auch auf einem ESP8266 einen Webserver verwenden. In diesem Tutorial werden wir ein Grundgerüst implementieren.

cooper.bin am 13.02.2024

ESP8266 Webserver: GET-Variablen auslesen

GET-Parameter sind Variablen, die über die URL übergeben werden. Diese Variablen können auf einem ESP8266 ausgelesen werden, um bestimmte Aktionen in der Software auszulösen.

cooper.bin am 17.02.2024