Arduino, utiliser un DHT22 (AM2302)

Une des solution à bas coût pour une mesure de la température et de l’humidité est de passer par un DHT22 (ou DHT11 ou AM2302). Voici un petit tutoriel pour faire cela.

La mesure de température ou d’humidité est parfois utile (cas d’une station météo), nous avons le choix entre plusieurs solution (utilisation par exemple d’un BMP180), l’intérêt du DHT22 (ou DHT11 qui dispose d’une moins bonne précision) est son coût, peut élever, facile à mettre en place.

Pré-requis

Matériel

Assurer vous d’avoir en votre possession, le capteur DHT22, j’ai réalisé ce tutoriel avec cet arduino, les deux sont disponibles sur amazon, suivre les liens pour les voir et pourquoi pas les commander.

Utiliser également une breadboard (platine de test) pour simplifier le câblage et prototypage -> disponible ici.

Logiciel

Il faut que vous ayez déjà installé Arduino sur votre OS, voir l’article « installer Arduino« .

La bibliothèque pour la gestion existe déjà, je décrirais son installation plus bas.

Présentation

Le DHT a une précision tout à fait convenable pour son coût :

  • température de -40°C à +80°C, +/-0.5°C
  • humidité relative entre 0 et 100 % à +/-2%

Installation de la bibliothèque

Comme pour beaucoup de composant considéré comme incontournables, des bibliothèques existe déjà pour l’utilisation du DHT 11, DHT 22 (AM2302, AM2321) et du DHT21 (AM2301).

Rendez-vous sur la page le git d’adafruit, pour télécharger la bibliothèque -> voici la page.

Dans le logiciel Arduino, cliquez sur Croquis/Importer bibliothèque/Add library… puis allez récupérer l’archive précédemment télécharger, elle doit se présenter en fichier ZIP, les différents fichiers se trouve directement dans l’archive, il ne doit pas y avoir de dossier intermédiaire.

Renommer l’archive en DHT.zip.

Update du 26/02/2016, pour une raison inconnue (certainement une mise à jour des librairies), lors de la compilation du sketch en utilisant simplement cette librairie (valide dans un premier temps), elle ne passe plus et indique que la librairie Adafruit_Sensor.h est manquant, pour pallier à ça, rendez-vous sur ce git, et placer le contenu du dossier compressé dans vos librairies ou bien en passant par l’IDE dans croquis => Inclure une bibliothèque => Gérer les bibliothèque, rechercher et installer adafruit Unified Sensor.

Une fois installée, redémarrer le logiciel puis allez sur Fichier/exemples/DHT et cliquez sur DHTtester.

Le code de test s’affiche dans une nouvelle fenêtre.

Ce code permet d’afficher sur le moniteur série Arduino la température (en °C et °F) et l’humidité relative.

Câblage du DHT22 sur l’arduino

Voici un dessin pour montrer le branchement :

dht22
dht22

La résistance entre les broches data (connecter à la pin D8 de l’arduino) et l’alimentation à pour valeur 4,7kΩ, si cela ne fonctionne pas avec cette valeur, essayez avec une 10kΩ.

Code Arduino pour le test de l’arduino

Celui provient directement de l’exemple fourni par la bibliothèque :

#include "DHT.h"

#define DHTPIN 8     // le numéro de la pin digital utilisée

// Décommentez la ligne du capteur que vous utilisez
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Initialise le capteur
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");

  dht.begin();
}

void loop() {
  // Délai de 2 seconde entre les prise de la mesure
  delay(2000);

  // la lecture de la température et de l'humidité prend 250 millisecondes!
  // Le capteur peut lire les valeurs toutes les 2 secondes 
  float h = dht.readHumidity();
  // lit la temperature en Celsius (par défaut)
  float t = dht.readTemperature();
  // lire temperature en Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Vérifie si la lecture est corecte (et recommence).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Impossible de lire le capteur!");
    return;
  }

  // Conversion en Fahrenheit (par défaut)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
}

Le résultat sur le moniteur série

Voila ce qu’on obtient sur le moniteur série de l’arduino :

dht moniteur série arduino
dht moniteur série arduino

Bon montage.

3 Replies to “Arduino, utiliser un DHT22 (AM2302)”

  1. salut

    J’ai fait le montage et installer la bibliotheque mais arduino me renvoit un message d’erreur dans la bibliotheque

    In file included from E:\Arduino\libraries\DHT-sensor-library-master\DHT_U.cpp:22:0:

    E:\Arduino\libraries\DHT-sensor-library-master\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Erreur de compilation pour la carte Arduino/Genuino Uno

    De plus, y a t il besoin d’étalonner le capteur?

    • Donc après un petit test, lors de la compilation j’ai eu ce message, une bibliothèque manquante adafruit_sensor.h, quand tu fais une recherche via l’IDE arduino Croquis => Inclure une bibliothèque => Gérer les bibliothèques et que tu recherche adafruit unified sensor, il y a une bibliothèque requise pour les capteurs « unified », tu l’installes, chez moi l’erreur de compilation a disparu

Laisser un commentaire