Ignorer et passer au contenu

Livraison offerte à partir de 50€

Contents Menu Expand Light mode Dark mode Auto light/dark mode

DHT11 : Mesurer température et taux d’humidité ambiant avec l’ESP32 en code Arduino

DHT11 sensor overview

Le capteur DHT11 avec sa protection bleue caractéristique

Le capteur DHT11 est un capteur de température et d’humidité très populaire dans le monde des Makers et du DIY. Son faible prix et sa facilité d’utilisation lui ont attribué ce succès.

Avertissement

Le fait qu’on puisse avoir qu’une mesure par seconde est son principal inconvénient. Ceci dit, il conviendra parfaitement pour fabriquer une station météo connectée basique 🙂.

Prendre en main le capteur DHT11

Il existe un modèle plus haut de gamme, le DHT 22 qui est plus complet. Pour les différencier, on peut regarder les couleurs de leur boîtier : le DHT11 à un boîtier bleu tandis que le DHT22 est en blanc. Le DHT22 est en légèrement plus gros également. Hormis leurs différences, ils s’utilisent exactement de la même façon. Pour en savoir plus sur les différences, je vous encourage à lire la comparaison entre les capteurs DHT11 et le DHT22 .

Quelques caractéristiques techniques du DHT11

Le DHT11 peut être directement alimenté en 3.3V.

Caractéristiques techniques du DHT11

Caractéristiques

DHT11

Précision température

± 2°C

Précision Humidité

± 5%

Plage de température

0-50 °C

Plage Humidité

20-90%

Échantillonnage

1/s

Tension d’alimentation

3-5.5V

Courant

~2.5mA

Les performances sont vraiment basiques, ce qui limite l’utilisation du capteur. Je vous conseille d’utiliser un capteur de la série des BMExxx du fabricant Bosh pour avoir de meilleures mesures.

Branchements du capteur DHT11

Le capteur DHT 11 possède entre 3 et 4 broches en fonction de votre module. Sur le modèle à 4 broches, une ne sert à rien. Malheureusement, il y a différent brochage en fonction du fabricant du module. Voici un récapitulatif de différentes possibilités :

DHT11 variant

Différents brochages sont possibles (celui d’Elegoo est à gauche)

La numérotation se fait depuis la gauche, quand vous tenez le capteur face à vous (la partie avec la grille en face de vous).

Correspondance des broches

Module DHT11

ESP32

1 ( S )

GPIO17

2

3V3

3 ( - )

GND

Correspondance des broches

Module DHT11

ESP32

1

GND

2

GPIO17

3

3V3

Correspondance des broches

Module DHT11

ESP32

1

3V3

2

GPIO17

3

Ne pas connecter

4

GND

Mis à part les broches d’alimentations, le DHT11 possède une unique broche pour transmettre les données des capteurs.

Schéma électrique pour utiliser le module DHT11 avec un ESP32

Si le module ne contient pas de résistance de pullup, il faut en rajouter une entre 4.7kΩ (ou 10kΩ )entre les broches 3V3 et le signal (GPIO17 ). Vous pouvez toujours en rajouter une, cela ne fera pas de mal.

N’importe quelle broche de sortie peut être utilisée. Ici, on utilise la broche GPIO17 . Dans les schémas suivants j’utilise le capteur DHT11 d’Elegoo, n’oubliez pas d’adapter à votre modèle si celui-ci est légèrement différent 🙂.

Câblage du DHT11 et esp32 wroom

Câblage du DHT11 avec une carte uPesy ESP32 Wroom DevKit

Câblage sur plaque de prototypage du DHT11 et esp32 wroom

Câblage du DHT11 avec l’esp32 wroom Devkit sur une plaque de prototypage

Avertissement

Vérifier que vous alimentez bien le module en 3.3V et non 5V pour avoir un signal de données de 3.3V également.

Mesurer la température et l’humidité ambiante du DHT11 avec du code Arduino

Puisque le DHT11 utilise un protocole propriétaire, il est indispensable d’utiliser une librairie pour communiquer facilement avec le capteur. Je vous conseille d’utiliser la librairie DHT Sensor d’Adafruit qui fonctionne correctement sur l’ESP32 .

Voici comment l’installer depuis l’Arduino IDE :

Installation de la librairie DHT11 arduino ide

Installation de la librairie DHT11 sur Arduino IDE

Une fois que la librairie est installée on utilise le code suivant qui récupère la température et le taux d’humidité du DHT11.

#include "DHT.h"

#define DHTPIN 17
#define DHTTYPE DHT11
//DHTTYPE = DHT11, mais il existe aussi le DHT22 et 21

DHT dht(DHTPIN, DHTTYPE); // constructeur pour déclarer notre capteur

void setup() {
  Serial.begin(115200);
  dht.begin();
}

void loop() {
  delay(1000);
  // Le DHT11 renvoie au maximum une mesure toute les 1s
  float h = dht.readHumidity();
  //Lis le taux d'humidite en %
  float t = dht.readTemperature();
  //Lis la température en degré celsius
  float f = dht.readTemperature(true);
  //Avec (true), renvoi la température en fahrenheit

  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Echec reception");
    return;
    //Renvoie une erreur si l'ESP32 ne reçoit aucune mesure
  }

  Serial.print("Humidite: ");
  Serial.print(h);
  Serial.print("%  Temperature: ");
  Serial.print(t);
  Serial.print("°C, ");
  Serial.print(f);
  Serial.println("°F");
  // Transmet les mesures reçues dans le moniteur série
}

Note

Le DHT.h au début du programme permet d’inclure la librairie DHT Sensor.

Voici ce que l’on obtient dans la console :

Lecture des mesures arduino ide console

Note

Vous pouvez souffler sur le capteur DHT11, comme quand on souffle sur une vitre glacée pour enlever la buée. Vous devriez voir le taux d’humidité grimper en flèche.

Ce n’est pas possible d’avoir plus de mesures par seconde, ce capteur n’est pas très adapté pour détecter très rapidement un changement de température brutal.

Faire des mesures asynchrones avec le DHT11

Vous remarquerez que la mesure est bloquante: l’ESP32 ne peut rien faire d’autre pendant les mesures. Une solution évidente est de remplacer la fonction delay() avec la fonction millis() dans une condition if . Mais malgré tout, l’échange de données avec le DHT11 sera toujours bloquant : votre programme sera bloqué par à-coups.

La meilleure solution est d’utiliser une librairie qui fonctionne avec des timers et des interruptions, pour que les mesures soient faites en tâches de fond :

Cette section est réservée aux abonnés. Il vous reste 36% à découvrir.

Devenir membre premium

Déjà abonné ? Connectez-vous

Nous utilisons des cookies pour que votre visite sur la boutique soit la plus agréable possible. Politique de confidentialité