Arduino UNO Q - DHT11 Temperatur- und Feuchtigkeitssensor

Möchten Sie Temperatur UND Luftfeuchtigkeit mit Ihrem Arduino UNO Q messen — und erhalten Sie Telegram-Benachrichtigungen, wenn es zu heiß oder zu feucht wird? Dieses Tutorial zeigt Ihnen, wie Sie das DHT11-Sensormodul zur vollständigen Umgebungsüberwachung verwenden.

In diesem Tutorial erfahren Sie:

Arduino UNO Q DHT11 Temperature and Humidity Sensor

Erforderliche Hardware

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×DHT11 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 DHT11-Sensor

DHT11
Betriebsspannung 3 bis 5V
Temperaturbereich 0°C bis 50°C
Temperaturgenauigkeit ± 2°C
Feuchtigkeitsbereich 20% bis 80%
Feuchtigkeitsgenauigkeit 5%
Abfragerate 1Hz (einmal pro Sekunde)

Pinbelegung

Der DHT11 ist in zwei Formen verfügbar: Sensor und Modul.

DHT11 temperature and humidity sensor Pinout

DHT11-Sensor (4-polig):

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

DHT11-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 bezeichnet)

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

Schaltplan

Arduino UNO Q - DHT11-Sensor-Verdrahtung

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

Arduino UNO Q DHT11 Sensor Wiring Diagram

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

Arduino UNO Q - DHT11-Modul-Verdrahtung

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

Arduino UNO Q DHT11 Module Wiring Diagram

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

DHT11 Pin Arduino UNO Q MCU
GND GND
VCC 3.3V or 5V
DATA D2

Programmierung für DHT11

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

Arduino UNO Q Code

Der Arduino UNO Q verfügt über zwei zusammenarbeitende Prozessoren:

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

Die MCU liest Temperatur und Luftfeuchtigkeit alle 3 Sekunden und gibt die Daten im Seriellen 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-dht11 */ #include <DHT.h> #define DHT11_PIN 2 // Arduino UNO Q MCU pin connected to DHT11 DATA pin DHT dht11(DHT11_PIN, DHT11); void setup() { Serial.begin(115200); delay(1500); dht11.begin(); Serial.println("Arduino UNO Q DHT11 ready"); } void loop() { delay(3000); // DHT11 requires at least 1 second between readings float humidity = dht11.readHumidity(); float tempC = dht11.readTemperature(); float tempF = dht11.readTemperature(true); if (isnan(humidity) || isnan(tempC) || isnan(tempF)) { Serial.println("Failed to read from DHT11 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

Erste Erfahrung mit Arduino UNO Q? Folgen Sie zuvor dem Getting Started with Arduino UNO Q Tutorial.

  • Verbinden: Verdrahten Sie den DHT11-Sensor oder das Modul mit der Arduino UNO Q MCU wie im Schaltplan gezeigt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihre Arduino UNO Q erkennt.
  • Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Create New App.
Create New App in Arduino App Lab on Arduino UNO Q
  • Geben Sie der App einen Namen, z. B.: Dht11
  • Klicken Sie auf Create, um zu bestätigen.
Arduino App Lab App folders and files on Arduino UNO Q
  • Fügen Sie den Sketch ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein. Behalten Sie andere Dateien wie voreingestellt.
  • 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
  • Upload: Klicken Sie auf die Schaltfläche Run in Arduino App Lab.
Click Run button in Arduino App Lab on Arduino UNO Q
  • Atmen Sie auf den Sensor oder halten Sie ihn — sehen Sie, wie sich die Luftfeuchtigkeits- und Temperaturwerte 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 DHT11 ready [2026-04-29 09:00:04] Humidity: 55.0% | Temperature: 26.00°C ~ 78.80°F [2026-04-29 09:00:07] Humidity: 56.0% | Temperature: 26.10°C ~ 79.00°F [2026-04-29 09:00:10] Humidity: 58.0% | Temperature: 26.40°C ~ 79.52°F [2026-04-29 09:00:13] Humidity: 62.0% | Temperature: 27.00°C ~ 80.60°F

Bridge: Linux + MCU

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

  • Der DHT11-Sensor ist mit der MCU (STM32) verbunden — die MCU liest Daten alle 3 Sekunden und speichert die neuesten Werte zwischen
  • Die MPU kann nicht direkt auf den DHT11 zugreifen — sie muss Bridge-Funktionen aufrufen, um Messwerte abzurufen
  • Die MPU verfügt über Wi-Fi — führt vollständiges Debian Linux aus und kann Daten protokollieren, auf Dashboards veröffentlichen oder Benachrichtigungen über das Internet versenden
  • Arduino_RouterBridge aktiviert RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT durch den Router — öffnen Sie diese nie im Benutzercode

Kurz gesagt: MCU liest DHT11 alle 3 Sekunden und speichert das Ergebnis zwischen → MPU fragt Bridge ab, um Messwerte abzurufen → MPU veröffentlicht oder sendet Benachrichtigungen über Wi-Fi.

