Composants · 6 min de lecture

Capteur de température et d'humidité DHT11 : Arduino, ESP32 et Pico

Qu'est-ce que le capteur de température et d'humidité DHT11 et comment fonctionne-t-il ? Câblage Arduino, bibliothèque DHT, code d'exemple, DHT11 ou DHT22, ESP32, Pico et erreurs fréquentes.

Le DHT11 est un capteur numérique bon marché, dans un boîtier en plastique bleu, qui lit à la fois la température et l'humidité relative sur un seul fil de données. On le retrouve dans presque toutes les stations météo Arduino, les systèmes de suivi de serre et de plantes, les thermomètres de chambre d'enfant et les projets domotiques qui allument un ventilateur quand l'humidité monte. Contrairement à un capteur analogique, tu ne mesures pas de tension et tu ne jongles pas avec des formules : le capteur envoie sa mesure sous forme de nombre prêt à l'emploi.

Capteur de température et d'humidité DHT11
DHT11 : dans le boîtier bleu à grille se trouvent un élément qui mesure l'humidité et une minuscule thermistance.

Qu'est-ce que le DHT11 et à quoi sert-il ?

L'humidité mesurée est l'humidité relative : le pourcentage de la quantité maximale de vapeur d'eau que l'air peut contenir à cette température. Entre 40 et 60 %, c'est confortable ; au-dessus de 70 %, c'est l'humidité et la moisissure ; sous 30 %, l'air est sec. Le DHT11 mesure cette valeur et la température ambiante environ une fois par seconde.

  • Station météo maison : afficher la température et l'humidité sur un écran LCD ou OLED.
  • Serre et plantes : prévenir quand l'humidité baisse et arroser avec un capteur d'humidité du sol.
  • Alerte humidité et moisissure : déclencher une alarme quand la salle de bains, la cave ou un placard dépasse 70 % d'humidité.
  • Ventilateur ou déshumidificateur automatique : allumer l'appareil avec un relais au-delà d'un seuil d'humidité.
  • Enregistreur de données : écrire les mesures sur une carte SD et tracer une courbe quotidienne.
  • Surveillance à distance : avec un ESP32, publier les valeurs sur une page web consultable depuis ton téléphone.

Comment fonctionne le DHT11 ?

Le boîtier contient deux éléments de mesure. L'élément d'humidité est un matériau qui absorbe l'humidité placé entre deux électrodes ; plus l'air est humide, plus sa résistance diminue. La température est mesurée par une thermistance CTN (NTC) : une petite résistance dont la valeur baisse quand la température monte. Un minuscule microcontrôleur dans le capteur mesure ces deux résistances, les corrige avec des valeurs d'étalonnage enregistrées en usine et envoie le résultat en numérique.

La communication passe par un seul fil. L'Arduino réveille le capteur en maintenant la ligne de données à LOW pendant au moins 18 millisecondes, et le capteur répond par un paquet de 40 bits : 16 bits d'humidité, 16 bits de température et une somme de contrôle de 8 bits pour repérer les mesures erronées. Tu n'as pas à programmer ce minutage : la bibliothèque que nous allons installer s'occupe de tout.

Caractéristiques techniques : différences entre DHT11 et DHT22

CaractéristiqueDHT11DHT22 (AM2302)
Tension d'alimentation3–5,5 V3,3–6 V
Courant pendant la mesure0,5–2,5 mA1–1,5 mA
Plage de température0–50 °C−40–80 °C
Précision en température±2 °C±0,5 °C
Plage d'humidité20–90 %0–100 %
Précision en humidité±5 %±2 % (max ±5 %)
Résolution1 °C / 1 %0,1 °C / 0,1 %
Fréquence de mesureUne par secondeUne toutes les 2 secondes
Couleur du boîtierBleuBlanc
Capteur de température et d'humidité DHT22 AM2302
DHT22 (AM2302) : son grand frère au boîtier blanc, plus précis et capable de mesurer sous zéro.

En bref : pour suivre approximativement la température et l'humidité d'une pièce, le DHT11 suffit et coûte moins cher. En extérieur, sous zéro ou quand un demi-degré compte, choisis le DHT22. Les deux se câblent et se programment de la même façon ; dans le code, tu changes seulement le type de capteur.

Brochage et câblage du DHT11

Le DHT11 existe sous deux formes : en module 3 broches avec une résistance et une LED sur la carte, ou en capteur nu à 4 pattes. Sur le capteur nu, compte les pattes de gauche à droite, face à grille tournée vers toi.

