Vous êtes sur la page 1sur 4

Université Mouloud Mammeri 1-

1- ……………………………………….
…………………………..........................
Département d’électronique
2-
2- ……………………………………….
…………………………..........................
Master 1 : Instrumentation
3- ……………………………………….
3- …………………………..........................
et Systèmes Embarqués

TP N° 3 : Arduino & capteur DHT-11 (Affichage de la


température et de l’humidité sur un écran LCD)

Objectif du TP :
1- Savoir utiliser le capteur DHT-11.
2- Savoir gérer un écran LCD avec Arduino.
3- Savoir installer et intégrer une bibliothèque Arduino.

I- Le capteur de température et d’humidité DHT-11


Le capteur DHT11 est un capteur numérique de température et d’humidité "deux en un". Il
est constitué d’un capteur d’humidité capacitif et d’une thermistance pour la mesurer de la
température ambiante. Le DHT-11 est capable de mesurer des températures de 0 à +50°C
avec une précision de +/- 2°C et des taux d’humidité relative de 20 à 80% avec une précision
de +/- 5%. Ce capteur est compatible 3.3 volts et 5 volts. Cependant, le fabricant recommande
de toujours alimenter le capteur en 5 volts pour une meilleure précision de mesure. La mesure
des deux grandeurs se fait toutes les secondes.

I.1. Description du protocole de communication avec le DHT-11


Le DHT-11 utilise un protocole de communication propriétaire, utilisant un seul fil et
nécessitant des timings très précis. Ainsi, la communication avec un capteur DHT-11 se fait
en 3 étapes :
 Tout d’abord, le microcontrôleur maître (la carte Arduino dans notre cas) réveille le
capteur en plaçant la ligne de données à LOW pendant au moins 18ms. Durant ce laps
de temps, le capteur va se réveiller et préparer une mesure de température et
d’humidité. Une fois le temps écoulé, le maître va libérer la ligne de données et passer
en écoute.
 Une fois la ligne de données libérée, le capteur répond au maître (pour montrer qu’il
est bien réveillé) en maintenant la ligne de données à LOW pendant 80µs puis à HIGH
pendant 80µs.
 Le capteur va ensuite transmettre une série de 40 bits (5 octets). Les deux premiers
octets contiennent la mesure de l’humidité. Les deux octets suivants contiennent la
mesure de la température et le cinquième octet contient une somme de contrôle qui
permet de vérifier que les données lues sont correctes.

I.2. Ajout de la librairie DHT-11 sur Arduino IDE


Sous Arduino, la création de fonctions permettant d’utiliser un capteur DHT-11 est
relativement longue et complexe. Par conséquent, il est plus judicieux d’utiliser la librairie
DHT sensor Library, conçu spécialement pour l’utilisation du capteur DHT-11 avec une carte
Arduino. Il s’agit, en effet, d’une bibliothèque qui est incluse avec le logiciel Arduino IDE.
Toutefois, cette bibliothèque doit être installée avant la première utilisation. Pour ce faire :
- aller dans Croquis > Inclure une bibliothèque > Gérer les bibliothèques,
- saisir "DHT11" dans le filtre de recherche,
- installer la librairie DHT sensor Library by Adafruit (cliquer sur la ligne pour faire
apparaitre le bouton "Install")
- <Fermer>
Y. TRIKI TP N° 3 : Arduino & capteur DHT-11 Page 1
Pour l’intégrer au code Arduino, c’est très simple : allez vers Croquis, puis cliquez sur
Inclure une bibliothèque et enfin choisissez DHT sensor Library. Une ligne #include
<DHT.h> doit apparaitre en haut de la page de code (les prochaines fois vous pourrez aussi
taper cette ligne à la main directement, ça aura le même effet).

II- L’écran à cristaux liquides


L’écran à cristaux liquides ou LCD (de l’anglais liquid crystal display) est un composant
optoélectronique qui permet de réaliser une interface visuelle entre un système (projet) et
l’homme (utilisateur). En effet, il permet d’afficher tous les caractères alphanumériques et
quelques caractères spéciaux sur une à quatre lignes comportant chacune 16 à 20 colonnes. De
plus, Certains écrans LCD peuvent afficher des graphiques monochromes ou en couleur.
Dans l’univers Arduino, l’écran à cristaux liquides est utilisé pour afficher des données
susceptibles d’être exploiter par l’utilisateur d’un système (grandeurs mesurées par les
capteurs, résultats de calcule, messages d’alerte, etc.).
La mise en œuvre matérielle d’un afficheur LCD peut se faire de deux manières. En
effet, en fonction du mode de commande (à 4 ou 8 bits) choisis de l’afficheur LCD, sa mise
en œuvre matérielle sera différente :
 En mode 8 bits, la communication entre l’écran et la carte Arduino se fait sur 8 fils.
Ainsi, les octets sont transférés, en une seule étape, sur les lignes DB0 à DB7.
 En mode 4 bits, la communication entre l’écran et la carte Arduino se fait sur 4 fils.
Ainsi, les octets sont transférés, en deux étapes, sur les lignes DB4 à DB7.

II.1. Ajout de la librairie LiquidCrystal sur Arduino IDE


