Capteur DHT11/DHT22 avec Arduino | Tutoriel

Capteur DHT11/DHT22 avec Arduino |  Tutoriels de nerd aléatoires

Cet article est un guide pour les capteurs de température et d’humidité DHT11 et DHT22 avec l’Arduino. Nous expliquerons son fonctionnement, montrerons certaines de ses fonctionnalités et partagerons un exemple de projet Arduino que vous pourrez modifier pour l’utiliser dans vos propres projets.

Capteur DHT11DHT22 avec Arduino Tutoriels de nerd aleatoires

Pour plus de guides sur d’autres capteurs populaires, consultez notre compilation de plus de 60 tutoriels et projets Arduino : Plus de 60 projets et tutoriels Arduino.

Présentation des capteurs DHT11 et DHT22

Les capteurs DHT11 et DHT22 sont utilisés pour mesurer la température et l’humidité relative. Ceux-ci sont très populaires parmi les fabricants et les amateurs d’électronique.

Capteur de température et d'humidité DHT11/DHT22 utilisant Arduino IDE

Ces capteurs contiennent une puce qui effectue la conversion analogique-numérique et émet un signal numérique avec la température et l’humidité. Cela les rend très faciles à utiliser avec n’importe quel microcontrôleur.

Capteur DHT11DHT22 avec Arduino Tutoriels de nerd aleatoires

DHT11 contre DHT22

Les DHT11 et DHT22 sont très similaires, mais diffèrent par leurs spécifications. Le tableau suivant compare certaines des spécifications les plus importantes des capteurs de température et d’humidité DHT11 et DHT22. Pour une analyse plus approfondie de ces capteurs, veuillez consulter la fiche technique des capteurs.

DHT11
DHT22
1641476168 615 Capteur DHT11DHT22 avec Arduino Tutoriels de nerd aleatoires
1641476168 815 Capteur DHT11DHT22 avec Arduino Tutoriels de nerd aleatoires
Écart de température 0 à 50 ºC +/-2 ºC -40 à 80 ºC +/-0,5ºC
Plage d’humidité 20 à 90 % +/-5% 0 à 100% +/-2%
Résolution Humidité : 1%
Température : 1ºC
Humidité : 0,1%
Température : 0,1 °C
Tension de fonctionnement 3 – 5,5 V CC 3 – 6 V CC
Offre actuelle 0,5 – 2,5 mA 1 – 1,5 mA
Période d’échantillonnage 1 seconde 2 secondes
Prix 1 $ à 5 $ 4 $ à 10 $
Où acheter Consulter les prix Consulter les prix

Le capteur DHT22 a une meilleure résolution et une plage de mesure de température et d’humidité plus large. Cependant, c’est un peu plus cher et vous ne pouvez demander des lectures qu’avec un intervalle de 2 secondes.

Le DHT11 a une portée plus petite et il est moins précis. Cependant, vous pouvez demander des lectures de capteur toutes les secondes. C’est aussi un peu moins cher.

Malgré leurs différences, ils fonctionnent de manière similaire et vous pouvez utiliser le même code pour lire la température et l’humidité. Il vous suffit de sélectionner dans le code le type de capteur que vous utilisez.

Brochage DHT

Les capteurs DHT ont quatre broches, comme illustré dans la figure suivante. Cependant, si vous installez votre capteur DHT dans une carte de dérivation, il est livré avec seulement trois broches et avec une résistance de rappel interne sur la broche 2.

Capteur de température et d'humidité DHT22 utilisant Arduino IDE

Le tableau suivant montre le brochage DHT22 et DHT11. Lorsque le capteur est face à vous, la numérotation des broches commence à 1 de gauche à droite

Broche DHT Se connecter à
1 5V
2 Tout GPIO numérique ; connectez également une résistance pull-up de 10k Ohm
3 Ne pas se connecter
4 GND

Où acheter?

Tu peux vérifier Outils Maker Advisor‘ et trouvez le meilleur prix pour ces modules :

