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:
Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:
- Preis aufsteigend
- Preis absteigend
- Reduzierte zuerst
¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.
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:
- Einen ESP8266 D1 Mini oder ein baugleiches ESP8266 Board
- Einen DHT22 in einer beliebigen Bauform
- Optional: Jumper Kabel
- Optional: Breadboard
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".
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.
Für diejenigen, die eine direkte Verdrahtung des DHT22 am ESP8266 D1 Mini bevorzugen, gibt es hier einen Schaltplan zur Verdrahtung:
Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:
- Preis aufsteigend
- Preis absteigend
- Reduzierte zuerst
¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.
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 alsfloat
.humidity
enthält die aktuelle Luftfeuchtigkeit alsfloat
.heatindex
enthält die aktuell gefühlte Temperatur alsfloat
.
Die Ausgabe im seriellen Monitor sieht wie folgt aus:
##############################
Temperatur: 26.10 °C
Feuchtigkeit: 32.10 %
Gefühlte Temperatur: 25.60 °C
Wusstest du, dass es verschiedene Formeln gibt, um den Heatindex zu berechnen?
Hitzeindex - Wikipedia.