SignalModule 3 brochesCapteur 4 pattesOù le brancher
AlimentationVCC (+)Patte 15V (3V3 sur ESP32 et Pico)
DonnéesDATA / OUT / SPatte 2Une broche numérique (D2 sur l'Uno)
Libre—Patte 3Non connectée
MasseGND (−)Patte 4GND
Avec le capteur nu, ajoute toujours une résistance de tirage (pull-up) de 10 kΩ entre la patte de données et VCC ; au-delà de quelques mètres de câble, utilise 4,7 kΩ. Les modules ont déjà cette résistance sur la carte, rien à ajouter. Pour lire la valeur d'une résistance d'après ses couleurs, utilise l'outil Code couleur des résistances.

Installer la bibliothèque DHT

  1. Ouvre le gestionnaire de bibliothèques dans l'Arduino IDE (dans Arduino IDE 2, l'icône en forme de livre dans la barre latérale gauche).
  2. Tape DHT sensor library dans la recherche et installe la bibliothèque d'Adafruit.
  3. Quand les dépendances sont proposées, choisis Install all pour installer aussi Adafruit Unified Sensor.
  4. Si tu veux, essaie l'exemple fourni dans Fichier > Exemples > DHT sensor library > DHTtester.

Code d'exemple Arduino : température, humidité et indice de chaleur

Le code ci-dessous prend une mesure toutes les deux secondes, signale les lectures ratées et combine température et humidité pour calculer l'indice de chaleur (la température ressentie). Ouvre le moniteur série à 9600 bauds pour voir les résultats.

Arduino (C++)
1#include <DHT.h>
2
3#define DHT_PIN 2          // veri pini / data pin
4#define DHT_TYPE DHT11     // DHT22 kullanıyorsan DHT22 yaz / write DHT22 for a DHT22
5
6DHT dht(DHT_PIN, DHT_TYPE);
7
8void setup() {
9  Serial.begin(9600);
10  dht.begin();
11}
12
13void loop() {
14  delay(2000);                                // ölçümler arası bekleme / wait between readings
15
16  float humidity = dht.readHumidity();        // % bağıl nem / % relative humidity
17  float temperature = dht.readTemperature();  // °C
18
19  if (isnan(humidity) || isnan(temperature)) {
20    Serial.println("Okuma hatası / read error");
21    return;
22  }
23
24  // hissedilen sıcaklık / heat index (°C)
25  float heatIndex = dht.computeHeatIndex(temperature, humidity, false);
26
27  Serial.print("Sicaklik / Temp: ");
28  Serial.print(temperature);
29  Serial.print(" C  Nem / Humidity: %");
30  Serial.print(humidity);
31  Serial.print("  Hissedilen / Feels like: ");
32  Serial.print(heatIndex);
33  Serial.println(" C");
34}
Le DHT11 fait au maximum une mesure par seconde, le DHT22 une toutes les deux secondes. Attendre 2 secondes entre deux lectures convient aux deux. Lire plus souvent ne donne pas de nouvelle valeur : la bibliothèque renvoie la dernière mesure ou une erreur.

Utiliser le DHT11 avec l'ESP32

Le même code fonctionne sur l'ESP32 ; il suffit de régler DHT_PIN sur, par exemple, 4. Alimente le capteur par la broche 3V3 de l'ESP32 pour que la ligne de données reste aussi à 3,3 V ; le DHT11 fonctionne très bien à cette tension. Les GPIO 34 à 39 sont uniquement des entrées : ils ne conviennent pas au DHT, dont la ligne de données est bidirectionnelle. Pour choisir une broche, regarde dans l'outil Brochage quelles broches de l'ESP32 sont sûres. Tu peux afficher les mesures sur une page web en Wi-Fi et les suivre depuis ton téléphone.

DHT11 avec le Raspberry Pi Pico (MicroPython)

MicroPython intègre un module dht pour les capteurs DHT : aucune bibliothèque à installer. Branche le capteur sur la broche 3V3 du Pico, sur GND et sur la broche GP15 :

MicroPython
1import dht
2from machine import Pin
3import time
4
5sensor = dht.DHT11(Pin(15))   # GP15 veri pini / data pin (DHT22 için dht.DHT22)
6
7while True:
8    try:
9        sensor.measure()
10        t = sensor.temperature()   # °C
11        h = sensor.humidity()      # %
12        print("Sicaklik:", t, "C  Nem: %", h)
13    except OSError:
14        print("Okuma hatası / read error")
15    time.sleep(2)

