DHT11 : Mesurer température et taux d’humidité ambiant avec la Pi Pico en MicroPython
(Mis à jour le 13/02/2023)
Le capteur DHT11 est très populaire dans le monde des makers et est inclus de base dans MicroPython. Son faible coût et sa facilité d’utilisation sont ses principaux atouts.
Avertissement
Cependant, il est assez basique car il ne peut effectuer qu’une seule mesure par seconde.
Prendre en main le capteur DHT11
Il existe également un modèle plus complet, le DHT22, identifiable par son boîtier blanc et un peu plus grand que le DHT11 (boîtier bleu). Malgré ces différences, l’utilisation est identique. Pour plus de détails sur ces différences, vous pouvez consulter la comparaison entre le DHT11 et le DHT22 . Si vous avez le DHT22, vous pouvez suivre le tutoriel correspondant .
Quelques caractéristiques techniques du DHT11
Il est possible d’alimenter le DHT11 directement à partir de la broche 3V3 de la Raspberry Pi Pico.
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 |
Cependant, pour des mesures plus précises et plus régulières, je vous suggère d’utiliser un capteur de la famille des BMExxx de Bosh, mais son coût sera plus élevé.
Branchements du DHT11
Le capteur DHT11 a entre 3 et 4 broches en fonction du modèle. Une broche est superflue si votre module en a 4. Malheureusement, le brochage est différent selon le fabricant 😕 .
La numérotation des broches commence par la gauche, quand on a le capteur face à soi. Voici un récapitulatif des possibilités :
Mis à part les broches d’alimentation, le DHT11 a une seule broche de sortie pour transmettre les données du capteur.
Circuit électrique pour utiliser le module DHT11 avec une Raspberry Pi Pico
Si votre module ne contient pas de résistance de pullup, il faut en rajouter une entre 4.7kΩ et 10kΩ entre les broches 3V3
et le signal (S
). Vous pouvez toujours en rajouter une, cela ne fera pas de mal.
N’importe quelle broche de sortie avec support PWM peut être utilisée. Ici, nous utilisons la broche GP5
. Dans les circuits suivants, j’utilise le capteur DHT11 d’Elegoo, n’oubliez pas de faire les adaptations nécessaires si le vôtre est différent 🙂. Ce module contient déjà une résistance R1 de 10kΩ au-dessus de la lettre S
écrite sur le module.
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 librairie pour communiquer avec le capteur. Heureusement, elle est incluse dans les versions récentes de MicroPython, donc pas besoin d’en télécharger une supplémentaire 😎. Le code à utiliser est très simple : il faut créer un objet dht
avec un numéro de pin et appeler la fonction capteur.measure()
.
from machine import Pin
from time import sleep
import dht
capteur = dht.DHT11(Pin(5))
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 la pico ne reçoit pas les mesures du capteur
Note
N’oubliez pas de rajouter un délai de 1 seconde entre 2 mesures, car le DHT11 ne peut pas aller plus vite 😮💨. S’il n’est pas capable de suivre la cadence, une erreur sera renvoyée et capturée par le try:
execpt:
Dans le terminal de Thonny IDE, vous verrez la température exprimée en °C et le taux d’humidité en pourcentage.
Note
Vous pouvez souffler sur le capteur DHT11, comme quand on souffle sur une vitre glacée pour enlever la buée. Vous devriez alors voir le taux d’humidité fluctuer.
En Python, on peut utiliser des f-string
pour afficher des variables avec un texte, par exemple : f"Humidite: {capteur.humidity():.1f}"
. La chaîne de caractères doit commencer par un f
et la variable doit être contenue entre crochets. Vous pouvez préciser le nombre de chiffres après la virgule qui doivent être affichés avec :.1f
. Avec le DHT11, on devrait mettre zéro car le capteur est précis à 1 degré près.
Librairie optimisée en utilisant les PIO de la Pi Pico
https://github.com/danjperron/PicoDHT22/blob/main/PicoDHT22.py
Cette section est réservée aux abonnés. Il vous reste -245% à découvrir.
Devenir membre premiumDéjà abonné ? Connectez-vous