Hinweis: Im Bridge-Sketch liest die Funktion loop() den DHT11 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-dht11 */ #include <DHT.h>#include "Arduino_RouterBridge.h" #define DHT11_PIN 2 DHT dht11(DHT11_PIN, DHT11); 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(); dht11.begin(); delay(2000); // allow sensor to stabilize float h = dht11.readHumidity(); float c = dht11.readTemperature(); float f = dht11.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 DHT11 Bridge ready"); } void loop() { unsigned long now = millis(); if (now - last_read_ms >= 3000) { last_read_ms = now; float h = dht11.readHumidity(); float c = dht11.readTemperature(); float f = dht11.readTemperature(true); if (isnan(h) || isnan(c) || isnan(f)) { Monitor.println("Failed to read from DHT11 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-dht11 */ 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 DHT11-Sensor mit der Arduino UNO Q wie im Schaltplan gezeigt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis das Board erkannt wird.
  • Erstellen Sie eine neue App: Klicken Sie auf Create New App, benennen Sie es Dht11Bridge und klicken Sie auf Create.
  • Fügen Sie den MCU-Sketch ein: Kopieren Sie den MCU Bridge-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Fügen Sie den Python-Code ein: Kopieren Sie den Python Bridge-Code oben und fügen Sie ihn in die Python-Datei der App ein.
  • Upload: Klicken Sie auf die Schaltfläche Run in Arduino App Lab.
Click Run button in Arduino App Lab on Arduino UNO Q
  • Sehen Sie, wie Temperatur- und Feuchtigkeitswerte 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 DHT11 Bridge ready [2026-04-29 09:00:04] Humidity: 55.0% Temp: 26.00°C / 78.80°F [2026-04-29 09:00:07] Humidity: 56.0% Temp: 26.10°C / 79.00°F [2026-04-29 09:00:10] Humidity: 58.0% Temp: 26.40°C / 79.52°F
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:04] Temp: 26.00°C / 78.80°F Humidity: 55.0% [2026-04-29 09:00:07] Temp: 26.10°C / 79.00°F Humidity: 56.0% [2026-04-29 09:00:10] Temp: 26.40°C / 79.52°F Humidity: 58.0% [2026-04-29 09:00:13] Temp: 27.00°C / 80.60°F Humidity: 62.0%

Telegram

Überwachen Sie Temperatur und Luftfeuchtigkeit remote. Erhalten Sie automatische Benachrichtigungen, wenn die Temperatur 35°C überschreitet oder die Luftfeuchtigkeit 80% überschreitet.

MCU-Sketch: Behalten Sie denselben MCU-Sketch 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-dht11 */ 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 DHT11 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 denselben MCU-Sketch).
  • Klicken Sie auf die Schaltfläche Run. Senden Sie /temp oder /humidity von Telegram oder atmen Sie auf den Sensor, um Benachrichtigungen 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.0% [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.00°C ~ 78.80°F
10:16 AM
/humidity
10:17 AM ✓✓
Humidity: 55.0%
10:18 AM
/status
10:19 AM ✓✓
Temp: 26.00°C / 78.80°F Humidity: 55.0%
10:20 AM
⚠️ High temperature: 36.00°C / 96.80°F
10:21 AM
💧 High humidity: 82.0%
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 DHT11-Sensor und Arduino UNO Q aufbauen:

  • Intelligente Wetterstation: Messen Sie kontinuierlich Temperatur und Luftfeuchtigkeit — die Linux MPU protokolliert Daten jede Minute und lädt eine tägliche Zusammenfassung auf ein Cloud-Dashboard hoch
  • Gewächshausautomation: Verwenden Sie die Luftfeuchtigkeits- und Temperaturmesswerte, um einen Relais-Lüfter und ein Sprühsystem zu steuern — die MPU sendet Telegram-Benachrichtigungen, wenn Bedingungen außerhalb des Bereichs liegen
  • Babyraum-Monitor: Überwachen Sie Temperatur und Luftfeuchtigkeit in einem Babyzimmer — Telegram sendet eine Benachrichtigung, wenn es zu warm oder zu trocken wird, um Komfort zu gewährleisten
  • Gärungsmonitor: Verfolgen Sie Temperatur und Luftfeuchtigkeit während der Gärung — die MPU protokolliert Daten und Telegram benachrichtigt, wenn die Bedingungen vom Zielbereich abweichen
  • Remote-Umgebungsprotokoll: Bereitstellen mit Batteriestrom und Wi-Fi — die MPU liest DHT11 via Bridge alle 10 Minuten und lädt die Messwerte auf einen Remote-Server hoch

Fordern Sie sich selbst heraus

Sind Sie bereit, weiter mit dem DHT11 auf Arduino UNO Q zu gehen? Versuchen Sie diese Herausforderungen:

  • Einfach: Ändern Sie den MCU-Sketch so, dass die eingebaute LED blinkt, wenn die Luftfeuchtigkeit 70% überschreitet, und bieten Sie eine visuelle Warnung direkt auf dem Board.
  • Mittel: Fügen Sie eine set_temp_threshold(String) und set_humi_threshold(String) Bridge-Funktion hinzu, mit der Python die Benachrichtigungsschwellenwerte zur Laufzeit aktualisieren kann, ohne den MCU-Sketch neu zu kompilieren.
  • Fortgeschritten: Bauen Sie eine Komfortindex-Anzeige: Berechnen Sie den Wärmeindex aus Temperatur und Luftfeuchtigkeit, zeigen Sie ihn in der Python-Konsole an und senden Sie jede Stunde einen Telegram-Bericht mit Durchschnittswerte von Temperatur, Luftfeuchtigkeit und Wärmeindex. Schließen Sie einen Trend-Indikator (steigend/fallend/stabil) basierend auf den letzten 3 Messwerten ein.

※ 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!