Ignorer et passer au contenu

Livraison offerte à partir de 50€ d'achats, livrée sous 48h !

Livraison à partir de seulement 2.50€ !

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

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

(Mis à jour le 04/01/2023)

Le capteur DHT22 est le grand frère du DHT11, le capteur low cost de température et d’humidité pour les projets DIY.

Avertissement

Il offre une meilleure précision de mesure, mais a la même limitation que le DHT11 : un faible nombre de mesures par seconde (0.5Hz, soit 1 mesure toutes les 2 secondes) !

DHT22 sensor overview

Le capteur DHT22 avec sa protection blanche caractéristique

Prendre en main le capteur DHT22

Le DHT22 fait partie de la famille des DHTxx. Une comparaison entre les capteurs DHT11 et le DHT22 est disponible pour mieux comprendre les différences. Le DTH22 a un boîtier plastique blanc tandis que celui du DHT11 est bleu. Si le vôtre est bleu, je vous invite à lire le tutoriel du DHT11 .

Note

Parfois le DHT22 est désigné par la référence AM2302.

Les caractéristiques du DHT22

Caractéristiques techniques du DHT22

DHT22

Précision température

± 0.5°C

Précision Humidité

± 2%

Plage de température

-40-80 °C

Plage Humidité

0-100%

Échantillonnage

0.5/s

Tension d’alimentation

3-6V

Courant

~1.5mA

Note

Le DHT22 est plus approprié que le DHT11 pour mesurer des températures à l’extérieur, car il peut mesurer des températures négatives, jusqu’à -40°C. Pour une serre connectée par exemple, le DHT22 est conseillé !

Les performances du DHT22 sont vraiment basiques et ne sont pas aussi fiables que les capteurs BMExxx du fabricant Bosh. Au final, tout dépend de votre application 😉

Branchements du capteur DHT22

Le capteur DHT22 possède entre 3 et 4 broches en fonction de votre module. En fait le capteur en lui-même possède 4 broches, mais puisqu’une ne sert à rien, les modules qui l’intègrent n’exposent que les 3 broches utiles. Méfiez-vous, car il existe plusieurs variations du brochage du module DHT22 en fonction du fabricant.

La numérotation se fait depuis la gauche, quand vous tenez le capteur face à vous (la partie avec la grille en face de vous). L’alimentation est toujours la première broche, les autres peuvent varier.

Correspondance des broches

Module DHT22

ESP32

1 (VCC )

3V3

2 (GND )

GND

3 (OUT )

GPIO23

Correspondance des broches

Module DHT22

ESP32

1 (+ )

3V3

2 (OUT )

GPIO23

3 (- )

GND

Correspondance des broches

Module DHT22

ESP32

1

3V3

2

GPIO23

3

Ne pas connecter

4

GND

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

Schéma électrique pour utiliser le module DHT22 avec une ESP32

Si le module ne contient pas de résistance de pullup, il faut en rajouter une entre 4.7kΩ et 10kΩ entre les broches 3V3 et le signal (GPIO23 ). 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 GPIO23 . N’oubliez pas d’adapter le circuit à votre modèle si celui-ci est légèrement différent 🙂.

dht22 esp32 circuit Fritzing

Circuit électrique à réaliser

dht22 variant esp32 circuit Fritzing

Circuit électrique à réaliser

dht22 raw component esp32 circuit Fritzing

Circuit électrique à réaliser

Avertissement

Alimentez bien le module en 3.3V et non 5V pour avoir un signal de données de 3.3V également.

Câblage sur plaque de prototypage du DHT22 et RP2040

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

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

Pour communiquer avec le DHT22, qui utilise un protocole propriétaire, vous devez utiliser une librairie. Je recommande la librairie DHT Sensor d’Adafruit qui est compatible avec l’ESP32.

Installation de la librairie DHT22 arduino ide

Installation de la librairie DHT22 sur Arduino IDE

Une fois installée, on peut utiliser le code suivant pour récupérer la température et l’humidité à partir du DHT22.

#include "DHT.h"

#define DHTPIN 23
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

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

void loop() {
  delay(2000);
  // Le DHT22 renvoie au maximum une mesure toute les 2s
  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), renvoit la température en fahrenheit

  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Echec reception"));
    return;
    // Renvoit 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 vers l'ordinateur via l'usb
}

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 DHT22, comme lorsque vous soufflez sur une vitre couverte de givre. Vous devriez constater une augmentation rapide du taux d’humidité.

Connaître l’indice de chaleur ambiante | Température ressentie

Pour calculer cette température ressentie, on peut utiliser l”indice de chaleur . Il s’agit d’une valeur en °C qui est fondée sur la température et le taux d’humidité relative dans l’air. Plus le taux d’humidité dans l’air est important à une température donnée, plus la température ressentie est importante. La librairie DHT Sensor fournit une fonction intégrée pour le calculer, nommée computeHeatIndex() .

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

Devenir membre premium

Déjà abonné ? Connectez-vous