PCF8574 I/O expander module with ESP32

Supply 3.3-5 V Bus I2C I2C address 0x20 / 0x21 / 0x22 / 0x23 / 0x24 / 0x25 / 0x26 / 0x27 / 0x38 / 0x39 / 0x3A / 0x3B / 0x3C / 0x3D / 0x3E / 0x3F
GNDVCCSDASCLINTP0P1P2P3P4P5P6P7

Pins and ESP32 wiring

PinRoleESP32 pinNotes
GNDGroundGND
VCCPower3V3
SDAI2C data (SDA)D21
SCLI2C clock (SCL)D22
INTInterruptD35Interrupt output, optional
P0Not wired to the ESP32—Expander I/O pins go to your LEDs or buttons, not to the ESP32
P1Not wired to the ESP32—
P2Not wired to the ESP32—
P3Not wired to the ESP32—
P4Not wired to the ESP32—
P5Not wired to the ESP32—
P6Not wired to the ESP32—
P7Not wired to the ESP32—

Suggested wiring for the 30-pin ESP32 DevKit, avoiding flash, input-only and strapping pins. BoardPilot checks it for you as you wire.

Starter code (Arduino)

#include <Wire.h>

void setup() {
  Serial.begin(115200);
  Wire.begin(21, 22);  // SDA = GPIO 21, SCL = GPIO 22
  Wire.beginTransmission(0x20);
  bool found = Wire.endTransmission() == 0;
  Serial.println(found ? "PCF8574 I/O expander module found at 0x20" : "Not found: check power, GND and SDA/SCL");
}

void loop() {}

Sources

Try it in 3D in BoardPilot

BoardPilot Part data (JSON)

Related parts

Part data: CC BY 4.0, free to reuse with credit to BoardPilot.