Arduino UNO Q - DHT22 Temperatur- und Feuchtigkeitssensor

Der DHT22 bietet genauere Temperatur- und Feuchtigkeitsmessungen als der DHT11 — mit einem größeren Messbereich und besserer Genauigkeit. Dieses Tutorial zeigt Ihnen, wie Sie ihn mit Arduino UNO Q für die vollständige Umgebungsüberwachung mit Telegram-Warnungen verwenden.

In diesem Tutorial werden Sie lernen:

Arduino UNO Q DHT22 Temperatur- und Feuchtigkeitssensor

Hardware erforderlich

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×DHT22 Temperatur-Feuchtigkeitssensor-Modul
1×10 kΩ Resistor
1×Breadboard
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Sensors/Servo Expansion Shield for Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über den DHT22-Sensor

Der DHT22 (auch als AM2302 bekannt) ist eine präzisere Alternative zum DHT11. Beide verwenden die gleiche Bibliothek und fast identischen Code — der Hauptunterschied liegt in der Typkonstante im Konstruktor.

DHT22
Betriebsspannung 3,3V bis 6V
Temperaturbereich -40°C bis 80°C
Temperaturgenauigkeit ±0,5°C
Feuchtigkeitsbereich 0% bis 100%
Feuchtigkeitsgenauigkeit ±2%
Messung Häufigkeit 0,5Hz (einmal alle 2 Sekunden)

Pinout

DHT22 Temperatur- und Feuchtigkeitssensor Pinout

DHT22-Sensor (4-polig):

  • GND: Mit GND (0V) verbinden
  • VCC: Mit 3,3V oder 5V verbinden
  • DATA: Kommunikationspin — mit einem digitalen Pin auf dem MCU verbinden
  • NC: Nicht verbunden

DHT22 Modul (3-polig):

  • GND: Mit GND (0V) verbinden
  • VCC: Mit 3,3V oder 5V verbinden
  • DATA: Kommunikationspin (auch als OUT oder S auf einigen Modulen beschriftet)

Die meisten DHT22-Module enthalten einen integrierten Pull-up-Widerstand — kein externer Widerstand erforderlich.

Verdrahtungsdiagramm

Arduino UNO Q - DHT22-Sensor-Verdrahtung

Erfordert einen 10kΩ Pull-up-Widerstand zwischen DATA und VCC.

Arduino UNO Q DHT22-Sensor-Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino UNO Q - DHT22-Modul-Verdrahtung

Kein externer Widerstand erforderlich — das Modul enthält einen.

Arduino UNO Q DHT22-Modul-Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

DHT22-Pin Arduino UNO Q MCU
GND GND
VCC 3,3V oder 5V
DATA D2

So programmieren Sie den DHT22

  • Bibliothek einbinden:
#include <DHT.h>
  • Definieren Sie den Pin und erstellen Sie ein Sensor-Objekt:
#define DHT22_PIN 2 DHT dht22(DHT22_PIN, DHT22);
  • Initialisieren Sie den Sensor:
dht22.begin();
  • Lesen Sie Luftfeuchtigkeit und Temperatur:
float humidity = dht22.readHumidity(); float tempC = dht22.readTemperature(); float tempF = dht22.readTemperature(true);
  • Überprüfen Sie immer auf fehlgeschlagene Lesevorgänge:
if (isnan(humidity) || isnan(tempC) || isnan(tempF)) { Serial.println("Failed to read from DHT22 sensor!"); }

Arduino UNO Q Code

Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:

  • Der STM32 MCU liest den DHT22-Sensor direkt — die gesamte Sensorkommunikation läuft auf dem MCU
  • Die Qualcomm MPU führt Debian Linux aus und verwaltet Wi-Fi, Python und Cloud-Konnektivität
  • In diesem Abschnitt wird nur der MCU programmiert — die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren über Bridge zusammenarbeiten.

Der MCU liest Temperatur und Luftfeuchtigkeit alle 3 Sekunden und gibt sie auf dem Serial Monitor aus.

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-dht22 */ #include <DHT.h> #define DHT22_PIN 2 // Arduino UNO Q MCU pin connected to DHT22 DATA pin DHT dht22(DHT22_PIN, DHT22); void setup() { Serial.begin(115200); delay(1500); dht22.begin(); Serial.println("Arduino UNO Q DHT22 ready"); } void loop() { delay(3000); // DHT22 requires at least 2 seconds between readings float humidity = dht22.readHumidity(); float tempC = dht22.readTemperature(); float tempF = dht22.readTemperature(true); if (isnan(humidity) || isnan(tempC) || isnan(tempF)) { Serial.println("Failed to read from DHT22 sensor!"); } else { Serial.print("Humidity: "); Serial.print(humidity); Serial.print("% | Temperature: "); Serial.print(tempC); Serial.print("°C ~ "); Serial.print(tempF); Serial.println("°F"); } }

