dht22.ino

GD32F103 (GigaDevice) — puce + cartes compatibles Blue Pill · Fichier : dht22.ino · Langage : Arduino · Usage : Lire un DHT22 sur le GD32

Le protocole 1 fil du DHT est minuté en microsecondes : la bibliothèque Adafruit fonctionne sur le core STM32F1 mais la calibration des délais dépend de la vitesse CPU. Les échecs systématiques signalent ce réglage.

Matériel requis

Une carte de développement GD32F103C8T6 (Cortex-M3 108 MHz, compatible broche à broche Blue Pill), alimentée en 3,3 V/5 V, avec un adaptateur ST-Link ou série. 1 DHT22 + résistance 10 kΩ (module 3 broches : déjà intégrée).

Branchement

VDD 3,3 V, DATA sur PA4 avec pull-up 10 kΩ, GND. Fil court (< 30 cm) : le protocole est sensible au bruit.

Fonctionnement

readTemperature horodate les impulsions via micros() ; sur cœur rapide, la bibliothèque bascule sur DWT/timer. Les NaN = trame corrompue, pas forcément un capteur mort. Avec Arduino : installez le core « STM32F1 » (Roger Clark, gestionnaire de cartes) et choisissez la carte « GD32F103C » ; le LED utilisateur est PC13 (actif à LOW). En C : bibliothèque GD32F10x + ST-Link.

Pour aller plus loin

Ajoutez l'affichage OLED du sketch précédent, ou le seuil d'alerte sur le buzzer.

dht22.ino

// DHT22 sur PA4 — bibliotheque DHT sensor library (Adafruit).
#include <DHT.h>
#define DHTPIN PA4
#define DHTTYPE DHT22

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

void setup() {
  Serial.begin(115200);
  dht.begin();
  Serial.println("DHT22 sur GD32 (2 s mini entre lectures)");
}

void loop() {
  if (millis() - precedent < 2000) return;
  precedent = millis();
  float t = dht.readTemperature();
  float h = dht.readHumidity();
  if (isnan(t) || isnan(h)) { Serial.println("trame perdue"); return; }
  Serial.printf("T=%.1f C  HR=%.1f %%\n", t, h);
  // Le GD32 etant 100x plus rapide, la bibliotheque doit calibrer ses
  // microsecondes : si les lectures echouent toutes, voir note doc.
}

← Retour à la fiche