dht11.ino

ESP8266 (module ESP-12E) · Fichier : dht11.ino · Langage : Arduino · Usage : Relever température et humidité avec un DHT11

Le capteur d'initiation par excellence sur NodeMCU : une trame 1 fil toutes les 2 s, décodée par la bibliothèque Adafruit. Le sketch traduit les chiffres en un verdict binaire lisible sur le moniteur série.

Matériel requis

Un module ESP-12E (ESP8266EX, Wi-Fi 2,4 GHz) monté sur une carte NodeMCU / Wemos D1 mini, alimentée par micro-USB. 1 DHT11 (module 3 broches) + résistance 10 kΩ si boîtier nu.

Branchement

VDD 3,3 V ou 5 V (modules), DATA sur D2 avec pull-up 10 kΩ vers VDD, GND. D2 = GPIO4, broche sûre au boot.

Fonctionnement

readTemperature déclenche la transaction complète (start + 40 bits) ; le DHT11 est limité à 0,5 Hz, d'où le garde-fou millis(). Les NaN couvrent les trames perdues, fréquentes sur les fils longs. Dans l'Arduino IDE, installez le paquet « esp8266 », choisissez « NodeMCU 1.0 (ESP-12E Module) » puis Téléverser (GPIO0 à LOW si le flash échoue). L'ADC A0 lit 0-1 V (diviseur NodeMCU : 0-3,3 V).

Pour aller plus loin

Publiez les valeurs en Wi-Fi (sketch serveur web) ou affichez-les sur un OLED SSD1306 partagé en I2C.

dht11.ino

// DHT11 sur D2 (GPIO4) — bibliotheque DHT sensor library (Adafruit).
#include <DHT.h>
#define DHTPIN D2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
unsigned long precedent = 0;

void setup() {
  Serial.begin(115200);
  dht.begin();
  Serial.println("DHT11 pret (lecture toutes les 2 s)");
}

void loop() {
  if (millis() - precedent < 2000) return;
  precedent = millis();

  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) {
    Serial.println("Echec : verifier cabling et alim 3,3-5 V");
    return;
  }
  // Indice de confort tres approximatif, pour donner du sens au chiffre
  Serial.printf("T=%.1f C  HR=%.0f %%  (confort : %s)\n", t, h,
                (t >= 18 && t <= 26 && h >= 30 && h <= 70) ? "correct" : "aerer");
}

← Retour à la fiche