Schnelle Schritte

Zum ersten Mal mit Arduino UNO Q? Folgen Sie dem Tutorial Erste Schritte mit Arduino UNO Q, bevor Sie fortfahren.

  • Verbinden: Verdrahten Sie den DHT22-Sensor oder das Modul wie im Verdrahtungsdiagramm gezeigt mit Arduino UNO Q MCU.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt.
  • Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.
Neue App in Arduino App Lab auf Arduino UNO Q erstellen
  • Geben Sie der App einen Namen, zum Beispiel: Dht22
  • Klicken Sie auf Erstellen, um zu bestätigen.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Sketch einfügen: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein. Behalten Sie andere Dateien als Standard.
  • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
Add sketch library in Arduino App Lab on Arduino UNO Q
  • Search for DHT sensor library created by Adafruit and click the Install button.
My Apps / DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
DHT sensor library Adafruit

Arduino library for DHT11, DHT22, etc Temp & Humidity Sensors

1.4.6
Install
More Info
  • Hochladen: Klicken Sie auf die Run-Schaltfläche in Arduino App Lab.
Klicken Sie auf die Run-Schaltfläche in Arduino App Lab auf Arduino UNO Q
  • Atmen Sie auf den Sensor oder halten Sie ihn — beobachten Sie, wie sich Luftfeuchtigkeits- und Temperaturmessungen alle 3 Sekunden aktualisieren.

App Lab-Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q DHT22 ready [2026-04-29 09:00:04] Humidity: 55.2% | Temperature: 26.10°C ~ 79.00°F [2026-04-29 09:00:07] Humidity: 55.8% | Temperature: 26.20°C ~ 79.16°F [2026-04-29 09:00:10] Humidity: 57.3% | Temperature: 26.50°C ~ 79.70°F [2026-04-29 09:00:13] Humidity: 61.9% | Temperature: 27.10°C ~ 80.78°F

Bridge: Linux + MCU

Dieser Abschnitt zeigt, wie Sie beide Prozessoren des Arduino UNO Q programmieren, damit die Linux-Seite Temperatur- und Feuchtigkeitsdaten über Bridge lesen kann:

  • Der DHT22-Sensor ist mit dem MCU (STM32) verbunden — der MCU liest alle 3 Sekunden Daten und speichert die neuesten Werte zwischen
  • Die MPU kann nicht direkt auf den DHT22 zugreifen — sie muss Bridge-Funktionen aufrufen, um Lesevorgänge auszuführen
  • Die MPU hat Wi-Fi — auf vollständiger Debian Linux-Ausführung kann sie Daten protokollieren, auf Dashboards veröffentlichen oder Warnungen über das Internet senden
  • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT für den Router — öffnen Sie sie niemals in Benutzercode

Kurz gesagt: MCU liest DHT22 alle 3 Sekunden und speichert das Ergebnis zwischen → MPU fragt Bridge ab, um Lesevorgänge auszuführen → MPU veröffentlicht oder warnt über Wi-Fi.

Hinweis: In der Bridge-Skizze liest die loop()-Funktion den DHT22 alle 3 Sekunden, um die zwischengespeicherten Werte aktuell zu halten. Alle Bridge-Callbacks sind schreibgeschützt und geben zwischengespeicherte Daten zurück, ohne zu blockieren.

MCU Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-dht22 */ #include <DHT.h>#include "Arduino_RouterBridge.h" #define DHT22_PIN 2 DHT dht22(DHT22_PIN, DHT22); float last_humidity = 0.0; float last_temp_c = 0.0; float last_temp_f = 0.0; unsigned long last_read_ms = 0; String get_humidity(String arg) { return String(last_humidity, 1); } String get_temp_c(String arg) { return String(last_temp_c, 2); } String get_temp_f(String arg) { return String(last_temp_f, 2); } String get_status(String arg) { return "Temp: " + String(last_temp_c, 2) + "°C / " + String(last_temp_f, 2) + "°F Humidity: " + String(last_humidity, 1) + "%"; } void setup() { Bridge.begin(); Monitor.begin(); dht22.begin(); delay(2000); // allow sensor to stabilize float h = dht22.readHumidity(); float c = dht22.readTemperature(); float f = dht22.readTemperature(true); if (!isnan(h) && !isnan(c) && !isnan(f)) { last_humidity = h; last_temp_c = c; last_temp_f = f; } Bridge.provide("get_humidity", get_humidity); Bridge.provide("get_temp_c", get_temp_c); Bridge.provide("get_temp_f", get_temp_f); Bridge.provide("get_status", get_status); Monitor.println("Arduino UNO Q DHT22 Bridge ready"); } void loop() { unsigned long now = millis(); if (now - last_read_ms >= 3000) { last_read_ms = now; float h = dht22.readHumidity(); float c = dht22.readTemperature(); float f = dht22.readTemperature(true); if (isnan(h) || isnan(c) || isnan(f)) { Monitor.println("Failed to read from DHT22 sensor!"); } else { last_humidity = h; last_temp_c = c; last_temp_f = f; Monitor.println("Humidity: " + String(h, 1) + "% Temp: " + String(c, 2) + "°C / " + String(f, 2) + "°F"); } } }

