Vous êtes sur la page 1sur 4

1

Table conviviale numérique & éco responsable….


Partie SIN

A. Capteurs de température et d'humidité : DHT

Le capteur DHT22 (aussi connu sous la référence


AM2302) et son petit frère le DHT11 sont des
capteurs de température et d'humidité "deux en
un".

Le capteur DHT22 / AM2302 est capable de


mesurer des températures de -40 à +125°C avec
une précision de +/- 0.5°C et des taux d'humidité
relative de 0 à 100% avec une précision de +/- 2%
(+/- 5% aux extrêmes, à 10% et 90%). Une mesure
peut être réalisée toutes les 500 millisecondes.

Le capteur DHT11 est lui capable de


mesurer des températures de 0 à +50°C
avec une précision de +/- 2°C et des taux
d'humidité relative de 20 à 80% avec une
précision de +/- 5%. Une mesure peut être
réalisée toutes les secondes.

Le DHT22 et le DHT11 sont tous les deux


compatibles 3.3 volts et 5 volts (le
fabricant recommande cependant de
toujours alimenter le capteur en 5 volts
pour avoir des mesures précises). Ils ont
aussi le même câblage et le même
protocole de communication.

Les capteurs DHTxx ont la particularité de communiquer


avec le microcontrôleur via une unique broche
d'entrée / sortie.

Bien que cela soit marqué "One Wire" un peu partout sur
le document constructeur du capteur, il ne s'agit pas d'un
véritable bus de communication 1-Wire.

Il s'agit simplement d'un protocole de communication


propriétaire, utilisant un seul fil et nécessitant des timings
très précis.

1STI2D – Innovation Technologique


2

B. Le déroulement d'une communication

B.1. Format d'une trame de communication

1. D’après le chronogramme ci-dessus et les explications précédentes, les informations fournies par le DHT22 sont
envoyés à Arduino sous forme série ou parallèle ?

2. L’information représentant la température est codées sous quel format (Nombre de bits) ?

3. Quel est le NL de début de transmission de la trame ?

B.2. Détails du format d'une trame de communication (capteur DHT22)

La communication avec un capteur DHTxx se fait en 3 étapes :

 Le microcontrôleur maître (la carte Arduino dans notre cas) réveille le capteur en plaçant la ligne de données à LOW
pendant au moins 800μs (au moins 18ms pour le DHT11). Durant ce laps de temps, le capteur va se réveiller et
préparer une mesure de température et d'humidité. Une fois le temps écoulé, le maître va libérer la ligne de données
et passer en écoute.

 Une fois la ligne de données libérée, le capteur répond au maître (pour montrer qu'il est bien réveillé) en maintenant la
ligne de données à LOW pendant 80μs puis à HIGH pendant 80μs.

 Le capteur va ensuite transmettre une série de 40 bits (5 octets). Les deux premiers octets contiennent la mesure de
l'humidité. Les deux octets suivants contiennent la mesure de la température et le cinquième octet contient une
somme de contrôle qui permet de vérifier que les données lues sont correctes.
1STI2D – Innovation Technologique
3

N.B. La broche de communication des capteurs DHTxx est de type "collecteur ouvert". La sortie du capteur ne génère pas de
tension. Elle ne fait que commuter (via un transistor) la tension au niveau de la résistance de tirage sur la ligne de données. Dans
ce contexte, HIGH est la tension de la résistance de tirage et LOW la tension à la masse (0 volt).

Cela peut paraitre complexe, mais sans cette sortie à collecteur ouvert, il ne serait pas possible d'alimenter le capteur en 5 volts
tout en ayant une résistance de tirage à 3.3 volts (dans le cas d'un montage avec une carte Arduino en 3.3 volts derrière).

C. Câblage du DHT avec Arduino

Remarque : L’affichage de la température sera effectué sur le terminal (écran) à l’aide d’une liaison série utilisant les
broches « Tx » et « Rx ». Cette liaison matérielle n’apparait pas sur le schéma de câblage ci-dessus.

4. Dans le schéma ci-dessus quelle est la broche d’E/S sur laquelle vont transiter les informations ?

5. Quelle est la tension d’alimentation du DHT22 sur le schéma ? Correspond t-elle à la documentation constructeur ?

D. Etude logicielle - DHT avec Arduino

6. Dans le programme nous utilisons la librairie “#include "DHT.h"”. Quelle est son utilité?

7. Soient les deux lignes de codes suivantes :

Serial.begin(9600);
Serial.println("DHTxx test!");

Quelles sont leurs utilités ?

8. Soit la ligne de code suivante : “dht.begin();”


Quelle est son utilité ?

9. Soit la ligne de code suivante : “float t = dht.readTemperature();”


Quelle est son utilité ?

10. Qu’appelle-t-on un «float» ? Combien de bits constitue un «float» ?

11. La variable «t» est-elle compatible avec l’information de la question 2 ?

1STI2D – Innovation Technologique


4

#include "DHT.h"

#define DHTPIN 8
#define DHTTYPE DHT22 // DHT 22 (AM2302)

DHT dht(DHTPIN, DHTTYPE,4);

void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
}

void loop() {
delay(1000);
float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(h) || isnan(t) ) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C ");
}

E. Mise en œuvre DHT avec Arduino

12. Sous l’environnement Arduino, éditez le programme ci-dessus, exportez les binaires compilés dans le fichier de
simulation ISIS. Vérifier le fonctionnement.

1STI2D – Innovation Technologique

Vous aimerez peut-être aussi