

The BMP280 is a high-precision barometric pressure sensor designed to measure atmospheric pressure and temperature. It is widely used in applications such as weather stations, drones, and IoT devices for altitude measurement and environmental monitoring. With its compact size, low power consumption, and high accuracy, the BMP280 is an ideal choice for portable and battery-powered devices.
Common applications and use cases:








The BMP280 offers excellent performance and flexibility for a variety of applications. Below are its key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 1.71V to 3.6V |
| Typical Operating Voltage | 3.3V |
| Current Consumption | 2.7 µA (in normal mode) |
| Pressure Measurement Range | 300 hPa to 1100 hPa |
| Temperature Measurement Range | -40°C to +85°C |
| Pressure Resolution | 0.18 Pa |
| Temperature Resolution | 0.01°C |
| Communication Interface | I2C (up to 3.4 MHz) or SPI (up to 10 MHz) |
| Package Size | 2.0 mm × 2.5 mm × 0.95 mm |
The BMP280 typically comes in a breakout board format for ease of use. Below is the pin configuration:
| Pin Name | Description |
|---|---|
| VCC | Power supply pin (1.71V to 3.6V, typically 3.3V) |
| GND | Ground pin |
| SCL | Serial Clock Line for I2C communication |
| SDA | Serial Data Line for I2C communication |
| CS | Chip Select for SPI communication (active low) |
| SDO | Serial Data Out for SPI communication |
0x76. If the SDO pin is connected to VCC, the address changes to 0x77.Below is an example of how to interface the BMP280 with an Arduino UNO using the I2C protocol. This code uses the Adafruit BMP280 library.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
// Create an instance of the BMP280 sensor
Adafruit_BMP280 bmp;
void setup() {
Serial.begin(9600); // Initialize serial communication at 9600 baud
if (!bmp.begin(0x76)) {
// Initialize BMP280 with I2C address 0x76
Serial.println("Could not find a valid BMP280 sensor, check wiring!");
while (1); // Halt execution if sensor initialization fails
}
// Configure the sensor
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, // Normal mode
Adafruit_BMP280::SAMPLING_X2, // Temperature oversampling x2
Adafruit_BMP280::SAMPLING_X16, // Pressure oversampling x16
Adafruit_BMP280::FILTER_X16, // Filter coefficient x16
Adafruit_BMP280::STANDBY_MS_500); // Standby time 500ms
}
void loop() {
// Read and print temperature and pressure data
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");
Serial.print("Approx. Altitude = ");
Serial.print(bmp.readAltitude(1013.25));
// Use sea level pressure of 1013.25 hPa as reference
Serial.println(" m");
delay(2000); // Wait for 2 seconds before the next reading
}
Sensor Not Detected:
0x76 or 0x77).Incorrect Readings:
Communication Errors:
Q: Can the BMP280 measure altitude directly?
A: The BMP280 calculates altitude based on atmospheric pressure. You need to provide a reference sea-level pressure (e.g., 1013.25 hPa) for accurate altitude measurements.
Q: Is the BMP280 waterproof?
A: No, the BMP280 is not waterproof. Avoid exposing it to water or high humidity.
Q: Can I use the BMP280 with a 5V microcontroller?
A: Yes, but you must use a level shifter to convert the 5V logic levels to 3.3V, as the BMP280 is not 5V tolerant.