grove-dht12.ino

M5Stack Core (ESP32) — familia Basic / Gray (K001 / K002) · Archivo : grove-dht12.ino · Lenguaje : Arduino · Uso : Brancher un capteur Grove I2C sur le port A

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);
}

← Volver a la ficha