LOGBOOK

HELP

Quiz Entry - updated: 2026.10.20

You want two BME280 sensors on the same ESP32 I2C bus. Why does that work, and what must you change so the ESP32 can tell them apart?

I2C is a shared bus: every device listens on the same two wires and only answers to its own 7-bit address. Give the two sensors different addresses (0x76 and 0x77) by setting the SDO pin of one of them.

On I2C the master starts every transfer by sending an address. All devices on the bus see it, and only the one with that address responds. So many devices can share SCL and SDA, as long as no two have the same address. A clash would make both drive the data line at once and garble every reply.

The BME280 has a single address pin, so it can take one of two addresses:

SDO pin Address
Tied to GND 0x76
Tied to VDDIO (3.3 V) 0x77

Breakouts tie SDO one way by default. Adafruit's defaults to 0x77, many cheap modules default to 0x76. To put two sensors on one bus, set them to different addresses (jumper or a wire on SDO) and tell the driver which address each one has.

A third BME280 does not fit: there is no third address. Then you need a second I2C bus (the ESP32 has two I2C controllers), an I2C multiplexer, or SPI, where every device gets its own chip-select line instead of an address.

Go deeper:

From Quiz: SIOT / GPIO Input and I2C Sensor Wiring on the ESP32 | Updated: Oct 20, 2026