Tutoriel de température et d'humidité des capteurs DHT11 et DHT22 avec Arduino
Dans ce didacticiel Arduino, nous apprendrons à utiliser le capteur DHT11 ou DHT22 pour mesurer la température et l'humidité avec la carte Arduino. Vous pouvez regarder la vidéo suivante ou lire le didacticiel écrit ci-dessous pour plus de détails.
Ces capteurs sont très appréciés des amateurs d'électronique car ils sont très bon marché mais offrent tout de même d'excellentes performances. Voici les principales caractéristiques et différences entre ces deux capteurs :
Le DHT22 est la version la plus chère qui a évidemment de meilleures spécifications. Sa plage de mesure de température est de -40 à +125 degrés Celsius avec une précision de +-0,5 degré, tandis que la plage de température DHT11 est de 0 à 50 degrés Celsius avec une précision de +-2 degrés. De plus, le capteur DHT22 a une meilleure plage de mesure d'humidité, de 0 à 100 % avec une précision de 2 à 5 %, tandis que la plage d'humidité DHT11 est de 20 à 80 % avec une précision de 5 %.
Il existe deux spécifications où le DHT11 est meilleur que le DHT22. C'est le taux d'échantillonnage qui pour le DHT11 est de 1 Hz ou une lecture toutes les secondes, tandis que le taux d'échantillonnage du DHT22 est de 0,5 Hz ou une lecture toutes les deux secondes et le DHT11 a également une taille de corps plus petite. La tension de fonctionnement des deux capteurs est de 3 à 5 volts, tandis que le courant maximal utilisé lors de la mesure est de 2,5 mA.
Vous pouvez obtenir ces composants sur l'un des sites ci-dessous :
Ok maintenant, voyons comment ces capteurs fonctionnent réellement. Ils se composent d'un composant de détection d'humidité, d'un capteur de température NTC (ou thermistance) et d'un circuit intégré à l'arrière du capteur.
Pour mesurer l'humidité, ils utilisent le composant de détection d'humidité qui comporte deux électrodes avec un substrat retenant l'humidité entre elles. Ainsi, lorsque l'humidité change, la conductivité du substrat change ou la résistance entre ces électrodes change. Ce changement de résistance est mesuré et traité par le CI qui le rend prêt à être lu par un microcontrôleur.
D'autre part, pour mesurer la température, ces capteurs utilisent un capteur de température NTC ou une thermistance.
Une thermistance est en fait une résistance variable qui change de résistance avec le changement de température. Ces capteurs sont fabriqués par frittage de matériaux semi-conducteurs tels que la céramique ou les polymères afin de fournir des changements plus importants de la résistance avec seulement de petits changements de température.
Le terme « NTC » signifie « coefficient de température négatif », ce qui signifie que la résistance diminue avec l'augmentation de la température.
Les capteurs DHTxx ont quatre broches, VCC, GND, une broche de données et une broche non connectée qui n'a aucune utilité. Une résistance pull-up de 5K à 10K Ohms est nécessaire pour maintenir la ligne de données haute et pour permettre la communication entre le capteur et la carte Arduino. Certaines versions de ces capteurs sont livrées avec des cartes de dérivation avec résistance pull-up intégrée et elles n'ont que 3 broches.
Les capteurs DHTXX ont leur propre protocole à fil unique utilisé pour transférer les données. Ce protocole nécessite un timing précis et les chronogrammes pour obtenir les données des capteurs peuvent être trouvés à partir des fiches techniques des capteurs. Cependant, nous n'avons pas à nous soucier de ces chronogrammes car nous utiliserons la bibliothèque DHT qui s'occupe de tout.
Tutoriel connexe :Apprenez à construire une station météo sans fil basée sur Arduino
Nous devons d'abord inclure la bibliothèque DHT qui peut être trouvée sur le site officiel d'Arduino, puis définir le numéro de broche auquel notre capteur est connecté et créer un objet DHT. Dans la section de configuration, nous devons lancer la communication série car nous utiliserons le moniteur série pour imprimer les résultats. En utilisant la fonction read22(), nous allons lire les données du capteur et mettre les valeurs de la température et de l'humidité dans les variables t et h. Si vous utilisez le capteur DHT11, vous aurez besoin de la fonction read11(). À la fin, nous imprimerons les valeurs de température et d'humidité sur le moniteur série.
Après avoir téléchargé ce code sur la carte Arduino, les résultats de température et d'humidité du capteur peuvent être vus sur le moniteur série.
J'ai aussi fait un exemple où j'affiche les résultats sur un écran LCD. Voici le code source de cet exemple :
N'hésitez pas à poser des questions dans la section des commentaires ci-dessous.Aperçu
Principe de fonctionnement DHT11 / DHT22
Schémas de circuit
Code source
/* DHT11/ DHT22 Sensor Temperature and Humidity Tutorial
* Program made by Dejan Nedelkovski,
* www.HowToMechatronics.com
*/
/*
* You can find the DHT Library from Arduino official website
* https://playground.arduino.cc/Main/DHTLib
*/
#include <dht.h>
#define dataPin 8 // Defines pin number to which the sensor is connected
dht DHT; // Creats a DHT object
void setup() {
Serial.begin(9600);
}
void loop() {
int readData = DHT.read22(dataPin); // Reads the data from the sensor
float t = DHT.temperature; // Gets the values of the temperature
float h = DHT.humidity; // Gets the values of the humidity
// Printing the results on the serial monitor
Serial.print("Temperature = ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(" Humidity = ");
Serial.print(h);
Serial.println(" % ");
delay(2000); // Delays 2 secods, as the DHT22 sampling rate is 0.5Hz
}
Code language: Arduino (arduino)/* DHT11/ DHT22 Sensor Temperature and Humidity Tutorial
* Program made by Dejan Nedelkovski,
* www.HowToMechatronics.com
*/
/*
* You can find the DHT Library from Arduino official website
* https://playground.arduino.cc/Main/DHTLib
*/
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
#include <dht.h>
#define dataPin 8
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
dht DHT;
void setup() {
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
}
void loop() {
int readData = DHT.read22(dataPin);
float t = DHT.temperature;
float h = DHT.humidity;
lcd.setCursor(0,0); // Sets the location at which subsequent text written to the LCD will be displayed
lcd.print("Temp.: "); // Prints string "Temp." on the LCD
lcd.print(t); // Prints the temperature value from the sensor
lcd.print(" C");
lcd.setCursor(0,1);
lcd.print("Humi.: ");
lcd.print(h);
lcd.print(" %");
delay(2000);
}
Code language: Arduino (arduino)
Processus de fabrication
- Capteur de température Python et Raspberry Pi
- Température et humidité faciles sur Raspberry Pi
- Capteurs analogiques sur le Raspberry Pi utilisant un MCP3008
- Télécommande universelle utilisant Arduino, 1Sheeld et Android
- Voltmètre DIY utilisant Arduino et Smartphone
- Enregistreur de données de température et d'humidité
- Mesure de la fréquence et du cycle de service à l'aide d'Arduino
- Température, humidité et pression BME280 sur l'affichage Nextion
- Contrôle de la luminosité des LED à l'aide de Bolt et Arduino