devices.esphome.io
M5Stack M5StickC PLUS
M5Stack M5StickC PLUS
Device Type: miscElectrical Standard: globalBoard: esp32Project URL: https://docs.m5stack.com/en/core/m5stickc_plus
Product Images
      
  
        
GPIO Pinout
| Pin | Function | 
|---|---|
| GPIO37 | Button A | 
| GPIO39 | Button B | 
| GPIO10 | Internal LED | 
| GPIO09 | Infrared LED | 
| GPIO13 | SPI CLK | 
| GPIO15 | SPI MOSI | 
| GPIO21 | I2C SDA | 
| GPIO22 | I2C SCL | 
| GPIO05 | Display CS | 
| GPIO23 | Display DC | 
| GPIO19 | Display Reset | 
| GPIO00 | I2S CLK | 
| GPIO26 | I2S LRCLK | 
| GPIO35 | Microphone Data | 
External Component
ESPHome AXP192 Component by martydingo
This custom component it to implement support for the AXP192 for both the M5Stick-C. It is required to turn on the backlight.
Example Configuration
substitutions:  devicename: m5stick  upper_devicename: M5StickC
esphome:  name: $devicename  platform: ESP32  board: m5stick-c  platformio_options:    upload_speed: 115200
wifi:  ssid: !secret wifi_ssid  password: !secret wifi_password    ap:    ssid: $devicename Fallback Hotspot    password: !secret wifi_password
captive_portal:
logger:
api:
ota:
external_components:  - source: github://martydingo/esphome-axp192    components: [axp192]
# AXP192 power management - must be present to initialize TFT power onsensor:  - platform: axp192    address: 0x34    i2c_id: bus_a    update_interval: 30s    battery_level:      name: "M5Stick Battery Level"      id: "m5stick_batterylevel"
binary_sensor:  - platform: gpio    pin:      number: GPIO37      inverted: true    name: ${upper_devicename} Button A    on_press:      then:        - light.turn_on: led1    on_release:      then:        - light.turn_off: led1
  - platform: gpio    pin:      number: GPIO39      inverted: true    name: ${upper_devicename} Button B    on_press:      then:        - light.turn_on: led1    on_release:      then:        - light.turn_off: led1
light:  - platform: monochromatic    output:  builtin_led    name: ${upper_devicename} Led    id: led1
output:  - platform: ledc    pin: 10    inverted: true    id: builtin_led
remote_transmitter:  - pin:      number: GPIO9    carrier_duty_percent: 50%    id: internal
spi:  clk_pin: GPIO13  mosi_pin: GPIO15
i2c:   - id: bus_a     sda: GPIO21     scl: GPIO22     scan: True
font:  - file: "gfonts://Roboto"    id: roboto    size: 12
# 1.14 inch, 135*240 Colorful TFT LCD, ST7789v2display:  - platform:  st7789v    model: TTGO TDisplay 135x240    cs_pin: GPIO5    dc_pin: GPIO23    reset_pin: GPIO18    rotation: 270    lambda: |-      it.print(80, 0, id(roboto), ST77XX_WHITE, TextAlign::TOP_CENTER, "M5Stick Test");
i2s_audio:  id: bus_i2s  i2s_lrclk_pin: G26  i2s_bclk_pin: G0
microphone:  - platform: i2s_audio    i2s_din_pin: GPIO34    i2s_audio_id: bus_i2s    adc_type: external    pdm: true    id: micWorkaround for using devices powered with 5V on the HY2.0-4P port
The 5V power on the HY2.0-4P is fed by the axp192. Therefore these devices must be initialized some time after the axp192 has started.
i2c:   - id: bus_grove     sda: GPIO32     scl: GPIO33     scan: True     frequency: 100kHz     ## Start after the axp192 has powered up     ## In case an additional delay is needed this component may be helpful:     ## https://github.com/ssieb/esphome_components/tree/master/components/boot_delay     setup_priority: 500
sensor: ## Example: anything connected to "i2c_id: bus_grove" should have a lower setup priority than bus_grove.  - platform: scd30    setup_priority: 490    i2c_id: bus_grove    address: 0x61    co2:      name: "CO2"    temperature:      name: "Temperature"    humidity:      name: "Humidity"