Combinez le capteur d'humidité et de température DHT22 (plus précis que le DHT11) avec un écran LCD I2C 16x2 sur Arduino UNO Q pour un moniteur d'environnement professionnel. Ajoutez Bridge et Telegram pour la surveillance à distance et les alertes.
Dans ce tutoriel, vous apprendrez :
Comment câbler le DHT22 et le LCD I2C 16x2 sur le MCU Arduino UNO Q
Comment programmer le MCU pour lire le DHT22 et afficher les données sur le LCD
Comment programmer les côtés Linux (Python) et MCU (C/C++) pour lire les données du capteur via Bridge
Comment recevoir des alertes Telegram quand la température ou l'humidité dépasse les seuils
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.
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.
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
Capteur DHT22 (4 broches) :
GND : Connectez à GND (0V)
VCC : Connectez à 3,3V ou 5V
DATA : Broche de communication
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)
À Propos de l'Écran LCD
Le LCD I2C 16x2 se connecte via I2C et affiche deux rangées de 16 caractères. La rangée du haut affiche la température et la rangée du bas affiche l'humidité. Adresse I2C par défaut : 0x27.
Schéma de Câblage
Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
DHT22 vers MCU Arduino UNO Q :
Broche DHT22
MCU Arduino UNO Q
GND
GND
VCC
3,3V ou 5V
DATA
D2
LCD I2C vers MCU Arduino UNO Q :
Broche LCD
MCU Arduino UNO Q
GND
GND
VCC
5V
SDA
SDA
SCL
SCL
Code Arduino UNO Q
Le MCU lit le DHT22 toutes les 3 secondes, affiche la température et l'humidité sur le LCD, 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-lcd*/#include <DHT.h>#include <DIYables_LCD_I2C.h>#define DHT22_PIN 2DHT dht22(DHT22_PIN, DHT22);DIYables_LCD_I2C lcd(0x27, 16, 2);voidsetup() {Serial.begin(9600); lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("DHT22 Sensor"); lcd.setCursor(0, 1); lcd.print("Initializing..."); dht22.begin();delay(2000); // allow sensor to stabilizeSerial.println("Arduino UNO Q DHT22 + LCD ready");}voidloop() {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!"); lcd.setCursor(0, 0); lcd.print("Sensor Error! ");delay(3000);return; } lcd.setCursor(0, 0); lcd.print("T: "); lcd.print(tempC, 1); lcd.print((char)223); lcd.print("C "); lcd.print(tempF, 1); lcd.print((char)223); lcd.print("F "); lcd.setCursor(0, 1); lcd.print("Humidity: "); lcd.print(humidity, 1); lcd.print("% ");Serial.print("Humidity: ");Serial.print(humidity, 1);Serial.print("% Temp: ");Serial.print(tempC, 2);Serial.print("°C / ");Serial.print(tempF, 2);Serial.println("°F");delay(3000);}
É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 DHT22 et le LCD sur le MCU Arduino UNO Q comme indiqué dans le schéma de câblage.
Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
Créer une nouvelle application : Cliquez sur Créer une nouvelle application, nommez-la Dht22Lcd, puis cliquez sur Créer.
Coller le programme : Copiez le code MCU ci-dessus et collez-le dans sketch/sketch.ino.
Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
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
DHT sensor libraryAdafruit
Arduino library for DHT11, DHT22, etc Temp & Humidity Sensors
1.4.6
Install
More Info
Search for DIYables LCD I2C created by DIYables.io 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
DIYables LCD I2C
DIYables LCD I2CDIYables.io
This library is designed for HD44780-based I2C LCD displays. It provides LiquidCrystal-compatible API plus helper functions (text alignment, progress bars, predefined custom characters). Supports multiple I2C buses (Wire, Wire1, Wire2) for advanced boards like Arduino Giga, Due, and ESP32. Compatible with all Arduino-based platforms including Arduino Uno, Mega, Nano, ESP32, ESP8266, STM32, and Raspberry Pi Pico.
1.0.0
Install
More Info
Téléverser : Cliquez sur le bouton Exécuter dans Arduino App Lab.
Regardez la température et l'humidité apparaître sur le LCD toutes les 3 secondes.
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))
/* * 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-lcd*/#include <DHT.h>#include <DIYables_LCD_I2C.h>#include"Arduino_RouterBridge.h"#define DHT22_PIN 2DHT dht22(DHT22_PIN, DHT22);DIYables_LCD_I2C lcd(0x27, 16, 2);float last_humidity = 0.0;float last_temp_c = 0.0;float last_temp_f = 0.0;unsignedlong last_read_ms = 0;void lcd_show(float tempC, float tempF, float humidity) { lcd.setCursor(0, 0); lcd.print("T: "); lcd.print(tempC, 1); lcd.print((char)223); lcd.print("C "); lcd.print(tempF, 1); lcd.print((char)223); lcd.print("F "); lcd.setCursor(0, 1); lcd.print("Humidity: "); lcd.print(humidity, 1); lcd.print("% ");}String get_humidity(String arg) {returnString(last_humidity, 1);}String get_temp_c(String arg) {returnString(last_temp_c, 2);}String get_temp_f(String arg) {returnString(last_temp_f, 2);}String clear_lcd(String arg) { lcd.clear(); Monitor.println("LCD cleared");return"OK";}String get_status(String arg) {return"Temp: " + String(last_temp_c, 2) + "°C / " + String(last_temp_f, 2) + "°F Humidity: " + String(last_humidity, 1) + "%";}voidsetup() {Bridge.begin(); Monitor.begin(); lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("DHT22 Sensor"); lcd.setCursor(0, 1); lcd.print("Initializing..."); dht22.begin();delay(2000); // allow sensor to stabilizefloat 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; lcd_show(c, f, h); }Bridge.provide("get_humidity", get_humidity);Bridge.provide("get_temp_c", get_temp_c);Bridge.provide("get_temp_f", get_temp_f);Bridge.provide_safe("clear_lcd", clear_lcd);Bridge.provide("get_status", get_status); Monitor.println("Arduino UNO Q DHT22 + LCD Bridge ready");}voidloop() {unsignedlongnow = 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; lcd_show(c, f, h); 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-lcd*/from arduino.app_utils import *import timedef loop(): status = Bridge.call("get_status")print(status) time.sleep(3)App.run(user_loop=loop)
Étapes Rapides
Connecter : Câblez le DHT22 et le LCD sur l'Arduino UNO Q comme indiqué.
Créer une nouvelle application : Nommez-la Dht22LcdBridge.
Coller le programme MCU et le code Python dans leurs fichiers respectifs.
Téléverser : Cliquez sur Exécuter dans Arduino App Lab.
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))
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-lcd*/from arduino.app_utils import *import requestsimport timeTELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"CHAT_ID = "YOUR_CHAT_ID"last_update_id = 0TEMP_THRESHOLD_C = 35.0HUMIDITY_THRESHOLD = 80.0temp_alert_sent = Falsehumidity_alert_sent = Falsedef 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"]exceptExceptionas 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)exceptExceptionas e:print(f"Error sending message: {e}")def loop():global temp_alert_sent, humidity_alert_sent# Auto-alerts temp_c_str = Bridge.call("get_temp_c") humidity_str = Bridge.call("get_humidity")try: temp_c = float(temp_c_str) humidity = float(humidity_str)if temp_c > TEMP_THRESHOLD_C andnot temp_alert_sent: temp_alert_sent = True temp_f = Bridge.call("get_temp_f") msg = f"⚠️ High temperature alert: {temp_c_str}°C / {temp_f}°F"print(msg) send_message(CHAT_ID, msg)elif temp_c <= TEMP_THRESHOLD_C: temp_alert_sent = Falseif humidity > HUMIDITY_THRESHOLD andnot humidity_alert_sent: humidity_alert_sent = True msg = f"⚠️ High humidity alert: {humidity_str}%"print(msg) send_message(CHAT_ID, msg)elif humidity <= HUMIDITY_THRESHOLD: humidity_alert_sent = FalseexceptValueError:pass# Handle Telegram commands updates = get_updates()for update in updates: last_update_id = update["update_id"]if"message"notin 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 + LCD Bot\n""/temp - Temperature (°C and °F)\n""/humidity - Humidity reading\n""/clear - Clear LCD display\n""/status - 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 == "/clear": result = Bridge.call("clear_lcd") send_message(chat_id, f"LCD cleared: {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
Telegram12:45
Welcome to Telegram!
ArduinoBot10:19
Chatting with Arduino...
BotFatherYesterday
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
/clear
10:19 AM✓✓
LCD cleared: OK
10:20 AM
/status
10:21 AM✓✓
Temp: 26.40°C / 79.52°F Humidity: 55.0%
10:22 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
Moniteur de Qualité d'Air : Enregistrez les lectures du DHT22 dans un fichier CSV Linux toutes les heures et envoyez des résumés journaliers via Telegram
Thermostat de Serre : Déclenchez automatiquement le chauffage ou la ventilation via Bridge quand la température sort de la plage cible
Chambre de Serveur : Le LCD affiche les conditions en direct ; Telegram alerte en cas de dépassement des limites critiques
Journal de Qualité de Stockage : Surveillez les conditions d'entreposage alimentaire avec des alertes automatiques si les conditions dépassent les normes
Mettez-Vous au Défi
Facile : Ajoutez un caractère degré personnalisé au LCD avec createChar().
Moyen : Implémentez une commande Telegram /moy retournant la moyenne des 10 dernières lectures.
Avancé : Construisez un rapport quotidien automatique — min, max et moyenne envoyés chaque jour à Telegram.
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 !