The BMP280 is a digital barometric pressure and temperature sensor by Bosch Sensortec. It measures absolute air pressure and derives altitude from it, while the onboard temperature sensor handles internal compensation. It is the direct successor to the BMP180 (smaller footprint, lower power draw, less noise, higher resolution, and SPI support added alongside I²C) and is found in smartphones, GPS modules, drones, weather stations, and indoor navigation systems where accurate pressure measurement matters.
What is BMP280?

The BMP280 consists of a piezoresistive pressure sensing element and a mixed-signal ASIC that performs A/D conversions and provides the results along with sensor-specific calibration data.
It is register and performance compatible with the BME280 — the only difference being the absence of a humidity sensor. If a project starts with a BMP280 and later needs humidity, switching to a BME280 requires no firmware changes beyond enabling the humidity registers. The pressure measurement can also be disabled entirely, allowing the BMP280 to function as a standalone temperature sensor if needed.
BMP280 overview
| Parameter | Value |
|---|---|
| Sensor Type | Digital Barometric Pressure & Temperature Sensor |
| Operating Voltage (VDD) | 1.71V – 3.6V |
| Interface Voltage (VDDIO) | 1.2V – 3.6V |
| Current Consumption | 2.74µA @ 1Hz, 0.1µA (sleep) |
| Temperature Range | −40°C to +85°C |
| Pressure Range | 300 to 1100 hPa |
| Output Type | Digital |
| Communication | I²C (up to 3.4MHz) / SPI (3 and 4-wire, up to 10MHz) |
| I²C Address | 0x76 (SDO → GND) or 0x77 (SDO → VDDIO) |
| Package | 8-pin LGA, 2.0 × 2.5 × 0.95mm |
| Compatible Boards | Arduino Uno, ESP32, Raspberry Pi |
Pinout

Note: Like the BME280, the BMP280 bare IC is an 8-pin LGA and is not breadboard-compatible. It is almost always used on a breakout module. Pin numbering on the IC goes clockwise when viewed from the top — the opposite of most ICs.
| Pin Name | Type | Description |
|---|---|---|
| VCC | Power | Power supply input (typically 3.3V; some modules support 5V through an onboard regulator). |
| GND | Power | Ground connection. |
| SCL | Digital Input | Serial Clock Line used for I²C communication. |
| SDA | Digital I/O | Serial Data Line used for I²C communication. |
| CSB | Digital Input | Chip Select pin used for SPI communication. Pull high to enable I²C mode. |
| SDO | Digital I/O | SPI Serial Data Output (MISO). In I²C mode, it selects the device address (0x76 or 0x77). |
Working principle
The BMP280 can be operated in two power modes — forced mode and normal mode. In forced mode, the sensor performs a single measurement on request and returns to sleep mode afterwards, which is recommended for low sampling rate applications. In normal mode, the sensor perpetually cycles between active measurement and inactive standby periods automatically.
Pressure resolution is user-configurable through oversampling. Each oversampling step reduces noise and increases output resolution by one bit:
| Oversampling | Resolution | Typical Pressure |
|---|---|---|
| ×1 | 16-bit | 2.62 Pa |
| ×2 | 17-bit | 1.31 Pa |
| ×4 | 18-bit | 0.66 Pa |
| ×8 | 19-bit | 0.33 Pa |
| ×16 | 20-bit | 0.16 Pa |
The BMP280 also includes a built-in IIR filter to suppress short-term pressure disturbances caused by events like slamming a door or window. The filter coefficient can be set from 0 (off) to 16. This makes the pressure output significantly more stable in real-world environments where mechanical noise is unavoidable.
One important detail: temperature must be read before pressure, as the pressure compensation formula requires a fine-resolution temperature value calculated during the temperature conversion step. Most libraries handle this automatically, but it matters when writing bare-metal drivers.
Parts and Components

The BMP280 breakout module surrounds the sensor IC with a small set of supporting components that make it ready to wire directly to a microcontroller.
BMP280 Sensor IC The metal-lid LGA chip at the centre of the board. At 2.0 × 2.5mm it is slightly smaller than the BME280, and contains the piezoresistive pressure element, bandgap temperature sensor, high-resolution ADC, IIR filter logic, OTP calibration memory, and the full I²C/SPI interface — all in one package. No humidity sensing is present; if you see a module labeled BMP280 reporting humidity, it is likely a mislabeled BME280.
Filter Capacitors Smooth out voltage ripple on the supply lines. The pressure sensor resolves down to 0.16 Pa at maximum oversampling — equivalent to about 1.3mm of altitude — so clean power is essential to getting accurate readings.
Pull-up Resistors Hold the SDA and SCL lines high when idle, as required by the I²C protocol. The breakout includes these onboard so no external resistors are needed for standard I²C operation.
Pull-down Resistor Sets the default I²C address to 0x76 by holding SDO at GND. Bridging SDO to VCC on one module shifts it to 0x77, allowing two BMP280s to share the same I²C bus.
Specifications
| Parameter | Value |
|---|---|
| Supply Voltage (VDD) | 1.71V – 3.6V |
| Interface Voltage (VDDIO) | 1.2V – 3.6V |
| Current @ 1Hz | 2.74µA (typical) |
| Sleep Current | 0.1µA |
| Temperature Range | −40°C to +85°C |
| Temperature Accuracy | ±1.0°C (0°C to 65°C) |
| Temperature Resolution | 0.01°C |
| Pressure Range | 300 to 1100 hPa |
| Pressure Absolute Accuracy | ±1 hPa (0°C to 65°C) |
| Pressure Relative Accuracy | ±0.12 hPa (equiv. ±1m altitude) |
| Pressure RMS Noise | 1.3 Pa (standard), 0.16 Pa (ultra-high res) |
| Pressure Resolution | 0.16 Pa (20-bit, ×16 oversampling) |
| Altitude Resolution | ~±1 metre |
| IIR Filter Coefficients | 0, 2, 4, 8, 16 |
| Max Measurement Rate | 157 Hz |
| I²C Speed | Up to 3.4 MHz |
| SPI Speed | Up to 10 MHz |
| I²C Address | 0x76 or 0x77 |
| Chip ID | 0x58 |
| Package | 8-pin LGA |
| Dimensions | 2.0 × 2.5 × 0.95mm |
| Operating Temperature | −40°C to +85°C |
| RoHS | Compliant, MSL1 |
Helpful resources
- Download the datasheet here
- BMP280 with Arduino
- BMP280 with ESP32
- BMP280 with Raspberry pi