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 température et taux d’humidité ambiant avec l’ESP32 en MicroPython

(Mis à jour le 05/01/2023)

DHT11 sensor overview

Le capteur DHT11 avec sa protection bleue caractéristique

Le capteur DHT11 est très populaire parmi les makers et les adeptes du DIY. Il est, en effet, si prisé qu’il est inclus par défaut dans MicroPython. Son prix avantageux et sa simplicité d’utilisation en sont les principales raisons.

Avertissement

Le principal inconvénient est qu’on peut prendre une mesure qu’une fois par seconde. Cependant, cela conviendra parfaitement pour la fabrication d’une station météo connectée basique 🙂.

Prendre en main le capteur DHT11

Il existe un modèle plus avancé, le DHT 22, qui est plus complet. On peut les différencier en regardant les couleurs de leur boîtier : le DHT11 a une couleur bleue alors que le DHT22 est blanc. Le DHT22 est aussi légèrement plus grand. Malgré leurs différences, ils sont utilisés de la même façon. Pour en savoir plus sur les différences, je vous encourage à consulter la comparaison entre les capteurs DHT11 et le DHT22 .

Quelques caractéristiques techniques du DHT11

Le DHT11 peut être alimenté directement par la tension de 3.3V de l’ESP32.

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

Étant donné que les mesures du DHT11 sont très simples, je vous suggère d’utiliser un capteur de la série BMExxx du fabricant Bosh pour des mesures plus précises. Bien sûr, le coût n’est pas le même 😉

Branchements du capteur DHT11

Le capteur DHT11 a entre 3 et 4 broches selon votre module. Sur le modèle à 4 broches, une ne sert à rien. Malheureusement, il y a différentes connectiques en fonction du fabricant du module. La numérotation se fait à partir de la gauche, lorsque vous tenez le capteur face à vous (la partie avec la grille en face de vous). Voici un récapitulatif des différentes possibilités :

DHT11 variant

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

Correspondance des broches

Module DHT11

ESP32

1 (S )

GPIO17

2

3V3

3 (- )

GND

Correspondance des broches

Module DHT11

ESP32

1

GND

2

GPIO17

3

3V3

Correspondance des broches

Module DHT11

ESP32

1

3V3

2

GPIO17

3

Ne pas connecter

4

GND

À part les broches d’alimentation, le DHT11 possède une seule broche pour transmettre les données des capteurs.

Circuit électrique pour utiliser le module DHT11 avec un ESP32

Si le module ne comporte pas de résistance de pullup, il faut en ajouter une entre 4.7kΩ (ou 10kΩ) entre les broches 3V3 et le signal (GPIO17 ). Il ne peut pas y avoir de mal à en ajouter une 🙂.

N’importe quelle broche de sortie peut être utilisée. Ici, c’est la broche GPIO17 . Dans les circuits suivants, j’utilise le capteur DHT11 d’Elegoo, n’oubliez pas de modifier selon votre modèle si celui-ci est différent.

Câblage du DHT11 et esp32 wroom

Câblage du DHT11 avec une carte uPesy ESP32 Wroom DevKit

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

Câblage du DHT11 avec une carte uPesy ESP32 Wroom DevKit

Avertissement

Assurez-vous que le module est bien alimenté en 3.3V et non 5V pour qu’un signal de données de 3.3V soit obtenu.

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

Puisque le DHT11 utilise un protocole propriétaire, il est nécessaire d’utiliser une bibliothèque pour communiquer facilement avec le capteur. Heureusement, elle est incluse par défaut dans MicroPython, donc il n’y a pas besoin de télécharger une bibliothèque externe supplémentaire 😎.

Le code à utiliser est très simple : il suffit d’instancier un objet dht avec un numéro de pin et d’utiliser la fonction capteur.measure() .

from machine import Pin
from time import sleep
import dht

capteur = dht.DHT11(Pin(17))

while True:
    try:
        sleep(1)
        # Le DHT11 renvoie au maximum une mesure toute les 1s
        capteur.measure()
        # Récupère les mesures du capteur
        print(f"Temperature : {capteur.temperature():.1f}")
        print(f"Humidite    : {capteur.humidity():.1f}")
        # Transmet la température sur la console de l'ordinateur
    except OSError as e:
        print('Echec reception')
        # Si l'esp ne reçoit pas les mesures du capteur

Note

On ajoute une seconde entre chaque mesure car le DHT11 ne peut pas aller plus vite😮‍💨. Si le DHT11 ne parvient pas à suivre le rythme, une erreur sera capturée grâce au try: execpt: !

Voici ce qui est affiché dans le terminal de l’IDE Thonny. La température est exprimée en degrés Celsius, tandis que l’humidité est exprimée en pourcentage.

démo micropython de la mesure du DHT11 avec un ESP32 sur thony

Note

Vous pouvez souffler sur le capteur DHT11, comme vous le feriez sur une vitre givrée pour enlever la buée.

En Python, vous pouvez utiliser des f-string pour afficher facilement des variables avec du texte f"Humidite: {capteur.humidity():.1f}" . La chaîne de caractères doit commencer par un f et la variable devra être entre crochets. Vous pouvez également spécifier le nombre de chiffres après la virgule qui doivent être affichés avec :.1f .

Avertissement

Vous pourriez même mettre zéro car le capteur est précis qu’à un degré près !