Les capteurs de la série DHT (DHT11, DHT21, DHT22, DHT33, DHT44) permettent de mesurer l’humidité et la température de l’air ambiant à l’aide de votre Arduino. Le premier de la série, le DHT11 est un capteur économique parfait pour débuter ou des applications peu exigeantes en précision et vitesse de mesure. Le DHT22 (ou DHT21) coûte environ deux fois plus cher que le DHT11 mais vous offrira une plage de mesure et une précision plus importante.
Le DHT22 permet également de mesurer des températures négatives à partir de -40°C.
Le DHT21 est très similaire au DHT22. Vous le trouverez le plus souvent vendu dans un boitier à visser muni de 3 câbles de raccordement. Il est cependant plus difficile à trouver sur les sites marchands.
Beaucoup moins répandus, les capteurs DHT33 et DHT44 feront l’objets d’un article ultérieur.
Sommaire
Comparatif technique DHT11, DHT21 et DHT22
Plutôt que de passer en revue toutes les caractéristiques techniques, voici un petit tableau de comparaison des principales caractéristiques techniques du DHT11, DHT21 et DHT22.
DHT11 | DHT21 | DHT22 | |
Alimentation | De 3 à 5V | De 3,5 à 5,5V | De 3,3 à 6 V |
Consommation (lors d’une mesure, au repos) | 2,5mA | 1,5mA
50 µA |
|
Plage de mesure d’humidité | de 20 à 80% (précision 5%) | de 0 à 100% (précision 2 à 5%) | de 0 à 100% (précision 2 à 5%) |
Plage de mesure de température | de 0 à 50°C (± 2°C) | de -40 to 80°C (±0.5°C) | de -40 to 80°C (±0.5°C) |
Fréquence de mesure maxi | 1 par seconde | 4 par seconde | 4 par seconde |
Poids et dimensions | 15.5mm x 12mm x 5.5mm | 59 mm x 26 mm x 14 mm
14 g |
25 x 15 x 9 mm |
Connexion | 4 broches ou 3 si monté sur module | 3 câbles | 4 broches ou 3 si monté sur module ou boitier à visser |
Documentation technique | DHT-11 | DHT21 | DHT22 |
Correspondances des dénominations
Vous pouvez trouver ces capteurs sous différentes dénominations dont voici une table de correspondance.
- DHT11 = RHT01
- DHT21 = RHT02= AM2301 = HM2301
- DHT22 = RHT03= AM2302
- DHT33 = RHT04 = AM2303
- DHT44 = RHT05
Identification des broches
De gauche à droite
- 1 : VCC (de 3 à 5V)
- 2 : Signal
- 3 : Non utilisé
- 4 : GND
Certains fabricants proposent également le DHT11 et le DHT22 déjà montés sur un module. Dans ce cas, il n’y a que 3 broches à cabler.
Branchement du DHT22
Coté câblage, rien de bien compliqué, il n’y a que 3 broches à connecter. J’ai représenté un Arduino Uno sur le schéma de câblage ci-dessous mais il sera identique si vous utilisez un Raspberry.
Pour les utilisateurs de Fritzing, vous trouverez les capteurs DHT11, DHT21 DHT22 sous la dénomination RHT
Code Arduino pour réaliser une mesure simple
Pour réaliser vos premières mesures, voici un petit programme à installer sur votre Arduino.
// Test des capteurs d'humidité et de température DHT-11 / DHT-21 / DHT-22
// Code adapté de l'exemple DHTTester de ladyada (Adafruit)
// Projets DIY - 22/01/2016
#include "DHT.h" // Librairie des capteurs DHT
#define DHTPIN 2 // Changer le pin sur lequel est branché le DHT
// Dé-commentez la ligne qui correspond à votre capteur
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Initialisation du capteur pour un Arduino à 16mhz par défaut
// Il faudra modifier le 3ème paramètres pour une autre carte (sinon le capteur renvoie 0). Quelques valeurs : 8mhz => 3, 16mhz => 6, 84mhz => 84
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
}
void loop() {
// Délai de 2 secondes entre chaque mesure. La lecture prend 250 millisecondes
delay(2000);
// Lecture du taux d'humidité
float h = dht.readHumidity();
// Lecture de la température en Celcius
float t = dht.readTemperature();
// Pour lire la température en Fahrenheit
float f = dht.readTemperature(true);
// Stop le programme et renvoie un message d'erreur si le capteur ne renvoie aucune mesure
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Echec de lecture !");
return;
}
// Calcul la température ressentie. Il calcul est effectué à partir de la température en Fahrenheit
// On fait la conversion en Celcius dans la foulée
float hi = dht.computeHeatIndex(f, h);
Serial.print("Humidite: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print("Temperature ressentie: ");
Serial.print(dht.convertFtoC(hi));
Serial.println(" *C");
}
Que permet de faire la librairie DHT ?
Voyons maintenant ce que nous pouvons faire avec la librairie DHT.
- DHT(uint8_t pin, uint8_t type, uint8_t count=6) : initialisation du capteur
- pin : broche sur laquelle est branchée la sortie numérique du capteur
- type : DHT11, DHT22, DHT21 ou AM2301
- count : par défaut l’Arduino fonctionne à 16mhz
- readTemperature(bool Unit) : lire la température
- Unit : TRUE pour récupérer la température en Fahrenheit (nécessaire pour calculer la température ressentie)
- convertCtoF(float) conversion de la température en Fahrenheit
- convertFtoC(float) conversion de la température en Celcius
- computeHeatIndex(float tempFahrenheit, float percentHumidity) : calcul la température ressentie. Utilisez convertFtoC pour convertir la température en Celcius.
- readHumidity()
Si vous avez besoin d’aller plus loin, je vous conseille cet article publié sur le Playground Arduino.
Avez-vous aimé cet article ?
[Total: 3 Moyenne: 4.7]