Afficher température et humidité avec capteur DHT22 sur LCD 20×4 i2c avec un Arduino UNO
Description :
Projet permettant de mesurer et d’afficher la température et l’humidité ambiante à l’aide d’un capteur DHT22 connecté à un Arduino Uno.
Les valeurs mesurées sont ensuite affichées en temps réel sur un écran LCD 20×4 avec interface I2C, offrant une lecture claire et pratique des données environnementales.
Prérequis :
- 1 x Carte Arduino Uno
- 1 x DHT22
- 1 x résistance 4.7KΩ à 10KΩ
- 1 x LCD 20×4 avec interface série IIC I2C
- 1 x Breadboard
- Fils de connexion
Version IDE :
- Arduino IDE 2.3.5
Bibliothèque :
- DHT.h (version: 1.4.6 par Adafruit)
- Adafruit_Sensor.h (version: 1.1.15 par Adafruit)
- LiquidCrystal_I2C.h(version: 1.1.4 par
johnrickman)
Vidéo de démonstration :
Schéma de câblage :


Code :
#include "DHT.h"
//Connecter la broche 2 du capteur à votre DHTPIN
#define DHTPIN 2
#define DHTTYPE DHT22
// Inclure le code de la bibliothèque:
#include <LiquidCrystal_I2C.h>
// Initialiser la bibliothèque avec les dimensions de l'interface
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Initialisation du capteur DHT.
DHT dht(DHTPIN, DHTTYPE);
char buffer[20];
void setup() {
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
dht.begin();
// Initialisation de l'interface LCD
lcd.init();
// Active le rétro-éclairage du LCD
lcd.backlight();
}
void loop() {
// Attendre quelques secondes entre les mesures.
delay(1000);
// La mesure de la température ou de l'humidité prend environ 250 millisecondes !
// Les mesures du capteur peuvent également remonter jusqu'à 2 secondes (c'est un capteur très lent).
// Lit l'humidité et stock ça valeur dans h au format float.
float h = dht.readHumidity();
// Lire la température en degrés Celsius (valeur par défaut) et stock ça valeur dans t au format float.
float t = dht.readTemperature();
// Vérifiez si des lectures ont échoué et quittez plus tôt (pour réessayer).
if (isnan(h) || isnan(t)) {
Serial.println(F("Echec de la lecture à partir du capteur DHT!"));
return;
}
Serial.print(F("Humidité: "));
Serial.print(h);
Serial.print(F("% Température: "));
Serial.print(t);
Serial.println(F("°C "));
//LCD//////////////
// placer le curseur sur la colonne 4, ligne 0
// (note : la ligne 0 est la première ligne, puisque le comptage commence par 0):
lcd.setCursor(4, 0);
// Imprime un message
lcd.print ("Temperature");
// placer le curseur sur la colonne 6, ligne 1
lcd.setCursor(6, 1);
// Imprime la température en degrés Celsius qui est stockée dans t
lcd.print(t);
// ETC...
lcd.setCursor(12, 1);
lcd.print((char)223);
lcd.setCursor(13, 1);
lcd.print("C");
lcd.setCursor(5, 2);
lcd.print ("Humidite");
lcd.setCursor(6, 3);
lcd.print(h);
lcd.setCursor(13, 3);
lcd.print("%");
}
