#117Mittel

ESP32 DHT22 Temperatur und Luftfeuchtigkeit (mit LCD-Display)

Bei diesem Projekt werden die Umgebungstemperatur und die Luftfeuchtigkeit mit einem DHT22-Sensor gemessen und in Echtzeit auf einem 16x2 I2C-LCD angezeigt. Mithilfe der Adafruit-DHT-Bibliothek werden die Daten über das One-Wire-Protokoll vom Sensor ausgelesen. Dieses Projekt bildet die Grundlage für IoT-Wetterstationen, Smart-Home-Automatisierung oder Umgebungsüberwachungssysteme in Gewächshäusern. Die Kommunikation mit dem DHT22 erfolgt über den GPIO-4-Pin des ESP32.

4.8(38)
54 abgeschlossen
ESP32 DHT22 Temperatur und Luftfeuchtigkeit (mit LCD-Display)
Wenn du wissen willst, wie warm und wie feucht es in deinem Zimmer ist, ist dieses kleine Messgerät genau richtig. Der Sensor DHT22 misst die Luft, und alle zwei Sekunden schreibt der ESP32 Temperatur und Luftfeuchtigkeit mit einer Nachkommastelle auf das LCD-Display. Kann der Sensor nicht gelesen werden, zeigt das Display auch das an; die Grundlage für Projekte wie eine Pflanzenecke oder eine Wetterstation für zu Hause.

Video

Schaltplan

ESP32 DHT22 Temperatur und Luftfeuchtigkeit (mit LCD-Display) - Circuit

Quellcode

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   ESP32 DHT22 Temperatur und Luftfeuchtigkeit (mit LCD-Display)
4// ─────────────────────────────────────────
5// Liest alle 2 s Temperatur und Luftfeuchtigkeit vom DHT22 und zeigt sie
6// auf einem 16x2-I2C-LCD an. Schlägt ein Lesen fehl, zeigt der Bildschirm
7// eine Warnung zu Verdrahtung und Pull-up.
8//
9// Pins:
10//   GPIO 4  -> DHT22 DATA
11//   10k Pull-up zwischen DATA und VCC
12//   GPIO 21 -> LCD SDA, GPIO 22 -> LCD SCL
13//   DHT22 VCC -> 3V3, LCD VCC -> 5V (VIN)
14//   Alle GNDs gemeinsam
15
16#include <Wire.h>
17#include <LiquidCrystal_I2C.h>
18#include <DHT.h>
19
20// Pin-Definitionen
21const int DHT_PIN = 4;
22#define DHT_TYPE DHT22
23
24DHT dht(DHT_PIN, DHT_TYPE);
25
26// LCD-Adresse 0x27 oder 0x3F
27LiquidCrystal_I2C lcd(0x27, 16, 2);
28
29// DHT22 braucht mindestens 2 s zwischen zwei Lesevorgängen
30const unsigned long READ_INTERVAL = 2000;
31unsigned long lastRead = 0;
32
33void setup() {
34  // Standard-I2C-Pins des DevKit V1
35  Wire.begin(21, 22);
36  lcd.init();
37  lcd.backlight();
38
39  // Splashscreen 3 s
40  lcd.setCursor(3, 0);
41  lcd.print("BlueGrays");
42  lcd.setCursor(3, 1);
43  lcd.print("DHT22 v1.0");
44  delay(3000);
45  lcd.clear();
46
47  dht.begin();
48}
49
50void loop() {
51  // Alle 2 s lesen, ohne delay()
52  if (millis() - lastRead >= READ_INTERVAL) {
53    lastRead = millis();
54
55    float h = dht.readHumidity();
56    float t = dht.readTemperature();
57
58    lcd.clear();
59
60    // NaN = Verdrahtungs-/Pull-up-Problem
61    if (isnan(h) || isnan(t)) {
62      lcd.setCursor(0, 0);
63      lcd.print("Sensor okunamadi");
64      lcd.setCursor(0, 1);
65      lcd.print("Kablo+10k pullup");
66    } else {
67      // Temperatur
68      lcd.setCursor(0, 0);
69      lcd.print("Sicaklik:");
70      lcd.print(t, 1);
71      lcd.print("C");
72      // Luftfeuchtigkeit, der DHT22 liefert Nachkommastellen
73      lcd.setCursor(0, 1);
74      lcd.print("Nem     :");
75      lcd.print(h, 1);
76      lcd.print("%");
77    }
78  }
79}
80

FAQ

Was ist der Unterschied zwischen DHT22 und DHT11?▾

Der DHT22 ist präziser (±0,5 °C, ±2–5 % Feuchte), misst in einem größeren Bereich (−40 bis 80 °C) und bietet eine Auflösung von 0,1. Der DHT11 ist günstiger, jedoch auf eine Genauigkeit von ±2 °C und eine ganzzahlige Auflösung beschränkt.

Ist ein 10-kΩ-Pull-up-Widerstand erforderlich?▾

Beim unbestückten DHT22-Sensor ist ein 10-kΩ-Pull-up-Widerstand für die Datenleitung erforderlich. Bei den auf der Platine montierten 3-poligen Modulen ist dieser Widerstand in der Regel bereits vorhanden.

LCD 5 V, ESP32 3,3 V; funktionieren die zusammen?▾

I2C-LCD-Module liefern bei 5 V ein schärferes Bild. Wenn die Pull-up-Widerstände an den SDA/SCL-Leitungen des mit 5 V betriebenen Moduls an 5 V angeschlossen sind, ist die Verwendung eines Pegelwandlers die sicherste Vorgehensweise; auch wenn viele Nutzer den Anschluss direkt vornehmen, wird dadurch die Belastbarkeit des ESP32 bis an seine Grenzen beansprucht.

Kann ich die Daten ins Internet senden?▾

Ja, du kannst die Messwerte über das WLAN des ESP32 an ThingSpeak, Blynk oder deinen eigenen Server senden und die Grafiken auf deinem Smartphone verfolgen.

ESP32 DHT22 Temperatur und Luftfeuchtigkeit (mit LCD-Display) | BlueGrays