dht22.ino

ESP32-C6 · Archivo : dht22.ino · Lenguaje : Arduino · Uso : Lire température et humidité avec un DHT22

El DHT22 entrega temperatura y humedad por un solo hilo: la librería Adafruit decodifica las tramas de 40 bits y el script añade el punto de rocío. La cadencia de 2 s es el límite del sensor.

Hardware necesario

Una placa ESP32-C6 (RISC-V a 160 MHz, Wi-Fi 6 + BLE 5 + 802.15.4) tipo DevKitC-1, alimentada por USB. 1 DHT22 (módulo de 3 pines con pull-up integrada) o DHT22 suelto + 10 kΩ.

Cableado

VDD 3,3 V, DATA en GPIO4 con pull-up de 10 kΩ a 3,3 V, GND. El DHT11 también vale (cambiar DHTTYPE).

Funcionamiento

readTemperature/readHumidity lanzan una adquisición completa (bit de arranque + 40 bits temporizados). El sensor es lento: se saltan vueltas de loop hasta 2 s; los NaN indican trama perdida. En el Arduino IDE (paquete esp32 reciente), elija « ESP32C6 Dev Module » y suba; para Zigbee/Thread use ESP-IDF (idf.py set-target esp32c6).

Para ir más lejos

Mostrar en el OLED del siguiente sketch, o publicar los valores por BLE/Wi-Fi a un cuadro de mando.

dht22.ino

// DHT22 sur GPIO4 — bibliothèque « DHT sensor library » (Adafruit).
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22

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

void setup() {
  Serial.begin(115200);
  dht.begin();
  Serial.println("DHT22 pret (2 s entre mesures)");
}

void loop() {
  if (millis() - precedent < 2000) return;   // le DHT22 parle au mieux à 0,5 Hz
  precedent = millis();

  float t = dht.readTemperature();
  float h = dht.readHumidity();
  if (isnan(t) || isnan(h)) {
    Serial.println("Echec de lecture : cabling/alimentation ?");
    return;
  }
  float dew = 243.04 * (17.625 * t / (t + 243.04) + log(h / 100.0))
            / (17.625 - (17.625 * t / (t + 243.04) + log(h / 100.0)));
  Serial.printf("T=%.1f C  HR=%.1f %%  point de rosee=%.1f C\n", t, h, dew);
}

← Volver a la ficha