Idées de projets avec le DHT11

  • Thermomètre numérique avec LCD : affiche les valeurs sur un écran 16x2 ; la méthode est expliquée dans Utiliser un écran LCD I2C.
  • Ventilateur piloté par l'humidité : allume un ventilateur avec un relais quand l'humidité dépasse 65 % ; pour le câblage, vois Qu'est-ce qu'un module relais ?
  • Alarme d'humidité : fais sonner un buzzer quand le seuil est dépassé ; Qu'est-ce qu'un buzzer ? t'aidera pour les alertes sonores.
  • Enregistreur de température : sauvegarde une mesure toutes les 10 minutes avec un module horloge et une carte SD.
  • Station météo Wi-Fi : publie les mesures avec un ESP32 sur une page accessible depuis tous les appareils de ton réseau.

Erreurs fréquentes et solutions

  • NaN permanent ou "Failed to read" : le fil de données est peut-être sur une autre broche que celle du code, la résistance de tirage manque, ou le code utilise le mauvais type de capteur (DHT22 au lieu de DHT11).
  • Lire trop souvent : un capteur lu à moins de 2 secondes d'intervalle renvoie l'ancienne valeur ou une erreur.
  • Température plus élevée que prévu : le capteur est peut-être trop près du régulateur de tension de l'Arduino ou au soleil ; place-le à quelques centimètres de la carte.
  • Mesures perdues avec un câble long : le signal faiblit après quelques mètres ; descends la résistance de tirage à 4,7 kΩ, alimente le capteur en 5 V et utilise un câble de qualité.
  • Instable sur l'ESP32 : si le capteur est alimenté en 5 V, la ligne de données est tirée à 5 V ; alimente-le en 3V3 et utilise un GPIO capable d'être entrée et sortie (par exemple le 4).
  • Attendre une réaction immédiate : un changement d'humidité met quelques secondes à être détecté ; le DHT11 est conçu pour surveiller une pièce, pas pour des mesures rapides.

Pour découvrir d'autres capteurs, jette un œil au Guide des capteurs Arduino, et pour mesurer une distance, lis Capteur de distance HC-SR04. Dans l'application BlueGrays, tu trouveras des projets pas à pas avec DHT11 et DHT22, avec schémas et code.

Questions fréquentes

Faut-il acheter un DHT11 ou un DHT22 ?

Pour suivre approximativement la température et l'humidité d'une pièce, le DHT11 suffit et coûte moins cher. Pour l'extérieur, les températures négatives ou une précision de ±0,5 °C, prends un DHT22. Dans le code, seul le type de capteur passe à DHT22.

Pourquoi mon DHT11 renvoie NaN ou "Failed to read from DHT sensor" ?

Les causes les plus fréquentes sont une mauvaise broche de données, une résistance de tirage manquante, un mauvais type de capteur dans le code et des lectures trop rapprochées. Vérifie le câblage, ajoute 10 kΩ sur un capteur nu et attends 2 secondes entre les lectures.

Mon DHT11 affiche une mauvaise température, comment le calibrer ?

Un écart de ±2 °C est normal pour le DHT11. Place le capteur à côté d'un thermomètre fiable, note la différence et ajoute ou retranche ce décalage fixe dans ton code. Vérifie que le capteur est loin des composants qui chauffent.

Le DHT11 fonctionne-t-il en 3,3 V ?

Oui, le DHT11 fonctionne de 3 à 5,5 V. Sur les cartes en 3,3 V comme l'ESP32 et le Raspberry Pi Pico, le mieux est de l'alimenter par la broche 3V3 : la ligne de données ne reçoit ainsi jamais 5 V.

Peut-on utiliser le DHT11 en extérieur ou près de l'eau ?

Le DHT11 n'est pas étanche : la pluie, la condensation et le soleil direct l'abîment ou faussent la mesure. En extérieur, place-le dans un boîtier ventilé à l'ombre ; pour la température de l'eau, un DS18B20 étanche est plus adapté.

Peut-on brancher plusieurs DHT11 sur un Arduino ?

Oui, mais chaque capteur a besoin de sa propre broche de données ; ils ne peuvent pas partager la même ligne. Dans le code, tu déclares un objet DHT par capteur, par exemple DHT dht1(2, DHT11) et DHT dht2(3, DHT11).

Voir tous les projets
Température et humidité avec DHT11
#55Intermédiaire

