Ignorer et passer au contenu

Livraison offerte à partir de 50€ d'achats, livrée sous 48h !

Livraison à partir de seulement 2.50€ !

Contents Menu Expand Light mode Dark mode Auto light/dark mode

DHT11 - Mesurer Temperature et Humidité Ambiante avec Raspberry Pi Pico en code Arduino

(Mis à jour le 05/01/2023)

Le capteur DHT11 est très populaire parmi les Makers et les amateurs de DIY en raison de son prix abordable et de sa facilité d’utilisation.

DHT11 sensor overview

Le capteur DHT11 avec sa protection bleue caractéristique

Avertissement

Toutefois, il ne peut mesurer qu’une seule fois par seconde, ce qui est son principal inconvénient. Cependant, il conviendra parfaitement pour fabriquer une station météo basique connectée.

Prendre en main le capteur DHT11

Il existe également un modèle plus avancé, le DHT22, qui est plus complet. On peut les différencier en regardant les couleurs de leur boîtier: le DHT11 a un boîtier bleu, tandis que le DHT22 est en blanc. Le DHT22 est également légèrement plus grand. Outre leurs différences, ils s’utilisent de la même façon. Pour en apprendre davantage sur leurs différences, vous pouvez lire la comparaison entre les capteurs DHT11 et DHT22 .

Quelques caractéristiques techniques du DHT11

Le DHT11 peut être alimenté en 3.3V.

Caractéristiques techniques du DHT11

Caractéristiques

DHT11

Précision température

± 2°C

Précision Humidité

± 5%

Plage de température

0-50 °C

Plage Humidité

20-90%

Échantillonnage

1/s

Tension d’alimentation

3-5.5V

Courant

~2.5mA

Malheureusement, les performances sont très limitées, ce qui limite l’utilisation du capteur. Je vous recommande d’utiliser par exemple un capteur de la série des BMExxx de Bosh pour obtenir de meilleures mesures.

Branchements du capteur DHT11

Le DHT11 a entre 3 et 4 broches selon le module. Sur le modèle à 4 broches, une n’est pas nécessaire. Malheureusement, le brochage des modules varie selon le fabricant.

DHT11 variant

Différents brochages sont possibles (celui d’Elegoo est à gauche)

Voici un récapitulatif de différentes possibilités :

Correspondance des broches

Module DHT11

Raspberry Pi Pico

1 (S )

GPIO17

2

3V3

3 (- )

GND

Correspondance des broches

Module DHT11

Raspberry Pi Pico

1

GND

2

GPIO17

3

3V3

Correspondance des broches

Module DHT11

Raspberry Pi Pico

1

3V3

2

GPIO17

3

Ne pas connecter

4

GND

La numérotation se fait depuis la gauche si on tient le capteur face à vous (la partie avec la grille tournée vers vous). À l’exception des broches d’alimentation, le DHT11 possède une seule broche pour transmettre les données.

Schéma électrique pour utiliser le module DHT11 avec une Pico

Si le module ne comporte pas de résistance pull-up, ajoutez-en une entre 4.7kΩ (ou 10kΩ) entre les broches 3V et GP5 . Vous pouvez utiliser n’importe quelle broche de sortie.

Dans les exemples suivants, j’utilise un capteur DHT11 d’Elegoo. N’hésitez pas à adapter votre code si votre modèle est légèrement différent.

ultrason hcsr04 microptyhon rpi picot

Circuit électrique à réaliser

ultrason hcsr04 microptyhon rp2040 devkit

Circuit électrique à réaliser

Câblage sur plaque de prototypage du DHT11 et esp32 wroom

Câblage du DHT11 avec une carte uPesy RP2040 DevKit (Pico++)

Mesurer la température et l’humidité ambiante du DHT11 avec du code Arduino

Puisque le DHT11 utilise un protocole propriétaire, il est indispensable d’utiliser une librairie pour communiquer avec le capteur. La librairie DHT Sensor d’Adafruit est recommandée pour la Raspberry Pi Pico.

Voici comment l’installer depuis l’Arduino IDE :

Installation de la librairie DHT11 arduino ide

Installation de la librairie DHT11 sur Arduino IDE

Une fois installée, utilisez le code suivant pour récupérer la température et le taux d’humidité du DHT11 :

#include "DHT.h"

#define DHTPIN 5
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
}

void loop() {
  delay(1000);
  //Le DHT11 renvoie au maximum une mesure toute les 1s
  float h = dht.readHumidity();
  //Lis le taux d'humidite en %
  float t = dht.readTemperature();
  //Lis la température en degré celsius
  float f = dht.readTemperature(true);
  //Avec (true), renvoi la température en fahrenheit

  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Echec reception"));
    return;
    //Renvoi une erreur si l'esp ne reçoi aucune mesure
  }

  Serial.print("Humidite: ");
  Serial.print(h);
  Serial.print("%  Temperature: ");
  Serial.print(t);
  Serial.print("°C, ");
  Serial.print(f);
  Serial.println("°F");
  //Transmet les mesures reçu vers l'ordinateur via l'usb
}

Note

Le DHT.h au début du programme permet d’inclure la librairie DHT Sensor.

Voici ce que l’on obtient dans la console :

Lecture des mesures arduino ide console

Ce type de capteur n’est pas très adapté pour détecter très rapidement un changement de température, car il ne peut pas donner plus d’une mesure par seconde.

Note

Vous pouvez souffler sur le capteur DHT11, comme quand on souffle sur une fenêtre embuée pour la dégager. Vous devriez remarquer que le taux d’humidité augmente rapidement.

Faire des mesures asynchrones avec le DHT11

Vous remarquerez que la mesure est bloquante: la Raspberry Pi Pico ne peut rien faire d’autre pendant les mesures. Une solution évidente est de remplacer la fonction delay() avec la fonction millis() dans une condition if . Mais malgré tout, l’échange de données avec le DHT11 sera toujours bloquant : votre programme sera bloqué par à-coups. La meilleure solution est d’utiliser une librairie qui fonctionne avec des timers et des interruptions, pour que les mesures soient faites en tâches de fond :

Cette section est réservée aux abonnés. Il vous reste 34% à découvrir.

Devenir membre premium

Déjà abonné ? Connectez-vous