Introduction

Le DHT11 (Digitale Température Humidité 11) est un capteur qui génère un signal digital en sortie codant une valeur de température et d’humidité mesurée en temps réel.
Le capteur de température et d’humidité peut-être utilisé dans plein de domaine, que ça soit pour savoir la température extérieur, pour gérer l’arrosage d’une petite serre autonome… C’est pour cela que nous avons fait un petit tableau récapitulatif des caractéristiques du capteur :
DHT11 | Valeur de fonctionnement | Précision |
---|---|---|
Température (en °c) | [0°C – 50°C] | +/- 2 °C |
Humidité (en %) | [20% – 80%] | +/- 5% |

Attention au température négative !
Comme vous avez pu voir dans le tableau, le capteur DHT11 ne peut pas mesurer des températures négative ! Attention donc en cas d’utilisation à l’extérieur !
Voici les différentes pins du capteur DHT11 :
- Signal : Permet d’envoyer la valeur à la carte Arduino
- Vcc : La tension d’alimentation (5V)
- GND : La masse


Comment reproduire nos schémas Fritzing ?
Pour pouvoir reproduire nos circuits sur Fritzing, vous devez avoir le composant capteur de température DHT11. Vous pouvez regarder notre tutoriel sur comment l’installer dans le logiciel !
Librairie DHT11
a) Installation de la librairie
Pour pouvoir compiler les programmes faisant fonctionner le capteur de température, vous allez avoir besoin de la librairie DHT11.
C’est un dossier en .zip, donc pour l’installer, vous devez aller dans sketch, puis include library et add .zip library. Vous pouvez retrouver plus d’explication sur notre cours sur les librairies.
b) Contenu de la librairie
Une librairie n’est jamais obligatoire dans un programme. Elle permet de limiter la longeur du code et de créer des fonctions rendant plus facile la manipulation du composant. On va donc voir les différentes fonctions que propose la librairie DHT11 et surtout celle qui pourrait vous être utile :
- DHT_nonblocking( pin, type) : Fonction qui permet d’initialiser la librairie avec le bon capteur et la broche auquel il est assigné.
- measure( float *temperature, float *humidity ) : Permet de récupérer les valeurs de température et d’humidité
- read_temperature( ) : Calcul de la température.
- read_humidity( ) : Calcul de l’humidité.
- read_nonblocking( ) : Fait en sorte que le capteur continu de lire la température et l’humidité en faisant des petites pauses pour refroidir et économiser de l’énergie.
Afficher valeur d'humidité et température
On va maitenant voir comment afficher la température et l’humidité sur le moniteur série.N’oubliez pas d’installer la librairie du capteur de température pour faire fonctionner le programme.

#include <dht_nonblocking.h> // On appelle la librairie du capteur
#define DHT_SENSOR_TYPE DHT_TYPE_11 // On définit que l'on a le DHT11 car la libraire fonctionne pour plusieurs capteur de température
static const int capteur_temperature = 2; // On définit ou est branché le capteur de température
DHT_nonblocking dht_sensor( capteur_temperature, DHT_SENSOR_TYPE ); // On initialise la librairie avec la bonne broche et le bon type de capteur
void setup( ){
Serial.begin( 9600);} // On initialise le moniteur série.
static bool measure_environment( float *temperature, float *humidite ){ // On créer une fonction pour récupérer la valeur
static unsigned long pause_entre_mesure = millis( ); // On définit le temps avec lequel on va faire les mesures
if( millis( ) - pause_entre_mesure > 3000ul ) { // On calcule la mesure toue les 4 secondes
if( dht_sensor.measure( temperature, humidite ) == true ){ // On prends la nouvelle valeur si elle a évolué
pause_entre_mesure = millis( );
return( true );
}
}
return( false );}
void loop(){
float temperature; // On déclare une variable pour récupérer la valeur de la température
float humidite; // On déclare une variable pour récupérer la valeur de la température
if( measure_environment( &temperature, &humidite ) == true ) { // Si les valeurs ont changésdata:image/pjpeg;base64,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
// Affichage de la température
Serial.print( "T = " );
Serial.print( temperature, 1 );
Serial.print( " deg. C, H = " );
// Affichage de l'humidité
Serial.print( humidite, 1 );
Serial.println( "%" );
}
}
Voici ce que l’on peut voir sur le moniteur série :