Température et humidité avec DHT11

Projet qui mesure la température et l'humidité ambiantes à l'aide d'un capteur DHT11 et les affiche sur un écran LCD I2C. Enseigne l'utilisation d'un capteur numérique de température et d'humidité.

4.7(47)
60
ESP32 DHT22 Température et humidité (avec écran LCD)
#117Intermédiaire
Premium

ESP32 DHT22 Température et humidité (avec écran LCD)

Il s'agit d'un projet permettant de mesurer la température ambiante et le taux d'humidité à l'aide d'un capteur DHT22 et d'afficher ces données en temps réel sur un écran LCD I2C 16x2. Les données du capteur sont lues à l'aide du protocole one-wire grâce à la bibliothèque Adafruit DHT. Ce projet constitue la base des stations météo IoT, de la domotique ou des systèmes de surveillance de l'environnement dans les serres.

4.8(37)
53
Enregistreur de Température ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
#144Avancé
Premium

Enregistreur de Température ESP32 (DHT22 + DS1307 RTC + microSD + OLED)

Construis un enregistreur de température horodaté avec ESP32 ! Lis la température/humidité du DHT22 toutes les 10 secondes, obtiens l'heure réelle du DS1307 RTC et enregistre sur carte microSD au format CSV. L'OLED affiche en direct la température (grande police), le pourcentage d'humidité, l'horodatage et le compteur. Le fichier `/temp_log.csv` sur la carte SD s'ouvre dans Excel, Google Sheets ou Python pandas pour analyse — parfait pour surveillance de serre, suivi de température à domicile, c

4.7(7)
12
Horloge matricielle, calendrier et station météo (MAX7219, DS1307)
#85Intermédiaire
Premium

Horloge matricielle, calendrier et station météo (MAX7219, DS1307)

Le module RTC DS1307 et le capteur de température et d'humidité DHT22 sont des projets qui affichent des données en temps réel sur un écran LED matriciel à points MAX7219 8x32. L'écran affiche la temp

5.0(50)
66
Mesure de la température avec NTC et écran LCD 2x16
#44Débutant
Premium

Mesure de la température avec NTC et écran LCD 2x16

Le projet mesure la température ambiante à l'aide d'une thermistance NTC et l'affiche en Celsius sur un écran LCD I2C. Il apprend à calculer la température à partir d'une valeur analogique avec l'équa

4.5(33)
44
ESP32 HTTPClient + API météo (avec écran LCD)
#133Avancé
Premium

ESP32 HTTPClient + API météo (avec écran LCD)

Dans ce projet, nous effectuons un appel REST à l'API météo (wttr.in) via Internet à l'aide de l'ESP32 et de la bibliothèque `HTTPClient.h`. À l’aide d’ArduinoJson v7, nous analysons la réponse JSON renvoyée et affichons les informations relatives à la ville, à la température, à l’humidité, à la météo et au vent sur un écran LCD I2C, en turc et en anglais. wttr.in est gratuit et ne nécessite pas de clé API : il suffit de saisir le nom d’une ville pour obtenir les conditions météo en temps réel d

4.7(13)
20
Station d'irrigation intelligente
#83Avancé
Premium

Station d'irrigation intelligente

Système autonome d'irrigation des plantes qui fonctionne 24/7 sans fatiguer Arduino avec deux batteries 18650 et un régulateur LM2596. Il gère automatiquement le moteur d'arrosage en mesurant en perma

5.0(42)
57
Système d'arrosage intelligent ESP 32
#139Avancé
Premium

Système d'arrosage intelligent ESP 32

Dans le cadre de ce projet, un système d'arrosage automatique des plantes a été mis au point à l'aide d'un ESP32 et d'un capteur d'humidité du sol. Le capteur mesure en permanence le niveau d'humidité du sol. Lorsque l'humidité descend en dessous du niveau défini, l'ESP32 active le relais pour mettre la pompe en marche et arroser la plante. Lorsque le sol est suffisamment humide, la pompe s'arrête automatiquement. Ce projet permet d'arroser les plantes régulièrement et de réaliser des économies

4.7(10)
14

Apprends à brancher le DHT11 sur un Arduino, à lire la température, l'humidité et l'indice de chaleur avec la bibliothèque DHT, à l'utiliser sur ESP32 et Pico, et à savoir quand le DHT22 est un meilleur choix.

Capteur de température et d'humidité DHT11 : Arduino, ESP32 et Pico | BlueGrays