dht22.ino
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 clásica (módulo ESP32-WROOM-32, doble núcleo Xtensa a 240 MHz, Wi-Fi + Bluetooth) tipo DevKitC / DOIT V1, alimentada por micro-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, instale el paquete « esp32 » (Gestor de placas), elija « Dev Module », el puerto y Subir (mantenga BOOT si falla la detección). GPIO34-39 son solo entrada; evite GPIO6-11 y GPIO12.
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);
}