Features:
- Low Power Consumption: Only 0.1µA in sleep mode, ideal for battery-powered devices.
- Adjustable Sampling: Operates at 1 Hz with 1.8–3.6µA consumption.
- Fast Humidity Response: Response time of ~1s for real-time tracking.
- High Precision: RMS noise of just 0.2 Pa for pressure measurements.
- Temperature Compensation: Offset of 1.5Pa/k ensures consistent pressure readings in varying temperatures.
- I2C Interface: Easy integration with microcontrollers via 2-wire I2C communication.
Operating Principle:
- Sensing elements measure temperature, humidity, and pressure.
- Signals converted to digital via high-resolution ADC.
- Built-in compensation and calibration algorithms ensure accuracy.
- Data is sent over I2C to a microcontroller.
- Supports sleep, forced, and normal operating modes.
I2C Address Configuration:
Default I2C address: 0x77
. Modify solder jumper to switch to 0x76
.
Pinout:

- VCC: 3.3V – 5V power input
- GND: Ground
- SCL: I2C clock
- SDA: I2C data
Applications:
- Context-aware sensing (e.g., indoor presence)
- Health and wellness monitoring
- Home automation and HVAC control
- IoT weather stations
- Altitude tracking and GPS enhancement
- Vertical velocity measurement (e.g., drones)
Supported Boards:
Board |
SCL |
SDA |
Arduino Uno/Nano |
A5 |
A4 |
Arduino Mega |
21 |
20 |
Leonardo/Micro |
3 |
2 |
Wiring Diagram:

Arduino Code Example:
#include "Wire.h"
#include "Adafruit_Sensor.h"
#include "Adafruit_BME280.h"
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
void setup() {
Serial.begin(9600);
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
}
void loop() {
printTemperature();
printPressure();
printAltitude();
printHumidity();
delay(1000);
}
void printTemperature() {
Serial.print("Temperature: ");
Serial.print(bme.readTemperature());
Serial.println(" *C");
}
void printPressure() {
Serial.print("Pressure: ");
Serial.print(bme.readPressure() / 100.0F);
Serial.println(" hPa");
}
void printAltitude() {
Serial.print("Approx. Altitude: ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");
}
void printHumidity() {
Serial.print("Humidity: ");
Serial.print(bme.readHumidity());
Serial.println(" %");
}
Technical Specifications:
- Voltage: 1.8V–5V DC
- Humidity Range: 0–100%
- Pressure Range: 300–1100 hPa
- Temperature Range: -40°C to +85°C
- Accuracy: ±1°C (temp), ±3% (humidity), ±1 Pa (pressure)
- Communication: I2C up to 3.4MHz
Comparison with Other Sensors:
Sensor |
Measures |
Protocol |
Voltage |
Temp Range |
DHT11 |
Temp, Humidity |
One-wire |
3–5.5V |
0 to 50°C |
DHT22 |
Temp, Humidity |
One-wire |
3–6V |
-40 to 80°C |
LM35 |
Temperature |
Analog |
4–30V |
-55 to 150°C |
DS18B20 |
Temperature |
One-wire |
3–5.5V |
-55 to 125°C |
BME280 |
Temp, Humidity, Pressure |
I2C/SPI |
1.8–5V |
-40 to 85°C |
BMP180 |
Temp, Pressure |
I2C |
1.8–3.6V |
0 to 65°C |
Resources:
Features:
- Low Power Consumption: Only 0.1µA in sleep mode, ideal for battery-powered devices.
- Adjustable Sampling: Operates at 1 Hz with 1.8–3.6µA consumption.
- Fast Humidity Response: Response time of ~1s for real-time tracking.
- High Precision: RMS noise of just 0.2 Pa for pressure measurements.
- Temperature Compensation: Offset of 1.5Pa/k ensures consistent pressure readings in varying temperatures.
- I2C Interface: Easy integration with microcontrollers via 2-wire I2C communication.
Operating Principle:
- Sensing elements measure temperature, humidity, and pressure.
- Signals converted to digital via high-resolution ADC.
- Built-in compensation and calibration algorithms ensure accuracy.
- Data is sent over I2C to a microcontroller.
- Supports sleep, forced, and normal operating modes.
I2C Address Configuration:
Default I2C address: 0x77
. Modify solder jumper to switch to 0x76
.
Pinout:

- VCC: 3.3V – 5V power input
- GND: Ground
- SCL: I2C clock
- SDA: I2C data
Applications:
- Context-aware sensing (e.g., indoor presence)
- Health and wellness monitoring
- Home automation and HVAC control
- IoT weather stations
- Altitude tracking and GPS enhancement
- Vertical velocity measurement (e.g., drones)
Supported Boards:
Board |
SCL |
SDA |
Arduino Uno/Nano |
A5 |
A4 |
Arduino Mega |
21 |
20 |
Leonardo/Micro |
3 |
2 |
Wiring Diagram:

Arduino Code Example:
#include "Wire.h"
#include "Adafruit_Sensor.h"
#include "Adafruit_BME280.h"
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
void setup() {
Serial.begin(9600);
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
}
void loop() {
printTemperature();
printPressure();
printAltitude();
printHumidity();
delay(1000);
}
void printTemperature() {
Serial.print("Temperature: ");
Serial.print(bme.readTemperature());
Serial.println(" *C");
}
void printPressure() {
Serial.print("Pressure: ");
Serial.print(bme.readPressure() / 100.0F);
Serial.println(" hPa");
}
void printAltitude() {
Serial.print("Approx. Altitude: ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");
}
void printHumidity() {
Serial.print("Humidity: ");
Serial.print(bme.readHumidity());
Serial.println(" %");
}
Technical Specifications:
- Voltage: 1.8V–5V DC
- Humidity Range: 0–100%
- Pressure Range: 300–1100 hPa
- Temperature Range: -40°C to +85°C
- Accuracy: ±1°C (temp), ±3% (humidity), ±1 Pa (pressure)
- Communication: I2C up to 3.4MHz
Comparison with Other Sensors:
Sensor |
Measures |
Protocol |
Voltage |
Temp Range |
DHT11 |
Temp, Humidity |
One-wire |
3–5.5V |
0 to 50°C |
DHT22 |
Temp, Humidity |
One-wire |
3–6V |
-40 to 80°C |
LM35 |
Temperature |
Analog |
4–30V |
-55 to 150°C |
DS18B20 |
Temperature |
One-wire |
3–5.5V |
-55 to 125°C |
BME280 |
Temp, Humidity, Pressure |
I2C/SPI |
1.8–5V |
-40 to 85°C |
BMP180 |
Temp, Pressure |
I2C |
1.8–3.6V |
0 to 65°C |
Resources: