MicroPython : ESP32/ESP8266 avec capteur de température et d’humidité DHT11/DHT22

MicroPython : ESP32/ESP8266 avec capteur de température et d'humidité DHT11/DHT22

Ce tutoriel montre comment utiliser les capteurs de température et d’humidité DHT11 ou DHT22 avec les cartes de développement ESP32 et ESP8266 à l’aide du micrologiciel MicroPython.

MicroPython ESP32ESP8266 avec capteur de temperature et dhumidite DHT11DHT22

Utilisation du module DHT

Il y a un dht module fourni par défaut avec le firmware MicroPython. Ainsi, il est facile d’obtenir la température et l’humidité.

1. Commencez par importer le dht et machine modules:

import dht
from machine import Pin

2. Créer un dht objet qui fait référence à la broche de données du capteur, dans ce cas c’est GPIO 14:

sensor = dht.DHT11(Pin(14))
#sensor = dht.DHT22(Pin(14))

3. Pour mesurer et lire les valeurs du capteur, utilisez :

sensor.measure() 
sensor.temperature()
sensor.humidity()

Continuez à lire pour le tutoriel complet et détaillé.

Prérequis – Flasher MicroPython

Pour suivre ce tutoriel, vous avez besoin du firmware MicroPython installé dans vos cartes ESP32 ou ESP8266. Vous avez également besoin d’un IDE pour écrire et télécharger le code sur votre carte. Nous vous suggérons d’utiliser Thonny IDE ou uPyCraft IDE :

Présentation des capteurs DHT11 et DHT22

Les capteurs DHT11 et DHT22 sont utilisés pour mesurer la température et l’humidité relative. Ceux-ci sont très populaires parmi les fabricants et les amateurs d’électronique.

Capteur de température et d'humidité DHT11/DHT22 utilisant Arduino IDE

Ces capteurs contiennent une puce qui effectue la conversion analogique-numérique et émet un signal numérique avec la température et l’humidité. Cela les rend très faciles à utiliser avec n’importe quel microcontrôleur.

DHT11 contre DHT22

Les DHT11 et DHT22 sont très similaires, mais diffèrent par leurs spécifications. Le tableau suivant compare certaines des spécifications les plus importantes des capteurs de température et d’humidité DHT11 et DHT22. Pour une analyse plus approfondie de ces capteurs, veuillez consulter la fiche technique des capteurs.

DHT11
DHT22
MicroPython ESP32ESP8266 avec capteur de temperature et dhumidite DHT11DHT22
1642078811 527 MicroPython ESP32ESP8266 avec capteur de temperature et dhumidite DHT11DHT22
Écart de température 0 à 50 ºC +/-2 ºC -40 à 80 ºC +/-0,5ºC
Plage d’humidité 20 à 90 % +/-5% 0 à 100% +/-2%
Résolution Humidité : 1%
Température : 1ºC
Humidité : 0,1%
Température : 0,1 °C
Tension de fonctionnement 3 – 5,5 V CC 3 – 6 V CC
Offre actuelle 0,5 – 2,5 mA 1 – 1,5 mA
Période d’échantillonnage 1 seconde 2 secondes
Prix 1 $ à 5 $ 4 $ à 10 $
Où acheter Consulter les prix Consulter les prix

Le capteur DHT22 a une meilleure résolution et une plage de mesure de température et d’humidité plus large. Cependant, c’est un peu plus cher et vous ne pouvez demander des lectures qu’avec un intervalle de 2 secondes.

Le DHT11 a une portée plus petite et il est moins précis. Cependant, vous pouvez demander des lectures de capteur toutes les secondes. C’est aussi un peu moins cher.

Malgré leurs différences, ils fonctionnent de manière similaire et vous pouvez utiliser le même code pour lire la température et l’humidité. Il vous suffit de sélectionner dans le code le type de capteur que vous utilisez.

Brochage DHT

Les capteurs DHT ont quatre broches, comme illustré dans la figure suivante. Cependant, si vous installez votre capteur DHT dans une carte de dérivation, il est livré avec seulement trois broches et avec une résistance de rappel interne sur la broche 2.

Capteur de température et d'humidité DHT22 utilisant Arduino IDE

Le tableau suivant montre le brochage DHT22 et DHT11. Lorsque le capteur est face à vous, la numérotation des broches commence à 1 de gauche à droite

Broche DHT Se connecter à
1 3.3V
2 Tout GPIO numérique ; connectez également une résistance pull-up de 10k Ohm
3 Ne pas se connecter
4 GND

Pièces requises

Pour suivre ce tutoriel, vous devez câbler le capteur de température DHT11 ou DHT22 à l’ESP32 ou à l’ESP8266. Vous devez utiliser une résistance pull-up de 10k Ohm.

Voici une liste des pièces dont vous avez besoin pour construire le circuit :

Vous pouvez utiliser les liens précédents ou aller directement sur MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

1642078811 321 MicroPython ESP32ESP8266 avec capteur de temperature et dhumidite DHT11DHT22

Schéma : ESP32 avec DHT11/DHT22

Câblez le capteur DHT22 ou DHT11 à la carte de développement ESP32 comme indiqué dans le schéma suivant.

1642078811 523 MicroPython ESP32ESP8266 avec capteur de temperature et dhumidite DHT11DHT22

