capteur-dht11.ino

Arduino UNO R3 · Fichier : capteur-dht11.ino · Langage : Arduino · Usage : Lire température et humidité avec un capteur DHT11

Le capteur DHT11 fournit température et humidité sur un seul fil numérique. Le croquis interroge le capteur toutes les 2 secondes (limite du capteur), contrôle les erreurs de trame et affiche les mesures sur le moniteur série.

Matériel requis

Une Arduino Uno R3 (ATmega328P, 5 V, 16 MHz) alimentée par USB ou jack 7-12 V. 1 capteur DHT11 (boîtier 3 ou 4 broches) + résistance 10 kΩ.

Câblage

VDD sur 5V, GND sur GND, DATA sur la broche 4 avec résistance 10 kΩ de pull-up vers 5V. Sur un module 3 broches, la résistance est déjà présente.

Fonctionnement

readTemperature/readHumidity déclenchent le protocole 1 fil du capteur. Un NaN signale une trame corrompue : on réessaie au cycle suivant sans bloquer la boucle.

Exécution

Dans l'Arduino IDE, choisissez la carte « Arduino Uno » et le port série correspondant, puis cliquez sur Téléverser. Ouvrez le moniteur série à 9600 bauds pour suivre les messages.

Variantes

Passez à un DHT22 (précision ±0,5 °C) en changeant TYPE_DHT, ou envoyez les mesures vers un serveur via un module série (ESP8266, GNSS...).

capteur-dht11.ino

// Temperature + humidite avec un DHT11 (ou DHT22 en changeant le type).
#include <DHT.h>

#define TYPE_DHT DHT11 // DHT22 pour la version precise
const int PIN_DHT = 4;
DHT dht(PIN_DHT, TYPE_DHT);

unsigned long derniereLecture = 0;
const unsigned long PERIODE = 2000; // le DHT11 ne doit pas etre interroge plus d'1 fois/s

void setup() {
  Serial.begin(9600);
  dht.begin();
  Serial.println(F("DHT pret"));
}

void loop() {
  if (millis() - derniereLecture < PERIODE) return;
  derniereLecture = millis();

  float h = dht.readHumidity();
  float t = dht.readTemperature(); // Celsius

  if (isnan(h) || isnan(t)) {
    Serial.println(F("Echec de lecture DHT (verifier cablage/pull-up)"));
    return;
  }

  Serial.print(F("Temperature : "));
  Serial.print(t, 1);
  Serial.print(F(" C | Humidite : "));
  Serial.print(h, 1);
  Serial.println(F(" %"));
}

← Retour à la fiche