Artes do Sul · M5Stack Ecosystem / Sensor Reference

Família M5Stack: Sensores de Temperatura, Umidade & Clima

Especificações de hardware, barramento I2C Grove Port A, pinagem nos controladores (Cardputer ADV, StickC Plus2, AtomS3, StampS3), código C++ M5Unified, configuração ESPHome e integrador MQTT para o lab de telemetria.

Barramento I2C (Grove Port A)
Precisão Temp ±0.1°C a ±0.2°C
Faixa de Operação -40°C a +125°C
Tensão Lógica 3.3V (Alim. 5V)
Compatibilidade M5Unified / ESPHome
M5Stack Unit ENV & Sensores Térmicos

1. Módulos & Units da Linha Térmica / Ambiental

Seleção dos sensores oficiais M5Stack compatíveis diretamente com a porta Grove padrão:

U001-D · Padrão 2026

Unit ENV IV (SHT40 + BMP280)

Sensor de alta resolução de 4ª geração: Sensirion SHT40 (±0.2°C, 0~100% RH) e Bosch BMP280 (300~1100 hPa). Ideal para monitoramento de clima e cisterna.

I2C: 0x44 (SHT40), 0x76 (BMP280)
U001-C · Clássico

Unit ENV III (SHT30 + QMP6988)

Sensor ambiental consagrado com chip Sensirion SHT30 e sensor barométrico QMP6988. Totalmente suportado por bibliotecas legadas e ESPHome nativo.

I2C: 0x44 (SHT30), 0x70 (QMP6988)
U170 · IA / Gás

Unit ENV Pro (BME688)

Módulo 4-em-1 com IA: temperatura, umidade, pressão e scanner de gases (VOC, VSC, IAQ). Perfeito para detectar qualidade do ar e gases na casa de bombas.

I2C: 0x77 (BME688)
U028-B · Sem Contato

Unit NCIR 2 (MLX90614)

Termômetro infravermelho óptico sem contato (-70°C a +380°C). Apontado para a carcaça da bomba para alarme imediato de aquecimento mecânico e elétrico.

I2C: 0x5A (MLX90614)
U172 · Termografia

Unit Thermal2 (MLX90640)

Matriz termográfica de 32×24 pixels. Gera imagem térmica ao vivo direto no ecrã do Cardputer ADV ou CoreS3 para inspeção de disjuntores e contatoras.

I2C: 0x33 (MLX90640)
U133 · Isolamento 5kV

Unit KMeterISO (Termopar K)

Interface para termopar Tipo K com isolador galvânico digital. Suporta de -200°C a +1350°C com total imunidade a transientes do motor da bomba.

I2C: 0x66 (KMeterISO)

2. Calculadora Interativa & Diagnóstico de Condensação

Simule as leituras do sensor para calcular o Ponto de Orvalho (Dew Point), índice de calor e o risco de condensação de umidade na carcaça metálica da bomba ou quadros da cisterna:

Temperatura Ambiente: 26.0 °C
Umidade Relativa (RH): 75 %
Pressão Atmosférica (BMP280): 1013.2 hPa
Ponto de Orvalho (Dew Point) 21.2 °C
Sensação Térmica (Heat Index) 27.4 °C
Umidade Absoluta 18.3 g/m³
Altitude Barométrica Estimada 0 m
⚠️ Alerta Cisterna: Superfícies metálicas abaixo de 21.2 °C sofrerão condensação de água.

3. Pinagem Grove Port A & Conexão aos Controladores

Todos os sensores M5Stack I2C utilizam o cabo padrão Grove 4 vias HY2.0-4P:

Pin 1 · GND
Referência de terra (0V) Fio Preto
Pin 2 · 5V / VCC
Alimentação 5V DC (LDO interno 3.3V) Fio Vermelho
Pin 3 · SCL
I2C Clock Line Fio Amarelo
Pin 4 · SDA
I2C Data Line Fio Branco

Mapeamento GPIO por Dispositivo M5Stack (Port A)

