Après avoir abordé la partie théorique sur les capteurs de température et d’humidité DHT11 et DHT22 dans un précédent article, place à la pratique !

Un bref rappel sur la connectique du capteur composé de 4 pins :

  1. VCC : Alimentation
  2. Data
  3. Non utilisé
  4. GND : Commun

Pins-DHTxxPins DHTxx

Voici donc le schéma abordé précédemment

Connexion-DHT11-a-lArduinoConnexion DHT11 à l’Arduino

Une librairie pour les gouverner tous

Derrière ce titre qui est un clin d’œil à un célèbre film, se cache une librairie réalisée par adafruit. Elle permet de communiquer directement avec le DHT11 et 12.

Cette librairie est disponible en téléchargement chez github : https://github.com/adafruit/DHT-sensor-library

Une fois téléchargée, copiez le dossier DHT dans le dossier <racine_sketch_arduino>/libraries/ Si vous n’avez pas toucher à la configuration initiale et que vous êtes sous windows, le dossier racine se trouve dans “Documents/Arduino”.

Voici comment se compose la librairie :

Appel de la librairie

1
#include “DHT.h”

Déclaration du capteur

1
2
3
4
5
6
7
8
9
10
11
// La pin est la broche sur laquelle est reliée le data du capteur
// Le type est en fonction du capteur et peut prendre ces valeurs :
// DHT11
// DHT22
// DHT21
DHT dht(pin, type);
void setup() {
//Initialisation du capteur
dht.begin();
}

Récupération de la température / humidité

Uniquement 2 fonctions simples pour la lecture. Attention à espacer les mesures de quelques secondes, le capteur est lent.

1
2
3
4
5
6
// Lecture de l’humidité
float humidite = dht.readHumidity();
// Lecture de la température en Celsius
float temp_celcius = dht.readTemperature();
// Lecture de la température en Fahrenheit
float temp_fahr = dht.readTemperature(true);

Température ressentie

Le capteur permet également de connaitre la température ressentie. C’est un calcul à partir de la température et de la température. Vous trouverez plus d’information sur la page Wikipedia.

1
float temp_ressentie = dht.computeHeatIndex(temp_fahr, humidite);

Voila, vous savez tout ce qu’il y a a savoir maintenant !

Le programme complet

Ce programme est largement inspiré du programme d’exemple de la librairie.

Arduino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/* Utilisation du capteur DHT22 */
//Appel de la librairie
#include <DHT.h>
//Constantes
#define DHTPIN 2 //Broche sur laquelle le capteur est câblé
#define DHTTYPE DHT22 //Type de capteur
//Déclaration du capteur
DHT dht(DHTPIN, DHTTYPE);
void setup() {
//Lancement de la liaison série
Serial.begin(9600);
//Initialisation du capteur
dht.begin();
}
void loop() {
//Attente avant la prochaine mesure
delay(2000);
//Humidité
float humidite = dht.readHumidity();
//Température en celcius
float tempCelcius = dht.readTemperature();
//Température en Fahrenheit
float tempFahr = dht.readTemperature(true);
//Vérification qu’il n’y ait pas d’erreurs de lecture
if (isnan(humidite) || isnan(tempCelcius) || isnan(tempFahr)) {
Serial.println(“Erreur de lecture du capteur DHT!”);
return;
}
// Température ressentie
float tempRessentie = dht.computeHeatIndex(tempFahr, humidite);
//Conversion en degrés
tempRessentie = (tempRessentie-32.0)*(5.0/9.0);
Serial.print(“Humidite: “);
Serial.print(humidite);
Serial.print(” %\t”);
Serial.print(“Temperature: “);
Serial.print(tempCelcius);
Serial.print(” *C “);
Serial.print(tempFahr);
Serial.print(” *F\t”);
Serial.print(“Temperature ressentie: “);
Serial.print(tempRessentie);
Serial.println(” *C”);
}