Python Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-dht22 */ from arduino.app_utils import * import time def loop(): status = Bridge.call("get_status") print(status) time.sleep(3) App.run(user_loop=loop)

Schnelle Schritte

  • Verbinden: Verdrahten Sie den DHT22-Sensor wie im Verdrahtungsdiagramm gezeigt mit Arduino UNO Q.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis die Platine erkannt wird.
  • Erstellen Sie eine neue App: Klicken Sie auf Neue App erstellen, nennen Sie sie Dht22Bridge, und klicken Sie auf Erstellen.
  • Paste MCU sketch: Kopieren Sie den MCU Bridge Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Paste Python code: Kopieren Sie den Python Bridge Code oben und fügen Sie ihn in die Python-Datei der App ein.
  • Hochladen: Klicken Sie auf die Run-Schaltfläche in Arduino App Lab.
Klicken Sie auf die Run-Schaltfläche in Arduino App Lab auf Arduino UNO Q
  • Beobachten Sie, wie Temperatur- und Feuchtigkeitsmessungen alle 3 Sekunden in der Python-Konsole angezeigt werden.

App Lab-Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q DHT22 Bridge ready [2026-04-29 09:00:04] Humidity: 55.2% Temp: 26.10°C / 79.00°F [2026-04-29 09:00:07] Humidity: 55.8% Temp: 26.20°C / 79.16°F [2026-04-29 09:00:10] Humidity: 57.3% Temp: 26.50°C / 79.70°F
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:04] Temp: 26.10°C / 79.00°F Humidity: 55.2% [2026-04-29 09:00:07] Temp: 26.20°C / 79.16°F Humidity: 55.8% [2026-04-29 09:00:10] Temp: 26.50°C / 79.70°F Humidity: 57.3% [2026-04-29 09:00:13] Temp: 27.10°C / 80.78°F Humidity: 61.9%

Telegram

Überwachen Sie Temperatur und Luftfeuchtigkeit aus der Ferne. Erhalten Sie automatische Warnungen, wenn die Temperatur 35°C überschreitet oder die Luftfeuchtigkeit 80% übersteigt.

MCU sketch: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt.

Python Code (Telegram)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-dht22 */ from arduino.app_utils import * import requests import time TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 TEMP_ALERT_C = 35.0 HUMIDITY_ALERT = 80.0 temp_alert_sent = False humi_alert_sent = False def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception as e: print(f"Error getting updates: {e}") return [] def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text} try: requests.post(url, data=payload, timeout=10) except Exception as e: print(f"Error sending message: {e}") def loop(): global temp_alert_sent, humi_alert_sent # Auto-alerts temp_c_str = Bridge.call("get_temp_c") humi_str = Bridge.call("get_humidity") try: temp_c = float(temp_c_str) humi = float(humi_str) temp_f_str = Bridge.call("get_temp_f") if temp_c > TEMP_ALERT_C and not temp_alert_sent: temp_alert_sent = True msg = f"⚠️ High temperature: {temp_c_str}°C / {temp_f_str}°F" print(msg) send_message(CHAT_ID, msg) elif temp_c <= TEMP_ALERT_C: temp_alert_sent = False if humi > HUMIDITY_ALERT and not humi_alert_sent: humi_alert_sent = True msg = f"💧 High humidity: {humi_str}%" print(msg) send_message(CHAT_ID, msg) elif humi <= HUMIDITY_ALERT: humi_alert_sent = False except ValueError: pass # Handle Telegram commands updates = get_updates() for update in updates: last_update_id = update["update_id"] if "message" not in update: continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip() print(f"Received: {text}") if text == "/start": send_message(chat_id, "Arduino UNO Q DHT22 Bot\n" "/temp - Read temperature (°C and °F)\n" "/humidity - Read humidity\n" "/status - Get full sensor status") elif text == "/temp": temp_c = Bridge.call("get_temp_c") temp_f = Bridge.call("get_temp_f") send_message(chat_id, f"Temperature: {temp_c}°C ~ {temp_f}°F") elif text == "/humidity": result = Bridge.call("get_humidity") send_message(chat_id, f"Humidity: {result}%") elif text == "/status": result = Bridge.call("get_status") send_message(chat_id, result) else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(3) App.run(user_loop=loop)

