ESP32 pin & I²C address conflict planner
Two sensors can each work perfectly and still refuse to work together. Pick a board and the parts you intend to use — this checks for I²C addresses that collide, more UART devices than the chip has UARTs, and more analog inputs than it has usable ADC pins.
Your build
Nothing selected yet.
Known I²C address collisions
Every part below shares a default address with at least one other part in this index. Where both addresses are fixed in silicon, no amount of configuration helps — the fix is a TCA9548A multiplexer or the ESP32's second I²C bus.
| Address | Parts | Can it be resolved? |
|---|---|---|
| 0x29 |
| No — both fixed. Needs a multiplexer or a second bus. |
| 0x38 | No — both fixed. Needs a multiplexer or a second bus. | |
| 0x40 |
| No — both fixed. Needs a multiplexer or a second bus. |
| 0x69 |
| No — both fixed. Needs a multiplexer or a second bus. |
| 0x20 |
| Yes — at least one is strappable. A0-A2 strapping selects 0x20-0x27. |
| 0x39 |
| Yes — at least one is strappable. ADDR pin selects 0x29, 0x39 or 0x49. |
| 0x3C |
| Yes — at least one is strappable. Usually 0x3C; some modules expose a 0x3D jumper. |
| 0x44 |
| Yes — at least one is strappable. ADDR pin selects 0x44 or 0x45. |
| 0x48 |
| Yes — at least one is strappable. ADDR pin selects 0x48-0x4B. |
| 0x53 |
| Yes — at least one is strappable. ADDR pin selects 0x52 or 0x53. |
| 0x5A |
| Yes — at least one is strappable. Ships at 0x5A; reprogrammable in EEPROM. |
| 0x76 |
| Yes — at least one is strappable. SDO pin selects 0x76 or 0x77. |
| 0x77 |
| Yes — at least one is strappable. SDO pin selects 0x76 or 0x77; Adafruit boards ship at 0x77. |
Addresses come from the configurations published on each device page and are cross-checked
against them at build time. Parts without a published config are not listed here, which means
absence is not evidence of no clash — flash with i2c: scan: true
and read the boot log.