Tout comme pour le DHT-11, l’utilisation d’un afficheur LCD sous Arduino, nécessite
l’utilisation d’une librairie nommée "LiquidCrystal". Il s’agit d’une librairie conçu
spécialement pour le contrôle d’un afficheur LCD alphanumérique par une carte Arduino.
Cette bibliothèque est elle aussi incluse avec le logiciel Arduino IDE. Toutefois, elle doit être
installée avant la première utilisation. Pour cela :
- aller dans Croquis > Inclure une bibliothèque > Gérer les bibliothèques,
- saisir "LCD" dans le filtre de recherche,
- installer la librairie LiquidCrystal
- <Fermer>
Pour intégrer la librairie LiquidCrystal dans un code Arduino, il suffit de suivre la même
procédure que pour la librairie DHT-11.

Y. TRIKI TP N° 3 : Arduino & capteur DHT-11 Page 2


III. Affichage de la température et de l’humidité sur écran LCD
On désire mesurer la température et le taux d’humidité dans une pièce, et ce, en utilisant le
capteur "deux en un" DHT-11 et une carte Arduino. Pour cela, le capteur DHT-11 sera
connecté sur une des broches (analogique ou numériques) de la carte Arduino et les grandeurs
mesurées seront affichées à l’aide d’un afficheur LCD 16x1.
Etape 1 : Circuit à réaliser
1- Réalisez le circuit ci-dessous sur une breadboard (et
éventuellement sous Proteus). Ce circuit comprend une carte
Arduino Mega (ARDUINO MEGA2560 R3), un capteur de
température et d’humidité (DHT11), un afficheur LCD 16x1
(LM020L), un potentiomètre (POT-HG, 10 KΩ), une résistance
de 4.7 KΩ, une source d’alimentation continue de 5V et un
terminal série. Il est a précisé que, dans ce montage, le
potentiomètre est utilisé pour régler le contraste de l’écran LCD.

Etape 2 : Programme Arduino


1- Compléter le programme suivant permettant la mesure de la température (en °C) et de
l’humidité (en %) avec le capteur DHT-11. Ce programme devra afficher les deux grandeurs,
à la fois, sur un écran LCD et le moniteur série.

…………………………………………………… // Appel de la bibliothèque DHT


…………………………………………………………………………………………………...
…………………………………………………… // Appel de la bibliothèque Liquid Crystal

Y. TRIKI TP N° 3 : Arduino & capteur DHT-11 Page 3


/* Création de l’objet DHT, identification du type de capteur et choix de la broche A0
pour lier le capteur à la carte Arduino */
DHT dht(A0, DHT11);
// Initialisation de la liaison à 4 bits de données avec l’écran LCD (Rs, E, D4, D5, D6, D7)
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
/* Définition de deux variables réels, nommées val_t et val_h pour stocker les valeurs de
la température et de l’humidité, respectivement*/
…………………………………………………………………………………………………...
void ……………………………………………………………………………………………...
dht.begin(); // Initialise le capteur DHT-11
…………………………………………………………..... // Initialise le port série
lcd.begin (16,1); // Initialise la communication avec un écran LCD 16*1
lcd.clear (); // Efface l’écran LCD
………………………………………………………………………………………………..
void ……………………………………………………………………………………………...
………... = dht.readTemperature(); // Stocke la température lue dans la variable val_t
………... = dht.readHumidity(); // Stocke le taux d’humidité dans la variable val_h

/* Affichage de la température et du taux d’humidité sur le moniteur série */


……………………………………………………… // Affiche le message "Température : "
……………………………………………………… // Affiche la température lue
……………………………………………………… // Affiche le message "Humidité :"
……………………………………………………… // Affiche le taux d’humidité lue
……………………………………………………… // retour de chariot et saut de ligne

/* Affichage de la température et du taux d’humidité sur l’écran LCD */


lcd.setCursor (0,0); // Positionne le curseur à la colonne 0, ligne 0
lcd.print ("T:"); // Affiche le message "T:"
lcd.print (val_t,0); // Affiche la température, 0 chiffre après la virgule
lcd.print((char)223); // Ajout du symbole °
……………………………………………… // Ajout de la lettre C pour degré Celsius
……………………………………………… // Positionne le curseur à la colonne 7, ligne 0
……………………………………………... // Affiche le message " H:"
……………………………………………... // Positionne le curseur à la colonne 9, ligne 0
……………………………………………... // Affiche l’humidité, 0 chiffre après la virgule
…………………………………………….... //Ajout du symbole %

/* Affichage d’un message d’erreur sur l’écran LCD dans le cas où la température est
supérieur à 25 °C ou l’humidité est supérieur à 60% */
……………………………………………... // Teste si la condition est vérifiée
……………………………………………... // Positionne le curseur à la colonne 13, ligne 0
……………………………………………… // Affiche le message "err" pour erreur
}
……………………………………………… // Si non
lcd.print (" "); // Efface le message d’erreur
…………………………………………………………………………………………………...
……………………………………………… // attend 1 second
…………………………………………………………………………………………………...

Y. TRIKI TP N° 3 : Arduino & capteur DHT-11 Page 4

Vous aimerez peut-être aussi