Dans cet exemple, nous connectons la broche de données DHT à GPIO 14. Cependant, vous pouvez utiliser n’importe quelle autre broche numérique appropriée.

Apprenez à utiliser les GPIO ESP32 avec notre guide : Référence de brochage ESP32 : Quelles broches GPIO devriez-vous utiliser ?

Schéma : ESP8266 avec DHT11/DHT22

Suivez le tutoriel suivant si vous utilisez une carte ESP8266.

1642078812 180 MicroPython ESP32ESP8266 avec capteur de temperature et dhumidite DHT11DHT22

Code

Ouvrez un nouveau fichier dans votre IDE MicroPython (comme uPyCraft IDE ou Thonny IDE) et copiez le code suivant.

# Complete project details at https://Raspberryme.com

from machine import Pin
from time import sleep
import dht 

sensor = dht.DHT22(Pin(14))
#sensor = dht.DHT11(Pin(14))

while True:
  try:
    sleep(2)
    sensor.measure()
    temp = sensor.temperature()
    hum = sensor.humidity()
    temp_f = temp * (9/5) + 32.0
    print('Temperature: %3.1f C' %temp)
    print('Temperature: %3.1f F' %temp_f)
    print('Humidity: %3.1f %%' %hum)
  except OSError as e:
    print('Failed to read sensor.')

Afficher le code brut

Comment fonctionne le code

Importer le Épingler classe de la machine module pour définir les broches, importer le sommeil méthode de la temps module pour ajouter des délais à votre code, et enfin importer le dht module pour importer les fonctions à lire depuis les capteurs DHT.

from machine import Pin
from time import sleep
import dht 

Définir un dht objet appelé capteur sur la broche de données spécifiée. Dans ce cas, nous connectons la broche de données à GPIO 14. Utilisez la commande suivante si vous utilisez un capteur DHT22 :

sensor = dht.DHT22(Pin(14))

Commentez la ligne précédente et décommentez la suivante si vous utilisez un capteur DHT11.

#sensor = dht.DHT11(Pin(14))

Dans le tandis que boucle, on utilise essayer et à l’exception déclarations. Dans le essayer déclaration, nous essayons d’obtenir les valeurs de température et d’humidité.

Noter: try and except nous permet de continuer l’exécution du programme lorsqu’une exception se produit. Par exemple, lorsqu’une erreur se produit, l’exécution du code du bloc try est arrêtée et transférée au bloc except. Dans notre exemple, l’exception est particulièrement utile pour empêcher l’ESP32 ou l’ESP8266 de planter lorsque nous ne sommes pas en mesure de lire à partir du capteur.

Dans le essayer , ajoutez d’abord un délai de deux secondes car la fréquence d’échantillonnage maximale du DHT22 est de deux secondes. Dans le cas du DHT11, c’est une seconde.

sleep(2)

Avant de demander la température et l’humidité, vous devez utiliser le mesure() méthode sur le capteur objet.

sensor.measure()

Ensuite, lisez la température avec capteur.température() et l’humidité avec capteur.humidité(). Enregistrez ces lectures sur le température et Hum variables.

temp = sensor.temperature()
hum = sensor.humidity()

La commande suivante convertit la température en degrés Fahrenheit.

temp_f = temp * (9/5) + 32.0

Enfin, imprimez toutes les lectures sur le shell MicroPython en utilisant le imprimer() une fonction:

print('Temperature: %3.1f C' %temp)
print('Temperature: %3.1f F' %temp_f)
print('Humidity: %3.1f %%' %hum)

En cas d’erreur lors de l’obtention des lectures, le à l’exception l’instruction s’exécute et un message d’erreur s’affiche :

except OSError as e:
  print('Failed to read sensor.')

Manifestation

Après avoir copié le code et apporté les modifications nécessaires, vous pouvez télécharger le code sur votre ESP32 ou ESP8266.

Si vous utilisez Thonny IDE, il vous suffit d’aller sur Appareil > Télécharger le script actuel en tant que script principal. Après avoir téléchargé le code, appuyez sur le bouton RESET intégré à l’ESP.

Les nouvelles lectures de température et d’humidité doivent être affichées sur le MicroPython Shell, toutes les deux secondes.

1642078812 554 MicroPython ESP32ESP8266 avec capteur de temperature et dhumidite DHT11DHT22

Si vous utilisez uPyCraft IDE et que vous rencontrez des problèmes pour télécharger le code, accédez au didacticiel suivant et faites défiler jusqu’à la section « Exécution de votre premier script » : Premiers pas avec MicroPython sur ESP32 et ESP8266.

Dépannage

Si votre capteur DHT ne parvient pas à obtenir les lectures, lisez notre Guide de dépannage DHT pour vous aider à résoudre le problème.

Conclusion

Obtenir des lectures de température et d’humidité avec MicroPython est facile grâce au module dht. Après avoir défini un dht objet, il vous suffit d’utiliser le Température() et humidité() méthodes.

Nous espérons que vous avez trouvé ce guide utile. Désormais, vous pouvez afficher les lectures de vos capteurs sur un serveur Web auquel vous pouvez accéder depuis votre smartphone. Suivez simplement ce tutoriel : Web Server MicroPython….

Si vous aimez MicroPython et que vous souhaitez en savoir plus, nous vous recommandons de consulter notre eBook : Programmation MicroPython avec ESP32 et ESP8266.

Merci d’avoir lu.