Arduino UNO Q - DHT22 LCD

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 :

Arduino UNO Q DHT22 LCD

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×DHT22 Module capteur de température et humidité
1×LCD I2C 16x2
1×Alternativement: LCD I2C 20x4
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.

Note d'achat: Une autre option consiste à créer l'écran LCD I2C en associant LCD 1602 Display et PCF8574 I2C Adapter Module.

À 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.

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
  • 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

Schéma de Câblage Arduino UNO Q DHT22 LCD

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 2 DHT dht22(DHT22_PIN, DHT22); DIYables_LCD_I2C lcd(0x27, 16, 2); void setup() { 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 stabilize Serial.println("Arduino UNO Q DHT22 + LCD ready"); } void loop() { 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.
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 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.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.
Cliquer sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q
  • 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))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q DHT22 + LCD 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-lcd */ #include <DHT.h> #include <DIYables_LCD_I2C.h>#include "Arduino_RouterBridge.h" #define DHT22_PIN 2 DHT 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; unsigned long 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) { 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 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) + "%"; } void setup() { 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 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; 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"); } 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; 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 time def 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))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q DHT22 + LCD 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-lcd */ 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_THRESHOLD_C = 35.0 HUMIDITY_THRESHOLD = 80.0 temp_alert_sent = False humidity_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, 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 and not 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 = False if humidity > HUMIDITY_THRESHOLD and not 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 = 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 + 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
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
/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.

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