Skip to content
A

Pressure & Altitude

Interfacing BME280 Pressure & Altitude with Arduino Uno

What is the BME280?

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.

Specifications

InterfaceI2C (up to 3.4MHz) or SPI (up to 10MHz), selectable
I2C address0x76 (SDO to GND) or 0x77 (SDO to VCC)
Operating voltage1.71–3.6V (breakout boards commonly add a 5V-tolerant regulator)
Humidity range0–100% RH, ±3% accuracy
Pressure range300–1100 hPa, ±1 hPa absolute accuracy
Temperature range−40°C to 85°C, ±1°C accuracy
Current consumption3.6µA @ 1Hz (humidity+temp), 0.6µA in sleep mode
Response time~1s (humidity 63% step response)

BME280 Pinout

PinNameDescription
1VCCPower — 3.3V (check breakout for 5V-tolerant regulator)
2GNDGround
3SCLI2C clock (or SPI SCK)
4SDAI2C data (or SPI MOSI)
5CSBSPI chip select — tie HIGH (to VCC) to force I2C mode
6SDOI2C address select (GND = 0x76, VCC = 0x77) or SPI MISO

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.

Setting Up BME280 with Arduino Uno

Library

Adafruit BME280 Library by Adafruit

Arduino IDE → Library Manager → search "Adafruit BME280"

Library guide

Wiring

Component pinArduino Uno pinNote
VCC5V (if module has onboard regulator) or 3.3V
GNDGND
SCLA5
SDAA4
CSBVCC (forces I2C mode)

Example code

C++

Uno's Wire library defaults to A4/A5. Confirm your breakout is 5V-safe before powering from VCC pin.

Related Guides & Projects