DHT22 : Mesurer température et taux d’humidité ambiant avec la Raspberry Pi Pico en code Arduino
(Mis à jour le 06/01/2023)
Le capteur DHT22 est le grand frère du DHT11 : le célèbre capteur low cost de température et d’humidité pour les projets DIY. Il permet d’avoir une meilleure précision sur les mesures. Heureusement son fonctionnement est le même.
Avertissement
Même si le DHT22 est mieux que le DHT11, son principal inconvénient reste le même : son faible nombre de mesures par seconde : 0.5Hz, soit 1 mesure toutes les 2 secondes… Il conviendra cependant parfaitement pour faire une station météo connectée DIY 🙂.
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 voir 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 redirige vers le tutoriel du DHT11 .
Note
Le DHT22 est parfois appelé AM2302.
Les caractéristiques du DHT22
Le DHT22 peut être directement alimenté en 3.3V, ce qui est très pratique pour la Pi Pico qui fonctionne en 3.3V.
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 RPi Pi Pico
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 (GP13
). 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 GP13
. N’oubliez pas d’adapter le circuit à votre modèle si celui-ci est légèrement différent 🙂.
Voici un exemple avec la carte uPesy RP2040 DevKit, une Pico améliorée et le premier type de module DHT22 avec le signal tout à droite :
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 la Pi Pico.
Voici comment l’installer depuis l’Arduino IDE :
Une fois que la librairie est 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 13
#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 la Pico 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çu 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
On peut calculer la température réellement ressentie en utilisant l’indice de chaleur (Heat Index en anglais). 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 intègre une fonction intégrée pour le calculer, nommée computeHeatIndex()
. Voici un sketch Arduino qui calcule et affiche la température ressentie :
Cette section est réservée aux abonnés. Il vous reste 72% à découvrir.
Devenir membre premiumDéjà abonné ? Connectez-vous