Dispositivo SoC SDA (Fio Branco) SCL (Fio Amarelo) Porta Física
M5Stack Cardputer ADV ESP32-S3 GPIO 2 GPIO 1 Grove Superior
M5StickC Plus 2 ESP32-PICO-V3-02 GPIO 32 GPIO 33 Grove Topo
AtomS3 / AtomS3 Lite ESP32-S3 GPIO 2 GPIO 1 Grove Fundo
M5CoreS3 / Core2 ESP32-S3 / ESP32 GPIO 2 GPIO 1 Port A (Vermelha)

4. Mapa de Endereços I2C

Dispositivo / Unit Chipset Endereço I2C Grandeza Medida Frequência Barramento
Unit ENV IV Sensirion SHT40 0x44 (7-bit) Temperatura (-40~125°C) & Umidade (0~100%) 100 kHz ~ 400 kHz (Fast Mode)
Unit ENV IV Bosch BMP280 0x76 (7-bit) Pressão Atmosférica (300~1100 hPa) 100 kHz ~ 400 kHz
Unit ENV III Sensirion SHT30 0x44 (7-bit) Temperatura & Umidade 100 kHz ~ 400 kHz
Unit ENV III QST QMP6988 0x70 (7-bit) Pressão Barométrica 100 kHz ~ 400 kHz
Unit ENV Pro Bosch BME688 0x77 (7-bit) Temp, Umid, Pressão, VOC, IAQ (Gases) 100 kHz ~ 400 kHz
Unit NCIR 2 Melexis MLX90614 0x5A (7-bit) Temperatura de Superfície IR (-70~380°C) 100 kHz (SMBus)
Unit Thermal2 Melexis MLX90640 0x33 (7-bit) Termografia Matricial (768 pontos) 400 kHz ~ 1 MHz

5. Exemplos de Implementação (C++ & ESPHome)

A) ESPHome YAML (Cardputer ADV / StickC Plus 2)

# Configuração I2C para Unit ENV IV no ESPHome
i2c:
  sda: GPIO2  # G2 no Cardputer ADV / AtomS3 (G32 no StickC Plus2)
  scl: GPIO1  # G1 no Cardputer ADV / AtomS3 (G33 no StickC Plus2)
  scan: true
  frequency: 100kHz

sensor:
  # Sensor SHT40 (Temperatura e Umidade)
  - platform: sht4x
    temperature:
      name: "Cisterna Temperatura Ambiente"
      id: cisterna_temp
      accuracy_decimals: 2
    humidity:
      name: "Cisterna Umidade Relativa"
      id: cisterna_hum
      accuracy_decimals: 1
    address: 0x44
    update_interval: 15s

  # Sensor BMP280 (Pressão Barométrica)
  - platform: bmp280
    temperature:
      name: "BMP280 Temp Interna"
    pressure:
      name: "Cisterna Pressão Atmosférica"
      id: cisterna_press
    address: 0x76
    update_interval: 30s

B) Arduino / PlatformIO C++ (M5Unified)

#include <M5Unified.h>
#include <Wire.h>
#include <SensirionI2CSht4x.h>
#include <Adafruit_BMP280.h>

SensirionI2CSht4x sht4x;
Adafruit_BMP280 bmp;

void setup() {
    auto cfg = M5.config();
    M5.begin(cfg);

    // Inicializa I2C na porta Grove com os pinos corretos do hardware
    Wire.begin(M5.getPin(m5::pin_name_t::port_a_sda), M5.getPin(m5::pin_name_t::port_a_scl), 400000);

    sht4x.begin(Wire, 0x44);
    bmp.begin(0x76);

    M5.Display.setTextSize(2);
    M5.Display.println("M5 ENV IV Monitor");
}

void loop() {
    M5.update();

    float temp = 0.0f;
    float hum = 0.0f;
    sht4x.measureHighPrecision(temp, hum);
    float press = bmp.readPressure() / 100.0F; // em hPa

    M5.Display.clear();
    M5.Display.setCursor(0, 10);
    M5.Display.printf("Temp: %.2f C\n", temp);
    M5.Display.printf("Umid: %.1f %%\n", hum);
    M5.Display.printf("Pres: %.1f hPa\n", press);

    delay(2000);