Arduino UNO Q - Capteur de Température et d'Humidité DHT22

Le DHT22 offre des lectures de température et d'humidité plus précises que le DHT11 — avec une plage plus large et une meilleure précision. Ce tutoriel vous montre comment l'utiliser avec Arduino UNO Q pour une surveillance complète de l'environnement avec des alertes Telegram.

Dans ce tutoriel, vous apprendrez :

Arduino UNO Q Capteur de Température et d'Humidité DHT22

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×DHT22 Module capteur de température et humidité
1×10 kΩ Resistor
1×Plaque d'essai
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Arduino Uno
1×Recommandé: Sensors/Servo Expansion Shield for Arduino Uno
1×Recommandé: Shield plaque d'essai pour Arduino Uno
1×Recommandé: Boîtier pour Arduino Uno
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À Propos du Capteur DHT22

Le DHT22 (aussi connu sous le nom AM2302) est une alternative plus précise au DHT11. Les deux utilisent la même bibliothèque et un code presque identique — la principale différence est la constante de type dans le constructeur.

DHT22
Tension de fonctionnement 3,3V à 6V
Plage de température -40°C à 80°C
Précision de température ±0,5°C
Plage d'humidité 0% à 100%
Précision d'humidité ±2%
Taux de lecture 0,5Hz (une fois toutes les 2 secondes)

Brochage

Brochage du capteur de température et d'humidité DHT22

Capteur DHT22 (4 broches) :

  • GND : Connectez à GND (0V)
  • VCC : Connectez à 3,3V ou 5V
  • DATA : Broche de communication — connectez à une broche numérique du MCU
  • NC : Non connecté

Module DHT22 (3 broches) :

  • GND : Connectez à GND (0V)
  • VCC : Connectez à 3,3V ou 5V
  • DATA : Broche de communication (aussi étiquetée OUT ou S sur certains modules)

La plupart des modules DHT22 incluent une résistance de tirage intégrée — pas besoin de résistance externe.

Schéma de Câblage

Câblage Arduino UNO Q - Capteur DHT22

Nécessite une résistance de tirage 10kΩ entre DATA et VCC.

Schéma de câblage Arduino UNO Q Capteur DHT22

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Câblage Arduino UNO Q - Module DHT22

Pas de résistance externe requise — le module en inclut une.

Schéma de câblage Arduino UNO Q Module DHT22

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Broche DHT22 MCU Arduino UNO Q
GND GND
VCC 3,3V ou 5V
DATA D2

Comment Programmer pour le DHT22

  • Incluez la bibliothèque :
#include <DHT.h>
  • Définissez la broche et créez un objet capteur :
#define DHT22_PIN 2 DHT dht22(DHT22_PIN, DHT22);
  • Initialisez le capteur, lisez et vérifiez :
dht22.begin(); 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!"); }

Code Arduino UNO Q

Le MCU lit la température et l'humidité toutes les 3 secondes et imprime sur le Moniteur Série.

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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"); } }

Étapes Rapides

Première utilisation de l'Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q avant de continuer.

  • Connecter : Câblez le capteur ou module DHT22 sur le MCU Arduino UNO Q comme indiqué.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
  • Créer une nouvelle application : Nommez-la Dht22, puis cliquez sur Créer.
  • Coller le programme : Collez le code MCU dans sketch/sketch.ino.
  • 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
  • Search for Arduino_RouterBridge created by Arduino 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
Arduino_RouterBridge Arduino

This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

0.4.1
Install
More Info
  • Téléverser : Cliquez sur le bouton Exécuter dans Arduino App Lab.
Cliquer sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q

Sortie de la Console App Lab

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.0% Temp: 26.40°C / 79.52°F [2026-04-29 09:00:07] Humidity: 55.0% Temp: 26.40°C / 79.52°F

Bridge : Linux + MCU

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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"); } } }
/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)

Sortie de la Console App Lab

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.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.40°C / 79.52°F Humidity: 55.0%

Telegram

Surveillez les lectures du DHT22 à distance et recevez des alertes Telegram automatiques.

Programme MCU : Conservez le même programme MCU de la section Bridge précédente.

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)

Sortie de la Console App Lab

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:18] ⚠️ High temperature alert: 36.20°C / 97.16°F
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.40°C = 79.52°F
10:16 AM
/humidity
10:17 AM ✓✓
Humidity: 55.0%
10:18 AM
/status
10:19 AM ✓✓
Temp: 26.40°C / 79.52°F Humidity: 55.0%
10:20 AM

Intégration d'OpenClaw

Vous pouvez adapter OpenClaw à ce tutoriel en vous référant aux instructions du tutoriel Arduino UNO Q - OpenClaw.

Idées de Projets

  • Station Météo de Précision : Enregistrez la température et l'humidité toutes les heures — les données sont plus fiables qu'avec le DHT11
  • Thermostat Intelligent : Déclenchez le chauffage ou le refroidissement via Bridge basé sur des seuils de température précis
  • Surveillance de Chambre Froide : Utilisez la plage de -40°C pour surveiller les congélateurs industriels et envoyer des alertes Telegram immédiates
  • Contrôle d'Incubateur : Maintenez des conditions précises pour incubateurs à œufs ou serres avec contrôle PID

Mettez-Vous au Défi

  • Facile : Ajoutez l'affichage de l'indice de chaleur (Heat Index) calculé à partir de la température et de l'humidité.
  • Moyen : Ajoutez une commande Telegram /moy retournant la moyenne des 10 dernières lectures.
  • Avancé : Construisez un tableau de bord web Flask sur le MPU avec un graphique en temps réel de la température et de l'humidité.

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !