Atmospheric pressure sensors have become essential components in weather stations, altitude trackers, drone flight controllers, and IoT environmental monitors. The Bosch Sensortec lineup — BMP280, BME280, and BMP388 — dominates this space for good reason: they are tiny, accurate, affordable, and communicate over I2C or SPI. But which one should you buy for your Arduino project in India?
This detailed guide breaks down every specification, explains the differences that actually matter for real projects, provides wiring and code examples, and concludes with a clear recommendation for each use case.
1. How Barometric Pressure Sensing Works
All three Bosch sensors use a MEMS piezoresistive pressure sensor combined with an ADC and temperature compensation circuit on a single chip. The pressure-sensing element is a silicon membrane that deflects under atmospheric pressure, changing the resistance of embedded piezoresistors and producing a digitised voltage differential.
Because pressure changes predictably with altitude (roughly -12 Pa per metre at sea level), these sensors double as highly responsive altimeters. The key advantage over GPS altitude: pressure-based altitude updates at up to 200 Hz with sub-metre precision change detection — far faster than GPS’s typical 1-10 Hz.
Temperature compensation is essential: pressure readings change with temperature, and all three sensors include a precision temperature sensor specifically for internal compensation. You always read temperature first, then calculate compensated pressure.
2. BMP280: The Value Champion
The BMP280 is Bosch’s successor to the BMP180 and represents the sweet spot of price and performance for most maker projects. It measures pressure and temperature — but not humidity.
BMP280 Key Specs
- Supply Voltage: 1.71 V to 3.6 V (GY-BMP280 module works at 3.3 V or 5 V with onboard regulator)
- Interface: I2C (addresses 0x76 or 0x77) plus SPI
- Pressure Range: 300 to 1100 hPa
- Pressure Resolution: 0.16 Pa (full resolution mode)
- Pressure Accuracy (absolute): +/-1 hPa at 0-65 deg C
- Temperature Range: -40 deg C to +85 deg C
- Temperature Accuracy: +/-0.5 deg C
- Altitude Resolution: approximately 8 cm (full resolution)
- Current Consumption: 2.7 µA (1 Hz weather monitoring mode)
BMP280 Barometric Pressure and Altitude Sensor I2C/SPI Module
The go-to pressure and altitude sensor for Arduino projects — accurate, affordable, and available with 3.3 V or 5 V compatibility at Zbotic.
3. BME280: The Complete Environmental Sensor
The BME280 is the BMP280 with one crucial addition: a humidity sensor. All pressure and temperature specs are nearly identical, but you gain relative humidity measurement (0-100% RH) from the same tiny package. This makes it the most popular choice for weather stations, indoor air quality monitors, and smart home climate control systems.
BME280 Key Specs
- Supply Voltage: 1.71 V to 3.6 V (GY-BME280 modules support 3.3 V or 5 V)
- Interface: I2C (0x76 or 0x77) plus SPI
- Pressure Range/Accuracy: Same as BMP280 (300-1100 hPa, +/-1 hPa)
- Humidity Range: 0 to 100% RH
- Humidity Accuracy: +/-3% RH
- Humidity Response Time: 1 s (tau 63%)
- Temperature Accuracy: +/-0.5 deg C (self-heating at high sample rates can bias this)
- Current Consumption: 3.6 µA (humidity + pressure + temp at 1 Hz)
Important caveat: The BME280 runs warmer than ambient when sampling frequently. In high-humidity mode or with short standby times, self-heating can add 1-3 deg C to temperature readings. Use 1000 ms standby time for the most accurate temperature.
GY-BME280-3.3 Precision Altimeter Atmospheric Pressure Sensor Module
The complete environmental sensor — pressure, temperature, AND humidity in one tiny module. Perfect for weather stations and climate monitors.
4. BMP388: High-Precision Altitude
The BMP388 is Bosch’s answer to demanding altitude-measurement applications — specifically indoor navigation, drone altitude hold, and any application requiring sub-50 cm altitude resolution.
BMP388 Key Specs
- Supply Voltage: 1.65 V to 3.6 V
- Interface: I2C plus SPI
- Pressure Range: 300 to 1250 hPa (extended range vs BMP280)
- Pressure Resolution: 0.016 Pa (10x better than BMP280)
- Pressure Accuracy (absolute): +/-0.5 hPa (2x better than BMP280)
- Altitude Resolution: approximately 3 cm (vs 8 cm for BMP280)
- Output Data Rate: Up to 200 Hz
- FIFO Buffer: 512 bytes (stores up to 72 pressure/temperature samples)
5. Full Specification Comparison Table
| Feature | BMP280 | BME280 | BMP388 |
|---|---|---|---|
| Pressure | Yes | Yes | Yes |
| Temperature | Yes | Yes | Yes |
| Humidity | No | Yes (+/-3% RH) | No |
| Pressure Accuracy | +/-1 hPa | +/-1 hPa | +/-0.5 hPa |
| Altitude Resolution | ~8 cm | ~8 cm | ~3 cm |
| Max Output Rate | 182 Hz | 182 Hz | 200 Hz |
| FIFO Buffer | No | No | 512 bytes |
| Typical India Price | Rs 80-150 | Rs 180-300 | Rs 300-500 |
6. Altitude Accuracy Deep Dive
All three sensors measure altitude indirectly by measuring pressure and applying the International Standard Atmosphere barometric formula. Absolute altitude accuracy depends heavily on knowing your sea-level reference pressure.
Relative altitude measurement (measuring how much altitude changes from a reference point) is far more accurate than absolute altitude. By recording the pressure at ground level (P0) and comparing it to current pressure, you can detect changes of 10-30 cm even with the BMP280. The BMP388’s 3 cm resolution enables floor-level indoor navigation.
In real-world Indian conditions, weather-driven pressure changes of +/-5 hPa are common between morning and evening. This translates to +/-40 m of apparent altitude drift — which is why altitude hold in drones requires frequent recalibration or GPS fusion.
7. Wiring All Three Sensors to Arduino
GY-BMP280 / GY-BME280 / GY-BMP388 --> Arduino Uno
VCC --> 3.3V (preferred) or 5V
GND --> GND
SCL --> A5
SDA --> A4
CSB --> Leave unconnected (or 3.3V for I2C mode)
SDO --> GND means I2C address 0x76 | 3.3V means 0x77
8. Best Arduino Libraries for Each Sensor
- BMP280: Adafruit BMP280 Library (recommended, install via Library Manager)
- BME280: Adafruit BME280 Library or BME280 by Tyler Glenn (lightweight)
- BMP388: Adafruit BMP3XX Library (supports BMP388 and BMP390)
#include <Wire.h>
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin(0x76)) {
Serial.println("BMP280 not found. Check wiring!");
while (1);
}
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,
Adafruit_BMP280::SAMPLING_X2,
Adafruit_BMP280::SAMPLING_X16,
Adafruit_BMP280::FILTER_X16,
Adafruit_BMP280::STANDBY_MS_500);
}
void loop() {
Serial.print("Pressure: "); Serial.print(bmp.readPressure() / 100.0F); Serial.println(" hPa");
Serial.print("Temperature: "); Serial.print(bmp.readTemperature()); Serial.println(" C");
Serial.print("Altitude: "); Serial.print(bmp.readAltitude(1013.25)); Serial.println(" m");
Serial.println();
delay(2000);
}
9. Which Sensor for Which Project?
Buy BMP280 if:
- You need pressure and altitude data only (no humidity)
- Budget is the primary constraint (Rs 80-150 vs Rs 180-300 for BME280)
- You already measure humidity with a dedicated sensor (DHT20, SHT31)
- Drone altimeter, trekking altitude tracker, or weather balloon project
Buy BME280 if:
- You want a single module for complete environmental monitoring
- Building a home weather station, grow tent monitor, or server room climate sensor
- IoT cloud dashboard requiring all three parameters (temperature, humidity, pressure)
Buy BMP388 if:
- Your drone or aircraft needs altitude hold with sub-metre resolution
- Building an indoor positioning system using pressure-based floor detection
- High-sample-rate pressure wave logging at 200 Hz
GY-BME280-5V Temperature and Humidity Sensor
5V-compatible BME280 module — directly compatible with Arduino Uno and Mega without voltage dividers or level shifters.
10. Prices in India
- BMP280 (GY-BMP280 module): Rs 80-150 — extremely affordable, in stock at Zbotic
- BME280 (GY-BME280 3.3V or 5V module): Rs 180-300 — premium for humidity addition
- BMP388 (GY-BMP388 module): Rs 300-500 — professional-grade, fewer Indian suppliers
For most student and hobbyist budgets in India, the BME280 offers the best value: three sensors in one, at roughly double the price of the BMP280 but half the cost of buying separate temperature, humidity, and pressure sensors individually.
11. Final Verdict
For 80% of makers: buy the BME280. The additional Rs 100 over the BMP280 buys you humidity sensing and eliminates the need for a separate DHT11 or DHT22. The BME280 handles weather stations, IoT monitors, greenhouse controllers, and most drone applications perfectly.
Buy the BMP280 when budget is critical or when you already have humidity sensing elsewhere. It is also the better choice for high-sample-rate single-axis logging where humidity data would just be noise.
Buy the BMP388 for professional drone flight controllers, indoor navigation requiring floor detection, or any application where the extra Rs 150-200 is justified by genuine need for 3 cm altitude resolution at 200 Hz.
Frequently Asked Questions
Can I use BMP280 or BME280 with 5V Arduino?
The GY-BMP280 and GY-BME280 modules include a 3.3 V voltage regulator and level-shifting circuitry, so they can be powered from the Arduino’s 5 V pin. The 5 V GY-BME280 variant from Zbotic explicitly supports 5 V operation without any additional components.
Why does my BME280 read temperature 2-3 degrees C higher than ambient?
Self-heating from the chip’s power dissipation. Reduce sampling frequency (increase standby time to 1000 ms), use Weather Monitoring preset (lowest power mode), and ensure the module is not enclosed in a sealed box without ventilation. For accurate temperature, a dedicated external sensor like the DS18B20 or LM35 is better.
How do I tell BMP280 from BME280 visually?
Look at the chip silkscreen under a loupe. BMP280 is marked BMP280; BME280 is marked BME280. In code: the chip ID read from register 0xD0 is 0x60 (BME280) vs 0x58 (BMP280). Using the BME280 library with a BMP280 chip will return false from bme.begin().
Is BMP180 still worth buying?
No. The BMP180 is discontinued by Bosch and difficult to find as genuine parts. The BMP280 is cheaper, more accurate, lower power, and has a richer feature set. Avoid BMP180 for any new design.
Can I use multiple BMP280/BME280 on one I2C bus?
Two per bus — one at 0x76 (SDO=GND) and one at 0x77 (SDO=3.3V). For more, use a TCA9548A I2C multiplexer to have 8 separate I2C segments, each with up to two sensors. This enables large-scale distributed sensing arrays with a single microcontroller.
Does the BMP388 work with the same library as BMP280?
No, they use different libraries. BMP280 uses Adafruit BMP280 Library; BMP388 uses Adafruit BMP3XX Library. Both are available in the Arduino Library Manager and follow the same coding style, so switching between them in your sketch is straightforward.
Add comment