BME280

A Bosch BME280 breakout that measures barometric pressure, temperature, and relative humidity on one small board, talking to a microcontroller over I2C or SPI.

BME280: Temperature, humidity, and pressure

What is the BME280?

The BME280 is Bosch's combined environmental sensor. A single package reports barometric pressure across 300-1100 hPa, temperature from -40 to +85°C, and relative humidity from 0 to 100%. It is the humidity-capable member of the family (the closely related BMP280 measures only pressure and temperature), which makes it a popular one-chip solution for weather and climate sensing. This breakout adds an onboard 3.3V regulator and logic-level translation, so the same board works with both 3.3V and 5V microcontrollers.

Accuracy is strong for the size and price. Absolute pressure accuracy is about ±1.0 hPa, and the sensor's relative pressure accuracy is fine enough to resolve roughly a meter of altitude change, which is why it shows up in altimeters and forecasting projects. Humidity is specified to ±3% RH and temperature to ±1.0°C over the 0-65°C full-accuracy band. Power draw is in the microamp range at low sampling rates, so it suits battery-powered loggers.

The BME280 speaks I2C (up to 3.4 MHz) or SPI (up to 10 MHz). Over I2C the default address is 0x76, and the SDO pin (or a solder jumper) moves it to 0x77 so two sensors can share one bus. The chip stores factory calibration coefficients that must be read and applied to the raw output, so a library such as Adafruit_BME280 is the normal way to get compensated readings.

BME280 pinout

PinFunctionType
VCC VCC (3.3-5V)PowerPower in
GND GNDPowerPower in
SCL SCL / SCKI²C SCL · SPI SCKBidirectional (GPIO)
SDA SDA / SDII²C SDA · SPI SDIBidirectional (GPIO)
CSB CSBDigital chip-select · SPI CSDigital input
SDO SDO / addressDigital I2C address select · SPI SDODigital input

Specifications

Operating voltage
3.3 V (max 5 V)
Interface
I²C
I²C address
0x76
I²C pull-ups
On-board (no external resistors)
Dimensions
15.5 × 5.1 × 11.5 mm

Verified from the Tinkered component library.

Circuit requirements

  • Power VCC from 3.3V or 5V and connect GND to ground; the onboard regulator drops the supply to 3.3V for the sensor die.
  • For I2C, wire SDA and SCL to the board's I2C pins. This module has built-in pull-ups and level translation, so no external resistors are needed even on a 5V microcontroller.
  • Default I2C address is 0x76. Tie SDO to VCC (or set the address jumper) to move it to 0x77 when running a second BME280 on the same bus.
  • For SPI, use SCK (SCL), SDI (SDA), SDO, and CSB in 4-wire mode; pulling CSB low selects SPI instead of I2C.
  • No fixed warm-up delay is required, but the raw output is meaningless until the on-chip calibration coefficients are read and the compensation formulas are applied (a driver library handles this).
  • For accurate ambient temperature, sample at a low rate or use forced mode; continuous high-rate sampling lets the die self-heat and read slightly high.

Board compatibility

The BME280 connects to any of the microcontrollers supported in Tinkered. Mind the 3.3 V logic level on 3.3 V boards.

Simulate the BME280 in your browser

The BME280 is fully simulated in Tinkered. Wire it into a circuit, write your firmware, and read real values back with no physical hardware. Test your logic before you touch a breadboard.

Open it in the simulator

Common BME280 mistakes

Assuming the wrong I2C address

Many tutorials hard-code 0x77, but this board defaults to 0x76. If the device is not found, try the other address or run an I2C scanner before assuming the wiring is bad.

Confusing the BME280 with the BMP280

The two boards look nearly identical, but the BMP280 has no humidity sensor. If humidity reads zero or the library reports a mismatched chip ID, you likely have a BMP280, not a BME280.

Reading raw registers without compensation

Pulling raw values straight from the data registers gives numbers that look nothing like real pressure or temperature. The factory calibration coefficients must be read and applied first, which is why a driver library is strongly recommended.

Ignoring sensor self-heating on temperature

The BME280's temperature reflects the die, not perfectly the surrounding air. Fast continuous sampling and heat from a nearby regulator or MCU can push the reading a degree or two high; sample slowly for accurate ambient temperature.

Feeding 5V to a bare 3.3V module

This breakout tolerates 3.3-5V because of its onboard regulator and level shifter. A regulator-less or 3.3V-only BME280 board can be damaged by 5V on VCC or on the I2C lines, so confirm which variant you have before wiring.

BME280 datasheet

Official BME280 datasheet

Popular BME280 projects

Desktop weather station

Log temperature, humidity, and pressure and show them on an OLED or LCD, updating live as conditions change.

Barometric altimeter

Use the sensor's fine relative-pressure resolution to track altitude changes of roughly a meter for drones, rockets, or hiking gadgets.

Indoor climate and comfort monitor

Watch room humidity and temperature to flag condensation risk or trigger a fan or dehumidifier.

IoT environmental logger

Pair with an ESP32 or ESP8266 to stream readings to a dashboard or cloud service for long-term trend tracking.

Simple weather forecaster

Track the pressure trend over time to predict improving or worsening weather with a rising-or-falling indicator.

Build with the BME280.

Drop the BME280 into a circuit, write firmware, and simulate it in your browser, then deploy to real hardware. All in one editable Tinkered project.