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 :
- pour conditionner les signaux mesuré pour les restituer sous une forme directement exploitable,
- 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 ».
/*** * 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 :