Schnelle Schritte

  • Ersetzen Sie YOUR_TELEGRAM_BOT_TOKEN durch Ihren tatsächlichen Bot-Token von BotFather.
  • Ersetzen Sie YOUR_CHAT_ID durch Ihre Telegram-Chat-ID.
  • Fügen Sie diesen Python-Code in die Python-Datei Ihrer App ein (behalten Sie die gleiche MCU-Skizze bei).
  • Klicken Sie auf die Run-Schaltfläche. Senden Sie /temp oder /humidity von Telegram, oder atmen Sie auf den Sensor, um Warnungen auszulösen.

App Lab-Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:10:00] Waiting for Telegram messages... [2026-04-29 09:10:10] ⚠️ High temperature: 36.00°C / 96.80°F [2026-04-29 09:10:25] 💧 High humidity: 82.3% [2026-04-29 09:10:40] Received: /temp [2026-04-29 09:10:55] Received: /humidity
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.

ArduinoBot

bot
Today
/temp
10:15 AM ✓✓
Temperature: 26.10°C ~ 79.00°F
10:16 AM
/humidity
10:17 AM ✓✓
Humidity: 55.2%
10:18 AM
/status
10:19 AM ✓✓
Temp: 26.10°C / 79.00°F Humidity: 55.2%
10:20 AM
⚠️ High temperature: 36.00°C / 96.80°F
10:21 AM
💧 High humidity: 82.3%
10:22 AM

OpenClaw

You can adapt the OpenClaw to this tutorial by refering the instruction on Arduino Uno Q - OpenClaw Tutorial

Projektideen

Sie können viele nützliche Projekte mit dem DHT22-Sensor und Arduino UNO Q erstellen:

  • Präzise Wetterstation: Der DHT22 mit seinem größeren Bereich und besserer Genauigkeit ist ideal für eine präzise Innen-/Außenstation — die Linux-MPU protokolliert Daten jede Minute und erstellt Diagramme mit Trends im Laufe der Zeit
  • Intelligenter HVAC-Regler: Verwenden Sie Temperatur- und Feuchtigkeitsdaten, um ein Relais zu steuern, das Ihre Klimaanlage oder einen Luftbefeuchter schaltet — Telegram-Warnungen, wenn Bedingungen außerhalb des Bereichs liegen
  • Keimungsmonitor: Achten Sie auf optimale Luftfeuchtigkeit und Temperatur für die Keimung von Samen — erhalten Sie Warnungen, wenn die Luftfeuchtigkeit unter den Schwellenwert fällt, und Daten werden zur Überprüfung protokolliert
  • Weinkeller-Monitor: Der DHT22 deckt den niedrigeren Temperaturbereich ab, der für die Weinlagerung erforderlich ist — überwachen Sie Temperatur und Luftfeuchtigkeit mit Telegram-Warnungen, wenn einer der beiden außerhalb der sicheren Grenzen abweicht
  • Überwachung der Umgebung im Serverraum: Mit Wi-Fi bereitstellen für Fernüberwachung — die MPU sendet stündliche Berichte und sofortige Telegram-Warnungen, wenn Temperatur oder Luftfeuchtigkeit ansteigt

Fordern Sie sich selbst heraus

Bereit, mit dem DHT22 auf Arduino UNO Q noch weiter zu gehen? Versuchen Sie diese Herausforderungen:

  • Einfach: Ändern Sie die MCU-Skizze, um die eingebaute LED mit unterschiedlichen Geschwindigkeiten je nach Temperaturbereich blinken zu lassen — langsames Blinken unter 20°C, schnelles Blinken über 35°C, kein Blinken dazwischen.
  • Mittel: Berechnen Sie den Taupunkt aus Temperatur und Luftfeuchtigkeit auf der Python-Seite mit der Magnus-Formel, und beziehen Sie ihn zusammen mit Temperatur und Luftfeuchtigkeit in die Telegram-/status-Antwort ein.
  • Erweitert: Erstellen Sie eine Datenvisualisierungspipeline: Die MPU liest DHT22 über Bridge alle 5 Minuten, speichert Messwerte in einer JSON-Datei und bietet eine einfache HTTP-Seite mit einem Temperatur-/Feuchtigkeitsdiagramm mit Chart.js an — zugänglich von einem beliebigen Browser im lokalen Netzwerk.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!