PCA9554 I/O Expander¶
The PCA9554 component allows you to use a variety of Texas Instrument I/O expanders in ESPHome using the I²C Bus for communication.
Devices tested as working with this component include PCA9554, PCA9554A, PCA9536 and PCA9535. Equivalent TI I/O expanders with the same command interface and up to 16 I/O pins such as the TCA9554 and TCA9535 should also work.
Once configured, you can use any of the 16 (PCA9535), 8 (PCA9554, PCA9554A) or 4 (PCA9536) pins within 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.
Note
The 7 bit I²C device address ranges are:
PCA9554 and PCA9535:
0x20
to0x27
PCA9554A:
0x38
to0x3F
PCA9536:
0x41
For the PCA9535, PCA9554 and PCA9554A, the actual choice of the I²C device address depends on state of the 3 address pins. Please refer to the individual datasheets linked at the bottom of the page for further details to set the address.
Up to eight PCA9535 or PCA9554 and an additional eight PCA9554A devices can reside on the same I²C bus. Please note that only one PCA9536 device is allowed per I²C bus due to its fixed address.
The PCA9535 provides 16 bits of GPIOs (pin numbers 0-15).
The PCA9554 and PCA9554A provide 8 bits of GPIOs (pin numbers 0-7).
The PCA9536 provides 4 bits of GPIOs (pin numbers 0-3).
Any option accepting a Pin Schema can theoretically be used, but some more complicated components that do communication through this I/O expander will not work.
# Example configuration entry
pca9554:
- id: 'pca9554a_device'
address: 0x38
# Individual outputs
switch:
- platform: gpio
name: "PCF9554A Pin #0"
pin:
pca9554: pca9554a_device
# Use pin number 0
number: 0
# One of INPUT or OUTPUT
mode:
output: true
inverted: false
Configuration variables:¶
id (Required, ID): The id to use for this
pca9554
component.address (Optional, int): The I²C address of the driver. Defaults to
0x20
.pin_count (Optional, int): The number of bits implemented in the expander. Defaults to 8. This should be set to 16 when using a PCA9535 and 4 when using a PCA95367.
Note
A PCA9535 will not work (even on the lower 8 bits) unless the pin_count is set to 16.
Pin configuration variables:¶
pca9554 (Required, 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
orOUTPUT
.