dimanche 1 novembre 2020

Mesurer la température et l'humidité relative avec un DHT22 (AM2302) et un Raspberry Pi

Le capteur DHT22 (aussi appelé AM2302) permet de mesurer l'humidité relative de l'air ainsi que la température ambiante. Nous l'utilisons aujourd'hui avec un Raspberry Pi programmé en Python. 


Le capteur comporte un condensateur dont la capacité dépend de l'humidité. Puisqu'il faut également connaître la température pour pouvoir calculer l'humidité relative, le DHT22 comporte également un capteur de température intégré.

J'ai utilisé un DHT22 qui est incorporé à un module comportant 3 broches: + , out et -. Ce module comporte déjà une résistance de tirage entre les broches + et OUT. Si ce n'est pas le cas pour le capteur que vous utilisez, il est recommandé de placer une résistance de 4,7 kΩ ou 10 kΩ environ entre DATA et VCC.

Pour ma part, j'ai branché mon module au Raspberry Pi de la façon suivante:
  • Broche + du DHT22: sortie 3,3 V du Raspberry Pi
  • Broche out du DHT22: broche GPIO 4 du Raspberry Pi
  • Broche - du DHT22: broche GND du Raspberry Pi

J'ai ensuite installé la bibliothèque d'Adafruit en tapant les 3 lignes suivantes dans le terminal:

pip3 install adafruit-blinka
pip3 install adafruit-circuitpython-dht
sudo apt-get install libgpiod2

Le script ci-dessous, inspiré d'un exemple fourni par Adafruit, affiche la température, l'humidité relative, le point de rosée et l'indice humidex.

-
-

Si vous décommentez la ligne 38, un message d'erreur sera affiché en cas d'échec de la lecture du capteur. Dans mon cas, j'ai eu la surprise de constater qu'environ une lecture sur quatre échouait avec une de ces deux mentions: "A full buffer was not returned. Try again." ou encore "Checksum did not validate. Try again.".  Après avoir vainement tenté de trouver une façon d'éviter ces erreurs, j'ai fini par me résigner et à simplement ne pas afficher le message d'erreur. De toute façon, la température et l'humidité sont des paramètres qui varient lentement, on a donc tout le temps de reprendre notre mesure si elle a échoué.

À lire également:

J'ai déjà utilisé un DHT22 avec un Arduino Uno


Yves Pelletier (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire