capteur-dht11.ino

Arduino Pro Mini · Archivo : capteur-dht11.ino · Lenguaje : Arduino · Uso : Lire température et humidité avec un capteur DHT11

El sensor DHT11 entrega temperatura y humedad por un único hilo digital. El sketch lo consulta cada 2 segundos (límite del sensor), controla los errores de trama e imprime las medidas en el monitor serie.

Hardware

Un Arduino Pro Mini (ATmega328P, existe en 5 V/16 MHz y 3,3 V/8 MHz) conectado a un convertidor USB-serie (FTDI) o un programador ICSP. 1 sensor DHT11 (carcasa de 3 o 4 pines) + resistencia de 10 kΩ.

Cableado

VDD a 5V, GND a GND, DATA al pin 4 con resistencia de pull-up de 10 kΩ a 5V. En un módulo de 3 pines la resistencia ya está incluida.

Funcionamiento

readTemperature/readHumidity activan el protocolo de 1 hilo del sensor. Un NaN indica una trama corrupta: se reintenta en el ciclo siguiente sin bloquear el bucle.

Ejecución

Elige « Arduino Pro Mini » en el IDE (5 V/16 MHz o 3,3 V/8 MHz según tu modelo), el procesador ATmega328P, el puerto correcto y Subir. El convertidor debe estar cableado DTR-DTR, RX-TX, TX-RX, VCC-VCC, GND-GND.

Variantes

Cambia a un DHT22 (precisión ±0,5 °C) modificando TYPE_DHT, o envía las medidas a un servidor mediante un módulo serie (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(" %"));
}

← Volver a la ficha