DHT11 et DHT22 de chez Aosong

Facebooktwitterredditpinterestlinkedinmail

Les capteurs Aosong DHT11 et DHT22 sont des sondes de température et humidité digitales. Ils contiennent un capteur d’humidité capacitif, une thermistance, ainsi qu’un CAN (convertisseur analogique numérique, ADC en Anglais). La communication se fait par une interface à 1 fil propriétaire (ce n’est pas le One-Wire de chez Dallas).

Caractéristiques

Aosong DHT22Aosong DHT11

Caractéristique DHT11 DHT22
Couleur du boîtier Bleu clair Blanc
Tension 3,3 à 5,5 v
Consommation 2,5 mA max
Mesure d’humidité 20 à 80 % +/- 5 % 0 à 100 % +/- 2 à 5 %
Mesure température 0 à 50 °C +/- 2 °C -40 à 80 °C +/- 0,5 °C
Fréquence mesure 1 Hz 0,5 Hz
Distance max 100 m 20 m

Note: Le DHT22 peut aussi être nommé AM2302. Il existe deux versions du boîtier. Une avec sortie sur broches et une avec sortie sur fils.

Le brochage est commun à cette famille de composants. Lorsqu’on regarde le boîtier de face (côté grille vers soi), broches en bas, on trouve de gauche à droite :

  1. L’alimentation
  2. Le bus à 1 fil
  3. Une broche non connectée
  4. La masse

Le seul composant requis est une résistance pull-up de 10 kOhms à placer entre l’alimentation et le bus de données.

Protocole de communication

La communication sur un fil est propriétaire. Chaque session dure environ 4 ms, et se déroule comme suit :

  • Par défaut, le bus de données est à l’état haut du côté du DHT.
  • Le Raspberry Pi le maintient à l’état bas pendant 18 ms pour informer le DHT qu’il est prêt à recevoir. Il envoie ensuite une impulsion haute de 20 à 40 µs et se met en attente de réponse.
  • Quand le DHT reçoit ce signal de démarrage, il va placer le bus de données à l’état bas pendant 80 µs, puis à l’état haut pendant 80 µs en guise d’accusé de réception.
  • Pendant la transmission des données, chaque bit émis par le DHT commence par un état bas de 50 µs suivi d’un état haut de 26 à 28 µs pour un « 0 »; ou de 70 µs pour un « 1 ».
  • Au total, 40 bits (ou 5 octets) seront transmis. 4 de données plus 1 de somme de contrôle (voir décodage).

Lorsque la transmission est valide, la somme de contrôle doit contenir les 8 bits de poids le plus faible de l’addition des 4 octets de données.

Décodage du DHT11

Un DHT11 retournera 4 valeurs sur 8 bits non signés :

  • la partie entière du taux d’humidité en %,
  • la partie décimale du taux d’humidité en %,
  • la partie entière de la température en °C,
  • la partie décimale de la température en °C.

Décodage du DHT22

Un DHT22 retournera 2 valeurs de 16 bits signés :

  • Le taux d’humidité en dixièmes de pourcent.
  • La température en dixièmes de °C.

Le premier bit (de poids fort, donc) indique le signe. Positif pour 0 et négatif pour 1.

Chacune de ces deux valeurs devra être divisée par 10.

Mise en pratique 1: Outil en C

Note: La compilation de ces codes sources nécessite l’installation de WiringPi.

L’outil est basé sur un précédent travail ( »dht11.c ») d’auteur inconnu, disparu depuis (le code, pas l’auteur, quoi que, je n’en sais rien), et assez compliqué à trouver. Comme son nom le précise, c’est la version pour la sonde DHT11. Le second est basé sur le premier. J’ai ajouté et retiré quelques fonctionnalités et uniformisé les conventions de code.

Ils sont tous deux très similaires, seul la conversion des données lues changent d’un module à l’autre, au sortir de la boucle  »for » de la fonction  »read_dhtxx_dat() ».

Version DHT11 : Afficher le code source

Exemple de retour :

On peut compiler ce source avec la commande :

Version DHT22 : Afficher le code source

Exemple de retour :

On peut compiler ce source avec la commande :

Note: Cet article n’est pas terminé, merci de visiter cette page à nouveau dans quelque temps.

Références

  • Aosong: Fabricant de ces sondes.
Facebooktwitterredditpinterestlinkedinmail

Un commentaire

  1. bonjour, je suis en plein projet avec mon raspberry quand je voulu utiliser les pin gpio pour un capteur dht22 donc j’ai installer wiringPi avec succes mais les tests du capteur ne fonctionne pas
    Pouvais-vous m’aidez ?
    merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *