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 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.

DHT22 sensor overview

Le capteur DHT22 avec sa protection blanche caractéristique

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.

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

RPi Pi Pico

1 (VCC )

3V3

2 (GND )

GND

3 (OUT )

GP13

Correspondance des broches

Module DHT22

RPi Pi Pico

1 (+ )

3V3

2 (OUT )

GP13

3 (- )

GND

Correspondance des broches

Module DHT22

RPi Pi Pico

1

3V3

2

GP13

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 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 🙂.

dht22 Raspberry Pi Pico circuit Fritzing

Pas facile de réparer les broches 😕

dht22 upesy rp2040 board circuit Fritzing

C’est plus simple quand le numéro est indiqué 😉

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 :

Câblage sur plaque de prototypage du DHT22 et RP2040

Câblage du DHT22 avec une carte uPesy RP2040 DevKit

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 :

Installation de la librairie DHT22 Arduino ide

Installation de la librairie DHT22 sur 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 :

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

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 premium

Déjà abonné ? Connectez-vous