Le capteur DHT11 utilise dans ce module combine un capteur de température et un capteur d’hygrométrie. Ce capteur utilise un processeur interne :

  1. pour conditionner les signaux mesuré pour les restituer sous une forme directement exploitable,
  2. pour effectuer les corrections nécessaires.

Ce module communique sur un bus mono-fil analogue à un bus I2C sans horloge. L’utilisation d’un tel bus est décrite dans un article spécial. Pour cette exemple on utilise la bibliothèque spéciale : « DHT ».

HXJ-26
La bibliothèque DHT utilisée ici peut être téléchargée et décompressée dans le répertoire “librairies”.

/***
 *  Auteur:  Jean DEMARTINI
 *  Date:    3/07/2015
 *  
 *  Capteur Combo Température Hygrométrie DHT11
 *
 *  +-------+
 *  | DHT11 |
 *  |       |
 *  +-|-|-|-+
 *    1 2 3
 *
 *  Ce capteur communique sur un bus Single-Wire
 *  Ce type de bus est en fait un I2C sans horloge
 *  Le décodage des données échangées utilise une librairie
 *  ici: "DHT"
 *
 *  1: Data
 *  2: Vcc (3.3V-5V)
 *  3: GND
 ***/
#include 

dht DHT;

#define DHT11_PIN 5

void 
setup() {
  Serial.begin(115200);
  Serial.println("DHT TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT_LIB_VERSION);
  Serial.println();
  Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}

void 
loop() {
  // READ DATA
  Serial.print("DHT11, \t");
  int chk = DHT.read11(DHT11_PIN);
  switch (chk) {
    case DHTLIB_OK:  
	Serial.print("OK,\t"); 
	break;
    case DHTLIB_ERROR_CHECKSUM: 
	Serial.print("Checksum error,\t"); 
	break;
    case DHTLIB_ERROR_TIMEOUT: 
	Serial.print("Time out error,\t"); 
	break;
    case DHTLIB_ERROR_CONNECT:
        Serial.print("Connect error,\t");
        break;
    case DHTLIB_ERROR_ACK_L:
        Serial.print("Ack Low error,\t");
        break;
    case DHTLIB_ERROR_ACK_H:
        Serial.print("Ack High error,\t");
        break;
    default: 
	Serial.print("Unknown error,\t"); 
	break;
  }
  // affichage
  Serial.print(DHT.humidity, 1);
  Serial.print(",\t\t");
  Serial.println(DHT.temperature, 1);

  delay(5000);
}

Ce programme fournit les résultats suivant :

hxj-26