Tags:
create new tag
view all tags

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.

wemosDHT11.png

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).

dht11DataPlot.png

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 array
dht11Data = 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 :

dht11Data.png

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.

gnuplotData.png

Comparer le résultat avec le fichier original (comprimé).

Le fichier non comprimé peut facilement être tracé avec gnuplot.

dht11Gnuplot.png

On peut aussi tracer les donnés directement avec matplotlib.

-- Uli Raich - 2021-11-16

Comments

Topic attachments
I Attachment History Action Size Date WhoSorted ascending Comment
Texttxt dht11.txt r1 manage 0.4 K 2021-11-16 - 15:13 UliRaich  
PNGpng dht11Data.png r1 manage 10.3 K 2021-11-16 - 15:45 UliRaich  
PNGpng dht11DataPlot.png r1 manage 86.4 K 2021-11-16 - 15:13 UliRaich  
PNGpng dht11Gnuplot.png r1 manage 39.2 K 2021-11-16 - 15:45 UliRaich  
PNGpng gnuplotData.png r1 manage 2.7 K 2021-11-16 - 15:45 UliRaich  
PNGpng wemosDHT11.png r1 manage 113.4 K 2021-11-16 - 14:50 UliRaich  
Topic revision: r1 - 2021-11-16 - UliRaich
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback