Arduino UNO Q - DHT11 LCD

Combinez le capteur d'humidité et de température DHT11 avec un écran LCD I2C 16x2 sur Arduino UNO Q pour un moniteur d'environnement clair et facile à consulter. Ajoutez Bridge et Telegram pour la surveillance à distance et les alertes.

Dans ce tutoriel, vous apprendrez :

Arduino UNO Q DHT11 LCD

Matériel Requis

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

Brochage

Le DHT11 a quatre broches (lors de l'utilisation du module commun à 3 broches) :

  • GND : Connectez à GND
  • VCC : Connectez à 3,3V ou 5V
  • DATA : Connectez à la broche numérique 2 sur le MCU Arduino UNO Q
Brochage du Capteur de Température et d'Humidité DHT11

Fonctionnement

Le DHT11 utilise un protocole numérique à un fil pour transmettre l'humidité et la température. Il peut mesurer :

  • Humidité : 20–80% HR (précision ±5%)
  • Température : 0–50°C (précision ±2°C)

Attendez au moins 3 secondes entre les lectures.

À 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 (°C et °F) 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 DHT11 LCD

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

DHT11 vers MCU Arduino UNO Q :

Broche DHT11 MCU Arduino UNO Q
GND GND
VCC 3,3V
DATA D2

LCD I2C vers MCU Arduino UNO Q :

Broche LCD MCU Arduino UNO Q
GND GND
VCC 5V
SDA SDA
SCL SCL

Comment Programmer pour DHT11 + LCD

  • Incluez les bibliothèques requises :
#include <DHT.h> #include <LiquidCrystal_I2C.h>
  • Initialisez le DHT11 et le LCD :
DHT dht11(DHT11_PIN, DHT11); LiquidCrystal_I2C lcd(0x27, 16, 2);
  • Lisez la température et l'humidité (attendez au moins 3 secondes entre les lectures) :
float humidity = dht11.readHumidity(); float tempC = dht11.readTemperature(); float tempF = dht11.readTemperature(true);
  • Vérifiez toujours les lectures échouées :
if (isnan(humidity) || isnan(tempC) || isnan(tempF)) { // lecture du capteur échouée }
  • Affichage sur LCD :
lcd.setCursor(0, 0); lcd.print("T: "); lcd.print(tempC, 1); lcd.print((char)223); lcd.print("C "); lcd.setCursor(0, 1); lcd.print("Humidity: "); lcd.print(humidity, 1); lcd.print("%");

Code Arduino UNO Q

L'Arduino UNO Q dispose de deux processeurs travaillant ensemble :

  • Le MCU STM32 lit le capteur DHT11 et contrôle le LCD — toute la logique de capteur et d'affichage s'exécute sur le MCU
  • Le MPU Qualcomm exécute Debian Linux et gère le Wi-Fi, Python et la connectivité cloud
  • Dans cette section, seul le MCU est programmé — le côté Linux reste inactif. Une section ultérieure montre comment les deux processeurs fonctionnent ensemble via Bridge.

Le MCU lit le DHT11 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-dht11-lcd */ #include <DHT.h> #include <DIYables_LCD_I2C.h> #define DHT11_PIN 2 DHT dht11(DHT11_PIN, DHT11); DIYables_LCD_I2C lcd(0x27, 16, 2); void setup() { Serial.begin(9600); lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("DHT11 Sensor"); lcd.setCursor(0, 1); lcd.print("Initializing..."); dht11.begin(); delay(2000); // allow sensor to stabilize Serial.println("Arduino UNO Q DHT11 + LCD ready"); } void loop() { 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!"); 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 DHT11 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 le bouton Créer une nouvelle application.
Créer une nouvelle application dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'application, par exemple : Dht11Lcd
  • Cliquez sur Créer pour confirmer.
Dossiers et fichiers de l'application Arduino App Lab sur Arduino UNO Q
  • Coller le programme : Copiez le code MCU ci-dessus et collez-le dans sketch/sketch.ino. Laissez les autres fichiers par défaut.
  • 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 et le Moniteur Série 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 DHT11 + 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 [2026-04-29 09:00:10] Humidity: 56.0% Temp: 26.60°C / 79.88°F

Bridge : Linux + MCU

Cette section montre comment programmer les deux processeurs de l'Arduino UNO Q pour que le côté Linux puisse lire les données du DHT11 et contrôler le LCD via Bridge :

  • Le capteur DHT11 et le LCD sont connectés au MCU — toute la logique de lecture et d'affichage s'exécute sur le MCU toutes les 3 secondes
  • Le MPU ne peut pas accéder directement au capteur ou au LCD — il appelle des fonctions Bridge pour récupérer les lectures ou effacer l'affichage
  • Le MPU a le Wi-Fi — exécutant Debian Linux complet, il peut enregistrer des lectures, publier sur des tableaux de bord ou envoyer des alertes Telegram
  • Arduino_RouterBridge permet la communication RPC entre les deux processeurs
  • ⚠️ /dev/ttyHS1 (Linux) et Serial1 (MCU) sont RÉSERVÉS par le routeur — ne les ouvrez jamais dans le code utilisateur

En résumé : Le MCU lit le DHT11 toutes les 3s et met à jour le LCD → le MPU lit via Bridge → le MPU envoie des alertes via Wi-Fi.

Code MCU (Bridge)

/* * 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-dht11-lcd */ #include <DHT.h> #include <DIYables_LCD_I2C.h>#include "Arduino_RouterBridge.h" #define DHT11_PIN 2 DHT dht11(DHT11_PIN, DHT11); 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("DHT11 Sensor"); lcd.setCursor(0, 1); lcd.print("Initializing..."); 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; 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 DHT11 + LCD 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; lcd_show(c, f, h); Monitor.println("Humidity: " + String(h, 1) + "% Temp: " + String(c, 2) + "°C / " + String(f, 2) + "°F"); } } }

Code Python (Bridge)

/* * 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-dht11-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 DHT11 et le LCD sur l'Arduino UNO Q comme indiqué dans le schéma de câblage.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez que la carte soit détectée.
  • Créer une nouvelle application : Cliquez sur Créer une nouvelle application, nommez-la Dht11LcdBridge, puis cliquez sur Créer.
  • Coller le programme MCU : Copiez le code MCU Bridge ci-dessus et collez-le dans sketch/sketch.ino.
  • Coller le code Python : Copiez le code Python Bridge ci-dessus et collez-le dans le fichier Python de l'application.
  • 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 le LCD se mettre à jour toutes les 3 secondes et les lectures apparaître dans la console Python.

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 DHT11 + LCD Bridge 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 [2026-04-29 09:00:10] Humidity: 56.0% Temp: 26.60°C / 79.88°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% [2026-04-29 09:00:07] Temp: 26.40°C / 79.52°F Humidity: 55.0% [2026-04-29 09:00:10] Temp: 26.60°C / 79.88°F Humidity: 56.0%

Telegram

Surveillez les lectures du DHT11 à distance et recevez des alertes Telegram automatiques quand la température ou l'humidité dépasse les seuils.

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

Code Python (Telegram)

/* * 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-dht11-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 DHT11 + 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)

Étapes Rapides

  • Remplacez YOUR_TELEGRAM_BOT_TOKEN par votre vrai token de bot depuis BotFather.
  • Remplacez YOUR_CHAT_ID par votre identifiant de discussion Telegram.
  • Collez ce code Python dans le fichier Python de votre application (conservez le même programme MCU).
  • Cliquez sur le bouton Exécuter. Envoyez /temp ou /humidity depuis Telegram, ou réchauffez le capteur pour déclencher l'alerte haute température.

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 [2026-04-29 09:10:35] Received: /humidity [2026-04-29 09:10:40] Received: /status
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
⚠️ High temperature alert: 36.20°C / 97.16°F
10:23 AM
⚠️ High humidity alert: 82.0%
10:24 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

Vous pouvez réaliser de nombreux projets utiles avec le DHT11 et le LCD sur Arduino UNO Q :

  • Thermomètre-Hygromètre Portable : Le LCD donne un affichage clair et économe en énergie de la température et de l'humidité — placez le projet dans un petit boîtier pour une jauge climatique portable
  • Moniteur de Chambre de Bébé : Montez l'appareil dans une pépinière — le LCD affiche les lectures en direct et Telegram alerte les parents immédiatement si la température ou l'humidité sort de la zone de confort
  • Enregistreur de Chaîne du Froid : Utilisez le DHT11 et le LCD pour suivre les conditions de stockage — le côté Python enregistre chaque lecture via Bridge dans un fichier Linux avec horodatages pour inspection ultérieure
  • Station de Culture Hydroponique : Affichez la température et l'humidité de la salle de culture sur le LCD et déclenchez un relais de humidificateur via Bridge quand l'humidité chute, maintenant des conditions de croissance des plantes optimales
  • Suivi d'Environnement de Laboratoire : Publiez les lectures du DHT11 vers un endpoint HTTP chaque minute en utilisant le Wi-Fi du MPU — le LCD confirme les conditions actuelles tandis que le tableau de bord affiche les tendances historiques

Mettez-Vous au Défi

Prêt à aller plus loin avec le DHT11 et le LCD sur Arduino UNO Q ? Essayez ces défis :

  • Facile : Ajoutez un caractère degré Celsius personnalisé au LCD en utilisant createChar() pour que l'affichage montre un vrai symbole ° au lieu du caractère imprimable le plus proche.
  • Moyen : Implémentez une commande Telegram /moy qui retourne la température et l'humidité moyennes calculées sur les 10 dernières lectures tamponnées par le côté Python.
  • Avancé : Construisez un rapport quotidien planifié — toutes les 24 heures, le MPU calcule la température et l'humidité min, max et moyenne de la journée à partir des données Bridge et envoie un résumé formaté à 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 !