Capteur de température et d’humidité

Capteur DHT11

Le capteur DHT11 mesure la température et l’humidité. L’utilisation de ce type de capteur est intéressante pour un débutant car il permet de mesurer une grandeur physique accessible à tous.

Le capteur DHT11 a 4 broches, mais il est souvent vendu sur une carte support qui possède 3 broches. Il communique avec l’Arduino très simplement au travers d’une de ses entrées numériques. Les 2 autres broches sont pour son alimentation 5 V et la masse (GND).

DHT11
Module DHT11

Le montage est très simple, il suffit de câbler le 5 V de l’Arduino Uno sur la broche 5 V, la masse de l’Arduino Uno sur la broche GND et la broche DATA du capteur sur la broche numérique 2 de l’Arduino Uno par exemple.

schéma-dht11

Le croquis (programme) de l’Arduino est très simple grâce à la librairie « DHT sensor library » de Adafruit.

// Capteur de temperature et d'humidite DHT11
// https://tutoduino.fr/
// Copyleft 2020

#include "DHT.h"

// Definit la broche de l'Arduino sur laquelle la 
// broche DATA du capteur est reliee 
#define DHTPIN 2

// Definit le type de capteur utilise
#define DHTTYPE DHT11

// Declare un objet de type DHT
// Il faut passer en parametre du constructeur 
// de l'objet la broche et le type de capteur
DHT dht(DHTPIN, DHTTYPE);

void setup() {

  Serial.begin(9600);
  
  // Initialise la capteur DHT11
  dht.begin();

}

void loop() {

  // Recupere la temperature et l'humidite du capteur et l'affiche
  // sur le moniteur serie
  Serial.println("Temperature = " + String(dht.readTemperature())+" °C");
  Serial.println("Humidite = " + String(dht.readHumidity())+" %");

  // Attend 10 secondes avant de reboucler
  delay(10000);

}

L’affichage de la température et de l’humidité se fait sur le moniteur série de l’Arduino.

affichage sur l'arduino de la température
Montage du capteur DHT11 avec un Arduino Uno

Capteur DHT22

Le capteur DHT22 est très similaire au DHT11, mais il offre une meilleur précision de mesure (± 0,5 °C).

Il faut faire attention car le câblage du module DHT22 est différent du DHT11. Les broches GND et DATA sont inversées sur ces deux modules.

Module DHT22
DHT22
Montage du DHT22 sur ma breadboard

Sinon la programmation est identique, il suffit de changer la partie du code :

#define DHTTYPE DHT11

en :

#define DHTTYPE DHT22

Étalonner le capteur de température

J’ai remarqué que l’étalonnage des capteurs était souvent assez mauvais, il peut-être utile d’utiliser un thermomètre de référence et d’appliquer une correction à la mesure retournée par le capteur. L’utilisation d’une variable dédiée permettra de modifier facilement cette valeur étalonnage d’un capteur à l’autre. D’ailleur il ne s’agit pas d’une variable mais d’un #define car il permet d’économiser de la mémoire sur l’Arduino par rapport à l’utilisation d’une variable.

// Capteur de temperature et d'humidite DHT22
// https://tutoduino.fr/
// Copyleft 2020

#include "DHT.h"

// Definit la broche de l'Arduino sur laquelle la 
// broche DATA du capteur est reliee 
#define DHTPIN 2

// Definit le type de capteur utilise
#define DHTTYPE DHT22

// Constante mesuree avec un thermometre de reference
// qui sert a etalonner le capteur de temperature
#define DELTA_TEMPERATURE 0.7

// Declare un objet de type DHT
// Il faut passer en parametre du constructeur 
// de l'objet la broche et le type de capteur
DHT dht(DHTPIN, DHTTYPE);

void setup() {

  Serial.begin(9600);
  
  // Initialise la capteur DHT11
  dht.begin();

}

void loop() {

  // Recupere la temperature et l'humidite du capteur et l'affiche
  // sur le moniteur serie
  Serial.println("Temperature = " + String(dht.readTemperature() - DELTA_TEMPERATURE)+" °C");
  Serial.println("Humidite = " + String(dht.readHumidity())+" %");

  // Attend 10 secondes avant de reboucler
  delay(1000);

}