DHT11, capteur de température et de l'humidité
Introduction
Le DHT11 est un capteur mesure la température ambiante et l'humidité de l'air. Il convertit les signaux mesurés en numérique et donne accès aux valeurs numérique via a protocole série propriétaire. Il utilise une seule ligne GPIO (GPIO 16) pour la communication avec l'ESP32.
MicroPython met à disposition des pilotes pour les capteurs du type DHT (DHT11 et DHT22). Ceci facilite l'accès aux données de température de l'humidité dans le chip. Le pilote cache le protocole dans son code et l'étudiant ne peut pas voir ce qui se passe d'arrière la scène.
Pour cette raison, j'ai écrit un deuxième pilote permettant de lire les valeurs brutes du protocole, bit par bit. Ceci permet aux étudiants de comprendre les détails du protocole et d'extraire les valeurs physiques eux-mêmes.
Ce pilote (module dht11Raw) lance une mesure sur le DHT11 et il scanne la ligne de donnée du DHT11 chaque 4 us. L'état de la ligne de données est sauvé dans un tableau de 32*32 bits. Le premier bit mesuré est le bit le plus significatif du premier mot de 32 bits et le dernier bit mesuré est le bit le moins significatif du dernier mot du tableau.
Voilà, la fiche technique du DHT11 :
https://www.robocraft.ru/files/datasheet/DHT11.pdf
Lire soigneusement !
Exercice 1 : Le DHT11 en utilisant le pilote MicroPython
Écrire un script qui lit les valeurs de température et de l'humidité toutes les 2 s, en utilisant le pilote fourni par MicroPython, et les imprimer :
https://docs.micropython.org/en/latest/esp8266/quickref.html#dht-driver.
Exercice 2 : Comprendre le protocole du DHT11
La copie d'écran montre les données brutes d'une mesure du DHT11. Essayer d'extraire la température. l'humidité et la somme de contrôle et vérifier que les données sont cohérents (somme de contrôle correcte).
Une fois que vous avez réussi d'extraire les données manuellement, écrire un script pour les extraire automatiquement. Tracer le résultat. Vous pouvez utiliser les données ci-dessous :
https://iotworkshop.africa/pub/IoT_Course_French/LeDHT11/dht11.txt
Exercice 3: Lire les données brutes du DHT11
Lire les données brutes du DHT11 et les sauver dans un fichier sur l'ESP32. Le module dht11Raw a une seule fonction:
dht11ReadRaw(pin,dht11Data)
Les données sont transférées dans un tableau de 32 valeurs entier qui peut être créé comme suit :
import arraydht11Data = array.array("I",[0]*32)
Ceci crée le tableau nécessaire et le rempli de zéros. Une fois que les données sont retournés dans le tableau il faut les sauver dans un fichier, dans un format convenable. Dans mes solutions j'utilise un fichier nommé "/data/dht11.txt". Avant d'écrire il faut s'assurer que le classeur "/data" existe sur l'ESP32. Vous pouvez accomplir ceci avec un appel système
uos.stat('/data'). Si /data n'existe pas encore ceci soulève une erreur ENOENT. Dans ce cas if faut créer le classeur avec
uos.makedir('/data').
Écrire les données dans un format hexadécimal avec 8 digits. Voilà un exemple :
Ils existent 2 manières différentes pour accomplir un tel format tous les deux bien décrits dans
https://pyformat.info/.
Le fichier peut être transféré sur le PC pour évaluation approfondie avec la commande
ampy get /data/dht11.txt dht11.txt
Exercice 4 : Évaluer les données
Extraire les bits individuels et les écrire dans un fichier non comprimé. Chaque data ne contient qu'un zéro ou un.
Comparer le résultat avec le fichier original (comprimé).
Le fichier non comprimé peut facilement être tracé avec gnuplot.
On peut aussi tracer les donnés directement avec
matplotlib.
--
Uli Raich - 2021-11-16
Comments