grove-dht12.ino
Les ports Grove du Core sont des I2C prêts à l'emploi : le DHT12 se branche sans soudure et se lit en quatre écritures Wire. Le connectage « deux fils » est l'argument maison de l'écosystème M5.
Matériel requis
Un M5Stack Core Basic/Gray (ESP32 dans un boîtier avec écran TFT 320×240, 3 boutons A/B/C, haut-parleur, micro SD, batterie 110 mAh). 1 capteur Grove DHT12 (ou tout capteur I2C 3,3 V avec câble Grove).
Branchement
Câble Grove 4 fils sur le port A (derrière le boîtier) : jaune=GPIO22/SCL, blanc=GPIO21/SDA, rouge=3,3 V, noir=GND.
Fonctionnement
Wire.begin(21,22) ouvre le bus sur les broches du port A ; le DHT12 expose humidité en 0x00 et température en 0x02, chacune en octet entier + décimale. La trame est identique dans les deux sens. Dans l'Arduino IDE (paquet esp32), carte « M5Stack-Core-ESP32 » ; installez la bibliothèque « M5Stack » (ou M5Unified) via le gestionnaire, puis Téléverser.
Pour aller plus loin
Un BME280 (0x76) pour pression + point de rosée, ou un relais Grove pour commander une prise avec les boutons.
grove-dht12.ino
// DHT12 (I2C 0x5C) sur le port Grove A — deux fils, pas de soudure.
#include <M5Stack.h>
#include <Wire.h>
#define ADRESSE 0x5C
float lire(uint8_t reg) {
Wire.beginTransmission(ADRESSE);
Wire.write(reg);
Wire.endTransmission(false);
Wire.requestFrom((size_t)2);
int8_t entier = Wire.read();
uint8_t dec = Wire.read();
return entier + dec / 10.0;
}
void setup() {
M5.begin();
Wire.begin(21, 22); // SDA21/SCL22 = port Grove A du Core
M5.Lcd.setTextSize(2);
}
void loop() {
float t = lire(0x00); // octet humidite (trame DHT12 identique)
float h = lire(0x02);
M5.Lcd.setCursor(10, 60);
M5.Lcd.printf("T = %5.1f C\n", h); // reg. 0x02 = temperature
M5.Lcd.printf("HR = %5.1f %%\n", t);
M5.update();
if (M5.BtnA.wasPressed()) M5.Speaker.tone(440, 50);
delay(1000);
}