Arduino UNO : Capteur température/humidité DHT22 avec écran LCD 16x2 I2C
Composants et fournitures
| Arduino UNO | × | 1 |
| Capteur de température DHT22 | × | 1 |
| Module LCD 16×2 blanc sur bleu avec backpack I2C – 5V | × | 1 |
| Plaque d'essai sans soudure (full size) | × | 1 |
| Pile 9V (générique) | × | 1 |
| Connecteur pile 9V Adafruit avec fiche 5,5/2,1 mm | × | 1 |
| Câble USB-A vers Mini-USB | × | 1 |
| Fils de connexion Mâle/Femelle | × | 1 |
| Fils de connexion Mâle/Mâle | × | 1 |
À propos du projet
Depuis deux ans, mon fils (7 ans) voulait un serpent de compagnie. Il a fini par en acheter deux avec un terrarium. Pour maintenir un environnement confortable, nous devons surveiller température et humidité.
Nous avons acheté un capteur analogique température/humidité, mais il n'était pas facile de maintenir les deux paramètres à un bon niveau. Comme je voulais démarrer un projet avec mon nouvel Arduino Uno, j'ai eu l'idée d'utiliser un capteur DHT22 et un écran LCD I2C 16x2 pour automatiser le contrôle du terrarium.
Ce tutoriel est la base du projet. Il n'y a pas encore d'automatisation : juste l'utilisation du DHT22 et de l'écran LCD I2C.
J'ai vu un autre tutoriel pour cet usage, mais sans module I2C. Si votre LCD n'a pas d'I2C, consultez le tutoriel de ThothLoki.
Matériel requis
- Tout Arduino 5V (ici Arduino Uno R3)
- Capteur d'humidité/température DHT22
- Écran LCD 16x2 avec module I2C monté
- Plaque d'essai
- 6 fils Mâle/Mâle
- 4 fils Mâle/Femelle
Bibliothèques nécessaires
- Adafruit_Sensor
- DHT
- NewliquidCrystal
Avant de commencer
J'apprécie le LCD 16x2 avec I2C car il évite la multitude de broches à câbler. Il ne faut que 4 fils !
L'écran a une adresse I2C pour recevoir les commandes. L'inconvénient : il faut déterminer cette adresse avant de continuer. Sur le forum Arduino, vous trouverez tous les détails.
Dans mon cas, l'adresse est 0x3F. Si votre écran utilise la même, vous pouvez copier directement le code.
Câblage de la plaque d'essai sur l'Arduino
Le DHT22 et le LCD I2C fonctionnent en 5V. J'ai relié la broche 5V de l'Arduino au rail + (rouge) et le GND au rail - (bleu) de la plaque. Pour la cohérence des couleurs, j'utilise du rouge pour 5V et du bleu pour la masse (dans la réalité j'ai utilisé du blanc pour la masse... habitudes d'électronique automobile).
J'utilise : jaune pour la données (DHT22), orange pour SDA, gris pour SCL (ces deux derniers sur l'I2C).
Ajout du capteur DHT22
Le DHT22 a 4 broches. Je le place sur la plaque face visible, la première broche (VCC 5V) à droite (voir schéma).
- Petit fil rouge : VCC vers rail +
- Petit fil bleu : GND vers rail -
- Long fil jaune : broche de données (broche 2) vers broche numérique 4 de l'Arduino (port digital 4). D'autres exemples utilisent le port 7 – les deux fonctionnent. J'ai choisi le 4 pour réserver le 7 au cas où.

Ajout du LCD 16x2 I2C
Le LCD I2C a 4 broches (de gauche à droite) :
- GND
- VCC (5V)
- SDA
- SCL
Connectez la première broche au rail -, la seconde au rail +. Sur Arduino Uno, l'I2C est sur A4 (SDA) et A5 (SCL). Connectez la troisième broche à A4 et la quatrième à A5.

Le code
Rappel : l'adresse I2C de mon écran est 0x3F (voir « Avant de commencer »). Le code est configuré pour cette adresse.
Téléchargez les bibliothèques (Adafruit_Sensor, DHT, NewliquidCrystal), décompressez-les et placez-les dans le dossier libraries de votre projet.
Téléversez le code sur votre Arduino et surveillez l'humidité et la température de votre terrarium (ou armoire serveur, réfrigérateur, salon...).
Code
hygroThermo.ino C/C++
/* Comment utiliser le capteur DHT-22 avec Arduino Uno
Capteur de température et d'humidité
Plus d'infos : https://www.ardumotive.com/how-to-use-dht-22-sensor-en.html
Dev: Michalis Vasilakis // Date: 1/7/2015 // www.ardumotive.com */
// Bibliothèques
#include <DHT.h>
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
// Constantes
#define DHTPIN 4 // broche de connexion
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);
// Configuration LCD I2C adresse 0x3F
#define I2C_ADDR 0x3F
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);
// Variables
int chk;
float hum; // humidité
float temp; // température
void setup() {
Serial.begin(9600);
dht.begin();
lcd.begin(16, 2);
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
lcd.setBacklight(HIGH);
}
void loop() {
delay(2000);
// Lecture et stockage
hum = dht.readHumidity();
temp = dht.readTemperature();
// Affichage série
Serial.print("Humidite: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.println(" Celsius");
// Affichage LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temp);
lcd.print(" ");
lcd.print((char)223); // symbole degré
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Hum: ");
lcd.print(hum);
lcd.print(" %");
delay(2000);
}
Schémas
Schéma Fritzing schema_UcHE1qRu2t.fzz

Processus de fabrication
- Intégration I2C fluide entre Arduino et Raspberry Pi 2 pour projets IoT de capteurs
- Panneau de contrôle Arduino Nano pour Flight Simulator 2020 – Affichage LCD et CDI
- Photographie Haute Vitesse : Capturez les Gouttes d'Eau avec Arduino Nano
- Enregistreur de Température et Humidité Arduino avec DHT11 et Shield Ethernet
- Station météo interactive Nextion HMI avec Arduino Mega et capteurs
- Afficher des images sur un écran TFT 1,17 pouces avec Arduino UNO
- Afficher Température, Humidité et Pression BME280 sur Écran Tactile Nextion
- Oscilloscope DIY Arduino Nano (10 Hz – 50 kHz) avec écran LCD 128×64
- Construire un Réveil Fiable avec RTC DS1302 et Arduino UNO