DHT11, capteur de temp\xE9rature et de l'humidit\xE9
Introduction
Le DHT11 est un capteur mesure la temp\xE9rature ambiante et l'humidit\xE9 de l'air. Il convertit les signaux mesur\xE9s en num\xE9rique et donne acc\xE8s aux valeurs num\xE9rique via a protocole s\xE9rie propri\xE9taire. Il utilise une seule ligne GPIO (GPIO 16) pour la communication avec l'ESP32.
MicroPython met \xE0 disposition des pilotes pour les capteurs du type DHT (DHT11 et DHT22). Ceci facilite l'acc\xE8s aux donn\xE9es de temp\xE9rature de l'humidit\xE9 dans le chip. Le pilote cache le protocole dans son code et l'\xE9tudiant ne peut pas voir ce qui se passe d'arri\xE8re la sc\xE8ne.
Pour cette raison, j'ai \xE9crit un deuxi\xE8me pilote permettant de lire les valeurs brutes du protocole, bit par bit. Ceci permet aux \xE9tudiants de comprendre les d\xE9tails du protocole et d'extraire les valeurs physiques eux-m\xEAmes.
Ce pilote (module dht11Raw) lance une mesure sur le DHT11 et il scanne la ligne de donn\xE9e du DHT11 chaque 4 us. L'\xE9tat de la ligne de donn\xE9es est sauv\xE9 dans un tableau de 32*32 bits. Le premier bit mesur\xE9 est le bit le plus significatif du premier mot de 32 bits et le dernier bit mesur\xE9 est le bit le moins significatif du dernier mot du tableau.
Voil\xE0, la fiche technique du DHT11 :
https://www.robocraft.ru/files/datasheet/DHT11.pdf
Lire soigneusement !
Exercice 1 : Le DHT11 en utilisant le pilote MicroPython
\xC9crire un script qui lit les valeurs de temp\xE9rature et de l'humidit\xE9 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'\xE9cran montre les donn\xE9es brutes d'une mesure du DHT11. Essayer d'extraire la temp\xE9rature. l'humidit\xE9 et la somme de contr\xF4le et v\xE9rifier que les donn\xE9es sont coh\xE9rents (somme de contr\xF4le correcte).
Une fois que vous avez r\xE9ussi d'extraire les donn\xE9es manuellement, \xE9crire un script pour les extraire automatiquement. Tracer le r\xE9sultat. Vous pouvez utiliser les donn\xE9es ci-dessous :
https://iotworkshop.africa/pub/IoT_Course_French/LeDHT11/dht11.txt
Exercice 3: Lire les donn\xE9es brutes du DHT11
Lire les donn\xE9es brutes du DHT11 et les sauver dans un fichier sur l'ESP32. Le module dht11Raw a une seule fonction:
dht11ReadRaw(pin,dht11Data)
Les donn\xE9es sont transf\xE9r\xE9es dans un tableau de 32 valeurs entier qui peut \xEAtre cr\xE9\xE9 comme suit :
import arraydht11Data = array.array("I",[0]*32)
Ceci cr\xE9e le tableau n\xE9cessaire et le rempli de z\xE9ros. Une fois que les donn\xE9es sont retourn\xE9s dans le tableau il faut les sauver dans un fichier, dans un format convenable. Dans mes solutions j'utilise un fichier nomm\xE9 "/data/dht11.txt". Avant d'\xE9crire il faut s'assurer que le classeur "/data" existe sur l'ESP32. Vous pouvez accomplir ceci avec un appel syst\xE8me
uos.stat('/data'). Si /data n'existe pas encore ceci soul\xE8ve une erreur ENOENT. Dans ce cas if faut cr\xE9er le classeur avec
uos.makedir('/data').
\xC9crire les donn\xE9es dans un format hexad\xE9cimal avec 8 digits. Voil\xE0 un exemple :
Ils existent 2 mani\xE8res diff\xE9rentes pour accomplir un tel format tous les deux bien d\xE9crits dans
https://pyformat.info/.
Le fichier peut \xEAtre transf\xE9r\xE9 sur le PC pour \xE9valuation approfondie avec la commande
ampy get /data/dht11.txt dht11.txt
Exercice 4 : \xC9valuer les donn\xE9es
Extraire les bits individuels et les \xE9crire dans un fichier non comprim\xE9. Chaque data ne contient qu'un z\xE9ro ou un.
Comparer le r\xE9sultat avec le fichier original (comprim\xE9).
Le fichier non comprim\xE9 peut facilement \xEAtre trac\xE9 avec gnuplot.
On peut aussi tracer les donn\xE9s directement avec
matplotlib.
-- %USERSIG{UliRaich - 2021-11-16}%