Capteur de température et d’humidité DHT11 avec Arduino

Dans cette section, nous allons créer un projet simple avec l’Arduino qui lit la température et l’humidité et affiche les résultats sur le moniteur série.

Pièces requises

Pour terminer ce didacticiel, vous avez besoin des composants suivants :

Vous pouvez utiliser les liens précédents ou aller directement sur MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

1641476168 641 Capteur DHT11DHT22 avec Arduino Tutoriels de nerd aleatoires

Schématique

Suivez le schéma suivant pour câbler le capteur de température et d’humidité DHT11 (ou DHT22) à l’Arduino.

schéma de câblage arduino dht11_bb

Voici les connexions (de gauche à droite) :

Broche DHT Arduino
Broche 1 5V
Broche 2 D2 ou toute autre broche numérique
Broche 3 ne pas se connecter
Broche 4 GND

Noter: si vous utilisez un module avec un capteur DHT, il est normalement livré avec seulement trois broches. Les broches doivent être étiquetées afin que vous sachiez comment les câbler. De plus, bon nombre de ces modules sont déjà livrés avec une résistance de rappel interne, vous n’avez donc pas besoin d’en ajouter une au circuit.

Installation des bibliothèques

Pour lire à partir du capteur DHT, nous utiliserons le Bibliothèque DHT d’Adafruit. Pour utiliser cette bibliothèque, vous devez également installer le Bibliothèque de capteurs unifiés Adafruit. Suivez les étapes suivantes pour installer ces bibliothèques.

Ouvrez votre IDE Arduino et accédez à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques. Le gestionnaire de bibliothèque devrait s’ouvrir.

Rechercher « DHT » dans la zone de recherche et installez la bibliothèque DHT d’Adafruit.

Installation de la bibliothèque Adafruit DHT

Après avoir installé la bibliothèque DHT d’Adafruit, tapez « Capteur unifié Adafruit » dans le champ de recherche. Faites défiler jusqu’en bas pour trouver la bibliothèque et l’installer.

Installation de la bibliothèque de pilotes Adafruit Unified Sensor

Après avoir installé les bibliothèques, redémarrez votre IDE Arduino.

Code

Après avoir installé les bibliothèques nécessaires, vous pouvez télécharger un exemple de code à partir de la bibliothèque.

Dans votre IDE Arduino, accédez à Déposer > Exemples > Bibliothèque de capteurs DHT > Testeur DHT

Le code suivant devrait se charger. Il lit la température et l’humidité et affiche les résultats dans le moniteur série.

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN 2     // what pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);

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

