The BME280 is a digital environmental sensor that measures temperature, humidity, and barometric pressure simultaneously — three parameters, one IC, one I²C or SPI connection. It is factory-calibrated, runs on as little as 1.71V, and draws under 4µA when sampling all three sensors at 1Hz, making it as practical in a coin-cell-powered weather node as it is in a smartphone or smartwatch.
For projects that also need altitude estimation, the pressure sensor is precise enough to detect a floor change in a building.
What is BME280?

The BME280 is a combined digital humidity, pressure, and temperature sensor based on proven sensing principles. It provides both SPI and I²C interfaces and can be supplied using 1.71V to 3.6V for the sensor supply and 1.2V to 3.6V for the interface supply.
What makes it stand out from simpler sensors is the level of configurability packed into a device this small. Users can select from a variety of oversampling modes, filter modes, and data rates to tailor the tradeoff between noise, response time, and current consumption to their specific application. A weather station polling once per minute has very different requirements from a gaming drone needing fast altitude updates — the BME280 handles both.
Watch out for fakes: Some modules sold as BME280 are actually BMP280, which lacks the humidity sensor entirely. The chip ID register can confirm which sensor you have — 0x60 is a genuine BME280, while 0x56–0x58 indicates a BMP280.
BME280 overview
| Parameter | Value |
|---|---|
| Sensor Type | Digital Temperature, Humidity & Pressure Sensor |
| Operating Voltage (VDD) | 1.71V – 3.6V |
| Interface Voltage (VDDIO) | 1.2V – 3.6V |
| Current Consumption | 3.6µA @ 1Hz (all sensors), 0.1µA (sleep) |
| Temperature Range | −40°C to +85°C |
| Humidity Range | 0% to 100% RH |
| Pressure Range | 300 to 1100 hPa |
| Output Type | Digital |
| Communication | I²C (up to 3.4MHz) / SPI (up to 10MHz) |
| I²C Address | 0x76 (SDO → GND) or 0x77 (SDO → VDDIO) |
| Package | 8-pin LGA, 2.5 × 2.5 × 0.93mm |
| Compatible Boards | Arduino Uno, ESP32, Raspberry Pi |
Pinout
Breakout module pinout (typical 6-pin)

| Pin | I²C | SPI |
|---|---|---|
| VIN | Module supply (1.71 to 3.6 V) | Module supply (1.2V – 3.6V) |
| GND | Ground | Ground |
| SCL | I²C clock | SPI clock (SCK) |
| SDA | I²C data | SPI data in (MOSI) |
| CSB | Connect to VCC (disabled) | Chip select (CS) |
| SDO | I²C address select (0x76/0x77) | SPI data out (MISO) |
I²C address: Connecting SDO to GND sets the address to 0x76; connecting it to VDDIO sets it to 0x77. SDO cannot be left floating.
Breakout module pinout (typical 4-pin)

| Pin | Description |
|---|---|
| VIN | Module supply (3.3V – 5V, onboard regulator handles it) |
| GND | Ground |
| SCL | I²C clock |
| SDA | I²C data |
I²C address: Connecting SDO to GND sets the I²C address to 0x76; connecting it to VDDIO sets it to 0x77. The SDO pin cannot be left floating.
Working principle
The BME280 houses three independent sensing elements that feed into a shared signal conditioning chain.
The BME280 can be operated in three power modes: sleep mode, forced mode, and normal mode.
- Sleep mode — no measurements, 0.1µA current draw. Default state after power-on.
- Forced mode — take one measurement, then return to sleep. Ideal for battery-powered devices polling at low rates.
- Normal mode — continuous cycling between measurement and standby at a configurable interval. Used when regular data updates are needed.
The temperature measurement is used internally to compensate the pressure and humidity readings, which means the temperature output is more useful for calibration purposes than as a standalone ambient reading — the sensor self-heats slightly, so temperature readings can run a degree or two high depending on airflow and board layout.
The pressure sensor is precise enough to function as an altimeter with approximately ±1 metre accuracy over the 0°C to 65°C range. This makes it suitable for floor-change detection, elevator detection, and drone altitude hold — applications that would require a dedicated barometric altimeter in any other design.
Hardware overview of BME280

The BME280 breakout module includes several supporting components around the sensor IC that handle power conditioning, signal integrity, and interface configuration — all soldered on so you don’t have to add them externally.
BME280 Sensor IC The small metal-lid chip at the centre of the board. Despite its 2.5 × 2.5mm size, it contains all three sensing elements — temperature, humidity, and pressure — along with a high-resolution ADC, OTP calibration memory, and the full I²C/SPI interface logic. Everything the sensor does happens inside this one package.
Filter Capacitors These absorb voltage spikes and filter out high-frequency noise from the power rail. This matters especially for the pressure sensor, which is sensitive enough to detect altitude changes of under 2 metres — even small supply fluctuations can show up as false readings without proper decoupling.
Pull-up Resistors The I²C protocol requires SDA and SCL to sit at a high logic level when idle, and these resistors provide that. Without them, communication becomes unreliable — most bare BME280 ICs require you to add these externally, but the breakout module includes them onboard.
Pull-down Resistor Holds the SDO pin at GND by default, setting the I²C address to 0x76. If you need to run two BME280 modules on the same bus, bridging the SDO pad to VCC on one of them shifts its address to 0x77, giving each module a unique address without any firmware tricks.
Specifications
Detailed Key Specifications are listed below.
| Parameter | Value |
|---|---|
| Supply Voltage (VDD) | 1.71V – 3.6V |
| Interface Voltage (VDDIO) | 1.2V – 3.6V |
| Current (all sensors @ 1Hz) | 3.6µA |
| Current (humidity + temp @ 1Hz) | 1.8µA |
| Current (pressure + temp @ 1Hz) | 2.8µA |
| Sleep Current | 0.1µA |
| Temperature Range | −40°C to +85°C |
| Temperature Accuracy | ±1.0°C (0°C to 65°C), ±1.5°C (full range) |
| Temperature Resolution | 0.01°C |
| Humidity Range | 0% to 100% RH |
| Humidity Accuracy | ±3% RH |
| Humidity Response Time | 1 second (τ63%) |
| Humidity Hysteresis | ±1% RH |
| Pressure Range | 300 to 1100 hPa |
| Pressure Accuracy | ±1 hPa (0°C to 65°C) |
| Pressure RMS Noise | 0.2 Pa (equiv. 1.7cm altitude) |
| Altitude Resolution | ~±1 metre |
| I²C Speed | Up to 3.4 MHz |
| SPI Speed | Up to 10 MHz |
| I²C Address | 0x76 or 0x77 |
| Chip ID | 0x60 |
| Package | 8-pin LGA |
| Dimensions | 2.5 × 2.5 × 0.93mm |
| Operating Temperature | −40°C to +85°C |
| RoHS | Compliant, halogen-free, MSL1 |
Helpful resources
Download the datasheet: PDF here