prefixkit Ask an engineerAsk Support RU

ESPHome devices

M5Stack CoreS3: ESPHome

M5Stack CoreS3 (other devices, ESP32): GPIO pinout and a starter ESPHome config with relays, buttons, LED. Local Home Assistant control with no cloud.

Type
Other devices
Chip
ESP32
Region standard
GLOBAL

Pinout

PinFunction
GPIO3Display CS
GPIO35Display MISO / D-C (3-wire)
GPIO36Display/SPI SCLK
GPIO37Display/SPI MOSI
GPIO4microSD CS (shares SPI bus)
GPIO21Touchscreen IRQ
GPIO12Internal I2C SDA (PMU, touch, IMU, AW9523)
GPIO11Internal I2C SCL
GPIO2Grove Port A SDA
GPIO1Grove Port A SCL
GPIO9Port B
GPIO8Port B
GPIO18Port C
GPIO17Port C
GPIO0I2S MCLK (microphone codec)
GPIO14I2S DATA IN (microphone codec)
GPIO13I2S DATA OUT (speaker)
GPIO33I2S LRCK (mic + speaker)
GPIO34I2S BCLK (mic + speaker)

Find it in shops: AliExpress

Links open a search in the shop; some are affiliate links: buying through them costs you nothing extra and supports this site. We do not sell devices or get them from manufacturers.

Starter ESPHome config

Built from the pinout above. Keys and the Wi-Fi password come from secrets.yaml in ESPHome. Check the pins against your hardware revision before flashing: one model can ship with different boards.

substitutions:
  name: m5stack-cores3

esphome:
  name: ${name}
  friendly_name: "M5Stack CoreS3"

esp32:
  board: esp32dev

logger:
api:
  encryption:
    key: !secret api_key
ota:
  - platform: esphome
    password: !secret ota_password
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap: {}
captive_portal:

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO21
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 1"  # Touchscreen IRQ
  - platform: gpio
    pin:
      number: GPIO12
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 2"  # Internal I2C SDA (PMU, touch, IMU, AW9523)

# Other pins from the pinout:
#   GPIO3: Display CS
#   GPIO35: Display MISO / D-C (3-wire)
#   GPIO36: Display/SPI SCLK
#   GPIO37: Display/SPI MOSI
#   GPIO4: microSD CS (shares SPI bus)
#   GPIO11: Internal I2C SCL
#   GPIO2: Grove Port A SDA
#   GPIO1: Grove Port A SCL
#   GPIO9: Port B
#   GPIO8: Port B
#   GPIO18: Port C
#   GPIO17: Port C
#   GPIO0: I2S MCLK (microphone codec)
#   GPIO14: I2S DATA IN (microphone codec)
#   GPIO13: I2S DATA OUT (speaker)
#   GPIO33: I2S LRCK (mic + speaker)
#   GPIO34: I2S BCLK (mic + speaker)

How to flash

  • Most devices are flashed over UART: a 3.3 V USB-TTL adapter to RX, TX, GND and 3V3, holding GPIO0 to ground at power-on (ESP8266/ESP32). Mains power disconnected.
  • Beken (BK72xx) and Realtek chips are flashed with ltchiptool, or with cloudcutter without opening the case if the firmware allows it.
  • Details and board photos: the device page in the ESPHome database.

A config from scratch: ESPHome generator. Which pins are safe: pinout.

Similar devices

Idea?