Clone
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.