Lire la température avec le capteur DHT11 via Arduino
Dans ce tutoriel, nous vous montrons comment mesurer la température et l'humidité relative de l'air avec le capteur de température DHT11.
Ce module capteur DHT11 est idéal pour surveiller la température et l'humidité relative dans les pièces d'habitation. Le capteur mesure des températures de 0°C à 50°C avec une précision de ±2°C et l'humidité de 20% à 95% avec une précision de ±5%.
Le module DHT11 est câblé avec seulement 3 broches et fonctionne avec une tension de 3V à 5V. Il peut être facilement connecté à un Arduino pour obtenir rapidement et sans complication des valeurs de mesure. Dans le gestionnaire de bibliothèques du logiciel Arduino, plusieurs bibliothèques avec des exemples de code sont déjà disponibles par défaut, permettant ainsi de mettre en service le capteur DHT11 en très peu de temps.
Composants nécessaires :
- Carte compatible Arduino UNO
- Câble USB
- Module DHT11
- 3 câbles Dupont femelle-mâle
DHT11 vs DHT22
Une alternative est le capteur DHT22, un peu plus cher, qui peut détecter des plages de mesure plus grandes, est plus précis et peut mesurer deux fois par seconde.
Si vous vous demandez quel capteur convient le mieux à votre projet, nous avons compilé ici un petit aperçu.
| Valeur de comparaison | DHT11 | DHT22 |
| Plage (température) | 0 - 50 °C | -40 - 80°C |
| Précision (température) | +-2°C | +-0.5°C |
| Plage (humidité de l'air) | 20-95% | 0-100% |
| Précision (humidité de l'air) | +-5% | +-2% |
| Intervalle de mesure | 1000 Millisecondes | 500 Millisecondes |
En conclusion, on peut dire que le DHT22 se distingue sur toute la ligne, sauf en ce qui concerne le prix. Pourtant, le DHT11 reste le capteur de température le plus populaire pour les projets de microcontrôleurs, car il est très économique, précis et économe en énergie.
Schéma de connexion
| DHT11 | Arduino |
| S (fil de données) | Broche 2 |
| VCC (alimentation 3-5 V) | 5V |
| - (GND) | GND |
Installer la bibliothèque DHT Sensor
Pour afficher simplement les valeurs mesurées en °C, nous utilisons la bibliothèque DHT. L'installation se fait facilement via l'IDE Arduino. Cette bibliothèque peut également être utilisée pour d'autres capteurs DHT.
1. Ouvrir la gestion des bibliothèques
2. Rechercher DHT11 et installer la bibliothèque DHT Sensor Library
Code pour Arduino
Vous trouverez le code sous « Fichier – Exemples – DHT ». Il suffit de décommenter DHT11 au lieu de DHT22.
Afficher / masquer le code
// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
#include "DHT.h"
#define DHTPIN 2 // Digital pin connected to the DHT sensor
// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Initialize DHT sensor.
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println(F("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 (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// 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);
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
}