Mini station Météo
Nous avons fait un projet de mini station météo ou le capteur DHT11 mesure la température et l’humidité. Ces deux valeurs sont ensuite affiché sur un écran 16×2. Vous pouvez retrouvez tout les détails de ce projet sur notre cours sur l’écran lcd 16×2.
Allumer des leds en fonction de la température
On va maintenant voir comment allumer différente led en fonction de la température mesuré par le capteur. On va pour cela utiliser 4 leds qui seront allumés en fonction de la température :
Led | Température |
---|---|
Led rouge | Supérieur à 27 °C |
Led orange | compris entre 17°C et 27°C |
Led verte | compris entre 17°C et 5°C |
Led bleu | inférieur à 5°C |
Voici le schéma du circuit :

#include <dht_nonblocking.h> // On appelle la librairie du capteur
#define DHT_SENSOR_TYPE DHT_TYPE_11 // On définit que l'on a le DHT11 car la libraire fonctionne pour plusieurs capteur de température
int led_bleu_broche = 7; // On assigne la LED bleu à la broche 7.
int led_verte_broche = 4; // On assigne la LED verte à la broche 4.
int led_orange_broche = 3; // On assigne la LED bleu à la broche 3.
int led_rouge_broche = 2; // On assigne la LED bleu à la broche 2.
static const int capteur_temperature = 13; // On définit ou est branché le capteur de température
DHT_nonblocking dht_sensor( capteur_temperature, DHT_SENSOR_TYPE ); // On initialise la librairie avec la bonne broche et le bon type de capteur
void setup( ){
Serial.begin( 9600); // On initialise le moniteur série.
pinMode(led_bleu_broche, OUTPUT); // On assigne la LED bleu en sortie
pinMode(led_verte_broche, OUTPUT); // On assigne la LED verte en sortie
pinMode(led_orange_broche, OUTPUT); // On assigne la LED orange en sortie
pinMode(led_rouge_broche, OUTPUT); // On assigne la LED rouge en sortie
}
static bool measure_environment( float *temperature, float *humidite ){ // On créer une fonction pour récupérer la valeur
static unsigned long pause_entre_mesure = millis( ); // On définit le temps avec lequel on va faire les mesures
if( millis( ) - pause_entre_mesure > 3000ul ) { // On calcule la mesure toue les 4 secondes
if( dht_sensor.measure( temperature, humidite ) == true ){ // On prends la nouvelle valeur si elle a évolué
pause_entre_mesure = millis( );
return( true );
}
}
return( false );}
void loop(){
float temperature; // On déclare une variable pour récupérer la valeur de la température
float humidite; // On déclare une variable pour récupérer la valeur de la température
if( measure_environment( &temperature, &humidite ) == true ) { // Si les valeurs ont changésdata:image/pjpeg;base64,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
// Affichage de la température
Serial.print( "T = " );
Serial.println( temperature, 1 );
if (temperature <=5) {
digitalWrite(led_bleu_broche,HIGH); // On allume la LED bleu
digitalWrite(led_verte_broche,LOW); // On éteint les autres leds
digitalWrite(led_orange_broche,LOW);
digitalWrite(led_rouge_broche,LOW);
}
if (5<temperature && temperature <=17) {
digitalWrite(led_verte_broche,HIGH); // On allume la LED vert
digitalWrite(led_bleu_broche,LOW); // On éteint les autres leds
digitalWrite(led_orange_broche,LOW);
digitalWrite(led_rouge_broche,LOW);
}
if (17<temperature && temperature <=27) {
digitalWrite(led_orange_broche,HIGH); // On allume la LED orange
digitalWrite(led_verte_broche,LOW); // On éteint les autres leds
digitalWrite(led_bleu_broche,LOW); //
digitalWrite(led_rouge_broche,LOW); //
}
if (27<temperature) {
digitalWrite(led_rouge_broche,HIGH); // On allume la LED rouge
digitalWrite(led_verte_broche,LOW); // On éteint les autres leds
digitalWrite(led_orange_broche,LOW);
digitalWrite(led_bleu_broche,LOW);
}
}
}
Pour aller plus loin : Contrôler votre composant avec Python
Vous pouvez aussi contrôler votre capteur de température avec python. On a fait un cours où l’on affiche la température sur la console python.
