1
Hub Control Bus (I2C)
blue — ESP32/PlatformIO firmware edited this page 2026-06-11 10:26:28 -04:00

Hub Control Bus (I2C)

Wires the ESP32-S3-Touch-LCD-1.28 hub to the two source boards (B = JBL, C = Cardo) so the on-screen UI can set delay / volume (and later pick speakers).

S3 expansion header — free pins

The 1.27 mm header (P2) brings out: GPIO15, 16, 17, 18, 21, 33 + 3V3, VSYS, GND. We use two of them for I2C.

I2C bus wiring (3 wires + pull-ups)

Signal S3 hub (master) Board B (JBL) Board C (Cardo)
SDA GPIO15 GPIO32 GPIO32
SCL GPIO16 GPIO33 GPIO33
GND GND (header) GND GND
  • S3 GPIO15 (SDA) -> B GPIO32 and C GPIO32
  • S3 GPIO16 (SCL) -> B GPIO33 and C GPIO33
  • S3 GND -> common with B and C (and with Board A — everything shares one ground)

Pull-up resistors (required for I2C)

Add two ~4.7 kohm resistors: one from SDA -> 3V3, one from SCL -> 3V3 (use the S3 header's 3V3 pin). One pair for the whole bus is enough.

I2C addresses

  • Board B (JBL) = 0x10
  • Board C (Cardo) = 0x11

Notes

  • This is separate from the audio I2S bus (Board A GPIO5/25/23 -> B/C GPIO19/18/22).
  • B/C touch pads (GPIO4 = +, GPIO27 = -) still work as a local fallback.
  • Keep wires short; common ground across all boards is mandatory.
  • The S3 is powered by its own USB/battery; only GND is shared for signaling.