BME280 Environmental Sensor
Combined pressure, humidity, and temperature sensing — the go-to all-in-one environmental sensor.
Wiring & code for
BME280 practical reference
The BME280 is Bosch's combined humidity, pressure, and temperature sensor, built on the same die family as the BMP280 with a humidity element added on top. It talks over I2C (up to 3.4MHz) or SPI (up to 10MHz), and a single read gives you all three environmental values with factory-calibrated compensation coefficients baked into onboard registers — the sensor itself does the raw-to-real-world math via the calibration data, and your library just applies it.
It is the standard choice for weather stations, altitude estimation (via barometric pressure), greenhouse monitoring, and indoor air-comfort projects. The catch that trips people up is address selection and voltage: most breakout boards default to I2C address 0x76 or 0x77 depending on how the SDO pin is tied, so two identically-wired boards on one bus will collide unless you change one address. Also, the bare BME280 chip is 3.3V logic only — always confirm your breakout has an onboard regulator before wiring it to a 5V board.
Key specifications
- Interface: I2C (up to 3.4MHz) or SPI (up to 10MHz), selectable
- I2C address: 0x76 (SDO to GND) or 0x77 (SDO to VCC)
- Operating voltage: 1.71–3.6V (breakout boards commonly add a 5V-tolerant regulator)
- Humidity range: 0–100% RH, ±3% accuracy
- Pressure range: 300–1100 hPa, ±1 hPa absolute accuracy
- Temperature range: −40°C to 85°C, ±1°C accuracy
- Current consumption: 3.6µA @ 1Hz (humidity+temp), 0.6µA in sleep mode
- Response time: ~1s (humidity 63% step response)
Pinout and connection notes
For I2C mode (the common case), tie CSB to VCC and use SDO only to pick the address. For SPI mode, all 6 pins are active and CSB becomes the active-low chip select.
- VCC: Power — 3.3V (check breakout for 5V-tolerant regulator)
- GND: Ground
- SCL: I2C clock (or SPI SCK)
- SDA: I2C data (or SPI MOSI)
- CSB: SPI chip select — tie HIGH (to VCC) to force I2C mode
- SDO: I2C address select (GND = 0x76, VCC = 0x77) or SPI MISO
Integration checklist
- Confirm the exact part number and breakout-board revision.
- Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
- Check controller pin assignments and bus address or interface mode against the example code.
- Power up with external loads disconnected, then test signals before full integration.
- If readings or communication fail, check power and ground first, then pin mapping, interface settings, and library initialization.
Troubleshooting and reproducibility
Record the board used, wiring, library/version, supply arrangement, and measured behavior. Use the selected board-specific wiring example as the source of truth. Never assume visually similar modules share identical voltage tolerance or pin order.