diff --git a/components/pca9554.rst b/components/pca9554.rst new file mode 100644 index 000000000..373466cf4 --- /dev/null +++ b/components/pca9554.rst @@ -0,0 +1,83 @@ +PCA9554 I/O Expander +==================== + +The PCA9554 component allows you to use PCA9554, PCA9554A or PCA9536 I/O expanders +(`PCA9554 datasheet `__, +`PCA9554A datasheet `__, +`PCA9536 datasheet `__) in ESPHome. +It uses :ref:`I²C Bus ` for communication. + +Once configured, you can use any of the 8 pins (PCA9554, PCA9554A) or 4 pins (PCA9536) 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. + +The 7 bit I2C device address ranges are: + +PCA9554 : 0x20 to 0x27 + +PCA9554A : 0x38 to 0x3F + +PCA9536 : 0x41 + +For the PCA9554 and PCA9554A, the actual choice of the I2C device address depends on state of the 3 address pins. +Please refer to the individual datasheets for further details. + +Up to eight PCA9554 and an additional eight PCA9554A devices can reside on the same I2C bus. +Please note that only one PCA9536 device is allowed per I2C bus due to its fixed address. + +The PCA9554 and PCA9554A provide 8 bits of GPIO's (pin numbers 0-7) +The PCA9536 provides 4 bits of GPIO's (pin numbers 0-3). + +Any option accepting a :ref:`Pin Schema ` can theoretically be used, but some more +complicated components that do communication through this I/O expander will +not work. + +.. code-block:: yaml + + # Example configuration entry + pca9554: + - id: 'pca9554a_device' + address: 0x38 + + + # Individual outputs + switch: + - platform: gpio + name: "PCF9554A Pin #0" + pin: + pca9554: pcf9554a_device + # Use pin number 0 + number: 0 + # One of INPUT or OUTPUT + mode: + output: true + inverted: false + +Configuration variables: +************************ + +- **id** (**Required**, :ref:`config-id`): The id to use for this PCF9554 component. +- **address** (*Optional*, int): The I²C address of the driver. + Defaults to ``0x20``. + + + +Pin configuration variables: +**************************** + +- **pca9554** (**Required**, :ref:`config-id`): The id of the PCA9554 component of the pin. +- **number** (**Required**, int): The pin number. +- **inverted** (*Optional*, boolean): If all read and written values + should be treated as inverted. Defaults to ``false``. +- **mode** (*Optional*, string): A pin mode to set for the pin at. One of ``INPUT`` or ``OUTPUT``. + + +See Also +-------- + +- :ref:`i2c` +- :doc:`switch/gpio` +- :doc:`binary_sensor/gpio` +- :apiref:`pca9554/pca9554.h` +- :ghedit:`Edit` diff --git a/images/pca9554a.jpg b/images/pca9554a.jpg new file mode 100644 index 000000000..2085ce232 Binary files /dev/null and b/images/pca9554a.jpg differ diff --git a/index.rst b/index.rst index e72ccc8a6..3536fc6b0 100644 --- a/index.rst +++ b/index.rst @@ -675,6 +675,7 @@ Misc Components Servo, components/servo, servo.svg Sprinkler, components/sprinkler, sprinkler-variant.svg + PCA9554 I/O Expander, components/pca9554, pca9554a.jpg PCF8574 I/O Expander, components/pcf8574, pcf8574.jpg MCP230XX I/O Expander - I²C Bus, components/mcp230xx, mcp230xx.svg TCA9548A I²C Multiplexer, components/tca9548a, tca9548a.jpg