MCP230xx I/O Expander

The Microchip MCP230xx series of general purpose, parallel I/O expansion for I²C bus applications come in two different variants: the 8-bit MCP23008 and the 16-bit MCP23017, which provide 8 and 16 additional GPIO pins, respectively.

MCP23017

The MCP23017 component allows you to use MCP23017 I/O expanders (datasheet, Adafruit) in ESPHome. It uses the I²C Bus for communication.

Once configured, you can use any of the 16 pins as pins for your projects. Within ESPHome they emulate a real internal GPIO pin and can therefore be used with many of ESPHome’s components such as the GPIO binary sensor or GPIO switch.

# Example configuration entry
mcp23017:
  - id: 'mcp23017_hub'
    address: 0x20

# Individual outputs
switch:
  - platform: gpio
    name: "MCP23017 Pin #0"
    pin:
      mcp23017: mcp23017_hub
      # Use pin number 0
      number: 0
      # One of INPUT, INPUT_PULLUP or OUTPUT
      mode: OUTPUT
      inverted: False

Configuration variables:

  • id (Required, ID): The id to use for this MCP23017 component.
  • address (Optional, int): The I²C address of the driver. Defaults to 0x21.

MCP23008

The configuration is essentially the same with the MCP23008 component (datasheet, Adafruit):

# Example configuration entry
mcp23008:
  - id: 'mcp23008_hub'
    address: 0x20

# Individual outputs
switch:
  - platform: gpio
    name: "MCP23008 Pin #0"
    pin:
      mcp23008: mcp23008_hub
      # Use pin number 0
      number: 0
      # One of INPUT, INPUT_PULLUP or OUTPUT
      mode: INPUT_PULLUP
      inverted: False

Configuration variables:

  • id (Required, ID): The id to use for this MCP23008 component.
  • address (Optional, int): The I²C address of the driver. Defaults to 0x21.