dht22.ino
Le DHT22 fournit température et humidité sur un seul fil : la bibliothèque Adafruit décode les trames 40 bits, et le script ajoute le point de rosée. La cadence est volontairement de 2 s, maximum du capteur.
Matériel requis
Une carte ESP32-C3 (RISC-V 160 MHz, Wi-Fi + BLE 5) type DevKitM-1 ou SuperMini, alimentée par USB (native sur C3). 1 DHT22 (module 3 broches avec résistance de pull-up intégrée) ou DHT22 nu + 10 kΩ.
Branchement
VDD 3,3 V, DATA sur GPIO4 avec pull-up 10 kΩ vers 3,3 V, GND. Le DHT11 fonctionne aussi (changer DHTTYPE).
Fonctionnement
readTemperature/readHumidity déclenchent une acquisition complète (start bit + 40 bits timedés). Le capteur étant lent, on saute les tours de loop jusqu'à 2 s ; les NaN signalent une trame perdue. Dans l'Arduino IDE (paquet esp32), choisissez « ESP32C3 Dev Module », activez « USB CDC On Boot » si besoin, puis Téléverser. GPIO9 sert souvent de bouton BOOT ; GPIO8 doit rester libre au boot.
Pour aller plus loin
Afficher sur l'OLED du sketch suivant, ou publier les valeurs en BLE/Wi-Fi vers un tableau de bord.
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);
}