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) !
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
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.
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 🙂.
Avertissement
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 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.
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 :
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 premiumDéjà abonné ? Connectez-vous