diff --git a/components/mcp23Sxx.rst b/components/mcp23Sxx.rst new file mode 100644 index 000000000..71f4f35d4 --- /dev/null +++ b/components/mcp23Sxx.rst @@ -0,0 +1,128 @@ +MCP23Sxx I/O Expander +===================== + +.. seo:: + :description: Instructions for setting up MCP23S08, MCP23S16 or MCP23S17 digital port expander in ESPHome. This is exactly the same API as the MCP23SXX I/O Expander except talks on the SPI bus + :image: mcp23Sxx.png + +The Microchip MCP23Sxx series of general purpose, parallel I/O expansion for SPI bus applications. +This is exactly the same API as the MCP23SXX I/O Expander except talks on the SPI bus + +**Supported Variants :** + +- :ref:`mcp23S08-label` +- :ref:`mcp23S17-label` + +.. _mcp23S08-label: + +MCP23S08 +-------- + +The MCP23S08 component (`datasheet `__, +`Digi-Key `__) has 8 GPIOs that can be configured independently. + +.. code-block:: yaml + + # Example configuration entry + mcp23s08: + - id: 'mcp23s08_hub' + cs_pin: D8 + deviceaddress: 0 + + # Individual outputs + switch: + - platform: gpio + name: "MCP23S08 Pin #0" + pin: + mcp23s08_id: mcp23s08_hub + # Use pin number 0 + number: 0 + # One of INPUT, INPUT_PULLUP or OUTPUT + mode: OUTPUT + inverted: False + + # Individual inputs + binary_sensor: + - platform: gpio + name: "MCP23S08 Pin #1" + pin: + mcp23s08_id: mcp23s08_hub + # Use pin number 1 + number: 1 + # One of INPUT or INPUT_PULLUP + mode: INPUT + inverted: False + +Configuration variables: +~~~~~~~~~~~~~~~~~~~~~~~~ + +- **id** (**Required**, :ref:`config-id`): The id to use for this MCP23S08 component. +- **cs_pin** (*Required*, int): The SPI chip select pin to use +- **deviceaddress** (*Optional*, int): The address of the chip. + Defaults to ``0``. + + +.. _mcp23S17-label: + +MCP23S17 +-------- + +The MCP23S17 component allows you to use MCP23S17 I/O expanders +(`datasheet `__, +`Digi-Key `__) in ESPHome. +It uses the :ref:`SPI 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. + +.. code-block:: yaml + + # Example configuration entry + mcp23s17: + - id: 'mcp23s17_hub' + cs_pin: D8 + deviceaddress: 0 + + # Individual outputs + switch: + - platform: gpio + name: "MCP23S17 Pin #0" + pin: + mcp23s17_id: mcp23s17_hub + # Use pin number 0 + number: 0 + mode: OUTPUT + inverted: False + + # Individual inputs + binary_sensor: + - platform: gpio + name: "MCP23S17 Pin #1" + pin: + mcp23s17_id: mcp23s17_hub + # Use pin number 1 + number: 1 + # One of INPUT or INPUT_PULLUP + mode: INPUT_PULLUP + inverted: False + +Configuration variables: +~~~~~~~~~~~~~~~~~~~~~~~~ + +- **id** (**Required**, :ref:`config-id`): The id to use for this MCP23S17 component. +- **cs_pin** (*Required*, int): The SPI chip select pin to use. +- **deviceaddress** (*Optional*, int): The address of the chip. + Defaults to ``0``. + + +See Also +-------- + +- :ref:`spi` +- :doc:`switch/gpio` +- :doc:`binary_sensor/gpio` +- :apiref:`API Reference (MCP23S08) ` +- :apiref:`API Reference (MCP23S17) ` +- :ghedit:`Edit` diff --git a/index.rst b/index.rst index 37fd9e194..ad66e00f2 100644 --- a/index.rst +++ b/index.rst @@ -349,7 +349,8 @@ Misc Components Servo, components/servo, servo.svg PCF8574 I/O Expander, components/pcf8574, pcf8574.jpg - MCP230XX I/O Expander, components/mcp230xx, mcp230xx.svg + MCP230XX I/O Expander - I²C Bus, components/mcp230xx, mcp230xx.svg + MCP23SXX I/O Expander - SPI Bus, components/mcp23Sxx, mcp230xx.svg MCP3008 8-Channel 10-Bit A/D Converter, components/mcp3008, mcp3008.png SX1509 I/O Expander, components/sx1509, sx1509.jpg SN74HC595 I/O Expander, components/sn74hc595, sn74hc595.jpg