grove-dht12.ino
Los puertos Grove del Core son I2C listos: el DHT12 se conecta sin soldadura y se lee en cuatro escrituras Wire. El conexionado de dos hilos es la seña de la casa del ecosistema M5.
Hardware necesario
Un M5Stack Core Basic/Gray (ESP32 en carcasa con TFT de 320×240, botones A/B/C, altavoz, ranura microSD, batería de 110 mAh). 1 sensor Grove DHT12 (o cualquier sensor I2C a 3,3 V con cable Grove).
Cableado
Cable Grove de 4 hilos en el puerto A (detrás de la carcasa): amarillo=GPIO22/SCL, blanco=GPIO21/SDA, rojo=3,3 V, negro=GND.
Funcionamiento
Wire.begin(21,22) abre el bus en los pines del puerto A; el DHT12 expone humedad en 0x00 y temperatura en 0x02, cada una en byte entero + decimal. La trama es idéntica en ambos sentidos. En el Arduino IDE (paquete esp32), placa « M5Stack-Core-ESP32 »; instale la biblioteca « M5Stack » (o M5Unified) desde el gestor y suba.
Para ir más lejos
Un BME280 (0x76) para presión + punto de rocío, o un relé Grove para mandar una enchufe con los botones.
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);
}