void loop() {
  // Wait a few seconds between measurements.
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit
  float f = dht.readTemperature(true);
  
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Compute heat index
  // Must send in temp in Fahrenheit!
  float hi = dht.computeHeatIndex(f, h);

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

Afficher le code brut

Comment fonctionne le code

Vous commencez par inclure le DHT bibliothèque:

#include "DHT.h"

Ensuite, vous définissez la broche à laquelle le capteur DHT est connecté. Dans ce cas, il est connecté à la broche numérique 2.

#define DHTPIN 2 // what digital pin we're connected to

Ensuite, vous devez définir le type de capteur DHT que vous utilisez. Dans notre exemple, nous utilisons le DHT11.

#define DHTTYPE DHT11 // DHT 11

Si vous utilisez un autre capteur DHT, vous devez commenter la ligne précédente et décommenter l’un des éléments suivants :

//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

Ensuite, initialisez un DHT objet appelé dht avec le code PIN et le type que vous avez définis précédemment :

DHT dht(DHTPIN, DHTTYPE);

Dans le mettre en place(), initialisez le moniteur série à un débit de 9 600 bauds à des fins de débogage.

erial.begin(9600);
Serial.println("DHTxx test!");

Initialisez le capteur DHT avec le .commencer() méthode.

dht.begin();

Dans le boucler(), au début, il y a un délai de 2 secondes. Ce délai est nécessaire pour donner suffisamment de temps au capteur pour effectuer des lectures. La fréquence d’échantillonnage maximale est de deux secondes pour le DHT22 et d’une seconde pour le DHT11.

delay(2000);

La lecture de la température et de l’humidité est très simple. Pour obtenir de l’humidité, il suffit d’utiliser le readHumidity() méthode sur le dht objet. Dans ce cas, nous économisons l’humidité dans le h variable. Notez que le readHumidity() La méthode renvoie une valeur de type float.

float h = dht.readHumidity();

De même, pour lire la température, utilisez le lireTempérature() méthode.

float t = dht.readTemperature();

Pour obtenir la température en degrés Fahrenheit, il suffit de passer vrai à la lireTempérature() méthode comme suit :

float f = dht.readTemperature(true);

Cette bibliothèque est également livrée avec des méthodes pour calculer l’indice de chaleur en degrés Fahrenheit et Celsius :

// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);

Enfin, toutes les lectures sont affichées sur le moniteur série.

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

Manifestation

Après avoir téléchargé le code sur l’Arduino, ouvrez le moniteur série à un débit en bauds de 9600. Vous devriez obtenir des lectures de capteur toutes les deux secondes. Voici ce que vous devriez voir dans votre moniteur série Arduino IDE.

moniteur_série

Dépannage – Échec de la lecture du capteur DHT

Si vous essayez de lire la température et l’humidité du capteur DHT11/DHT22 et que vous obtenez un message d’erreur dans votre moniteur série, suivez les étapes suivantes pour voir si vous pouvez faire fonctionner votre capteur (ou lisez notre guide de dépannage DHT dédié) .

« Échec de la lecture du capteur DHT ! » ou Nan lectures

Si votre capteur DHT renvoie le message d’erreur « Échec de la lecture du capteur DHT ! » ou les lectures DHT renvoient « Nan » :

Dépannage résolu DHT11 DHT22 AM2302 AM2301 Échec de la lecture du capteur DHT ! ou Nan

Essayez l’un des conseils de dépannage suivants :

  • Câblage : lorsque vous construisez un projet électronique, vous devez revérifier le câblage ou l’affectation des broches. Après avoir vérifié et testé que votre circuit est correctement connecté, s’il ne fonctionne toujours pas, continuez à lire les conseils de dépannage suivants.
  • Pouvoir: le capteur DHT a une plage de fonctionnement de 3V à 5,5V (DHT11) ou de 3V à 6V (DHT22). Si vous alimentez le capteur à partir d’une broche 3,3 V, dans certains cas, l’alimentation du DHT avec 5 V résout le problème.
  • Mauvais port USB ou câble USB : Parfois, alimenter l’Arduino directement à partir d’un port USB du PC ne suffit pas. Essayez de le brancher sur un concentrateur USB alimenté par une source d’alimentation externe. Cela peut également aider à remplacer le câble USB par un meilleur ou un plus court. Avoir un port USB qui fournit suffisamment d’énergie ou utiliser un bon câble USB résout souvent ce problème.
  • Source d’énergie: comme mentionné dans le conseil précédent, votre Arduino peut ne pas fournir suffisamment de puissance pour lire correctement à partir du capteur DHT. Dans certains cas, vous devrez peut-être alimenter l’Arduino avec une source d’alimentation qui fournit plus de courant.
  • Type de capteur : vérifiez bien que vous avez décommenté/commenté dans votre code le bon capteur pour votre projet. Dans ce projet, nous utilisions le DHT22 :
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
  • Taux d’échantillonnage: le capteur DHT est très lent à obtenir les lectures (les lectures du capteur peuvent prendre jusqu’à 2 secondes). Dans certains cas, l’augmentation du temps entre les lectures résout le problème.
  • Le capteur DHT est frit ou cassé : Malheureusement, ces capteurs bon marché ont parfois l’air tout à fait corrects, mais ils sont frits/cassés. Ainsi, même si vous avez assemblé le bon circuit et le bon code, il ne parviendra toujours pas à obtenir les lectures. Essayez d’utiliser un autre capteur pour voir s’il résout votre problème.
  • Mauvais débit en bauds ou échec de téléchargement du code : si vous ne voyez rien dans votre moniteur série Arduino IDE, vérifiez que vous avez sélectionné le bon débit en bauds, le bon port COM ou que vous avez téléchargé le code avec succès.

Lors de la construction de nos projets, nous avons rencontré des problèmes similaires avec le DHT et cela a toujours été résolu en suivant l’une des méthodes décrites précédemment.

Erreur fatale : Adafruit_Sensor.h : aucun fichier ou répertoire de ce type

Il y a aussi une erreur courante qui se produit lorsque vous essayez de compiler le code. Si vous recevez l’erreur suivante :

fatal error: Adafruit_Sensor.h: No such file or directory 
#include <Adafruit_Sensor.h>

Vous devez installer la bibliothèque de pilotes Adafruit Unified Sensor. Dans votre IDE Arduino, tapez dans le champ de recherche « Capteur unifié Adafruit« , faites défiler jusqu’en bas pour trouver la bibliothèque et l’installer.

Installation de la bibliothèque de pilotes Adafruit Unified Sensor

Après avoir installé la bibliothèque, redémarrez votre IDE Arduino et le code devrait être compilé sans le message d’erreur.

Conclusion

Les capteurs DHT11 et DHT22 offrent un moyen simple et peu coûteux d’obtenir des mesures de température et d’humidité avec l’Arduino. Le câblage est très simple – il vous suffit de connecter la broche de données DHT à une broche numérique Arduino.

L’écriture du code pour obtenir la température et l’humidité est également simple grâce à la DHT bibliothèque. Obtenir des lectures de température et d’humidité est aussi simple que d’utiliser le lireTempérature() et readHumidity() méthodes.

J’espère que vous avez trouvé ce guide utile. Autres guides avec le capteur de température et d’humidité DHT11/DHT22 :

Si vous aimez Arduino, vous aimerez peut-être également les ressources suivantes :

Merci d’avoir lu.

25 avril 2019

  • AZDelivery Capteur numérique de température et d'humidité DHT22 AM2302 Compatible avec Arduino et Raspberry Pi, e-Book Inclus!
    ✅ Le DHT22 est un capteur fiable pour déterminer la température et l'humidité. ✅ Etant donné que le capteur peut fonctionner avec 3,3V et 5V. ✅ Outre la tension d'alimentation, un seul port doit être connecté au capteur. ✅ Les résultats sont sous forme de séquence de bits numériques. Le capteur est donc idéal pour surveiller le climat intérieur ou installer une station météorologique. ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.
  • AZDelivery DHT22 AM2302 Capteur de Température et d’Humidité avec Câble Compatible avec Arduino et Raspberry Pi incluant Un E-Book!
    ✅ AZ-Delivery DHT22/AM2302 est le choix idéal si vous avez besoin de mesures précises et fiables de la température et de l'humidité pour tous vos projets Raspberry Pi. ✅ Les capteurs peuvent fonctionner avec des tensions de 3,3V et 5V. ✅ En plus de la connexion à la tension de service, un seul port microcontrôleur doit être connecté au capteur. ✅ Les résultats sont sous forme de séquence des bits digitale. Donc, le capteur est idéal pour mesurer la température intérieure de la maison et pour construire une station météo. ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.
  • AZDelivery KY-015 DHT 11 Module de capteur de Température Compatible avec Arduino et Raspberry Pi y Compris Un eBook
    ✅ Pour déterminer la température et l'humidité. ✅ Fonctionnement avec 3,3V aussi bien que 5V possible. ✅ One-Wire capable. ✅ Sortie en série sous forme de séquence de bits numériques. ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.