BMP280 vs BME280: Pressure, Humidity and ESP32 Support Compared

BMP280 vs BME280 compared for pressure, humidity, temperature, I2C/SPI, accuracy, power and ESP32/ESPHome support. Learn how to identify mislabeled modules and which Bosch sensor to choose.

BMP280 and BME280 are often sold on nearly identical breakout boards, use the same I²C addresses and share most of their pressure/temperature register map, but they are not the same sensor. The difference is simple: BME280 adds humidity. BMP280 measures temperature and barometric pressure only.

That sounds trivial, but it causes a huge amount of confusion in ESP32 projects because cheap marketplace modules are frequently mislabeled, and many “BME280” boards are actually populated with BMP280 chips.

For a weather station or Home Assistant room sensor, BME280 is normally the better all-round choice because one module gives temperature, humidity and pressure. For a pressure-only project, altimeter, barometer or battery node that does not need humidity, BMP280 remains perfectly valid and can be cheaper.

BMP280 vs BME280 at a Glance

FeatureBMP280BME280
TemperatureYesYes
PressureYesYes
HumidityNoYes
Pressure range300–1100 hPa300–1100 hPa
Humidity range0–100% RH
Humidity accuracy±3% RH
I²CYesYes
SPIYesYes
I²C addresses0x76 or 0x770x76 or 0x77
Chip ID0x58 production device0x60
Sleep currentVery low~0.1 µA typical
Typical 1 Hz environmental current~2.7 µA pressure + temperature~3.6 µA humidity + pressure + temperature
ESPHomebmp280_i2c / bmp280_spibme280_i2c / bme280_spi
Best usePressure/altitude/weatherFull room/weather environmental sensing

The Main Difference Is Humidity

The simplest way to remember the family is:

BMP280 = Temperature + Pressure
BME280 = Temperature + Pressure + Humidity

Bosch describes BME280 as register- and performance-compatible with BMP280 for the shared pressure and temperature functions. BME280 then adds its own humidity measurement registers and calibration data.

This is why many software libraries look extremely similar internally, and why a BMP280 can sometimes appear to “almost work” with code written for BME280 until the application asks for humidity.

Pressure Performance Is Very Similar

Both sensors cover approximately 300 to 1100 hPa, which corresponds to the normal range required for weather monitoring and most altitude-related hobby projects.

For BMP280, Bosch specifies typical absolute pressure accuracy around ±1 hPa in its main operating range and relative accuracy of approximately ±0.12 hPa under controlled conditions.

BME280 is designed to provide effectively the same pressure performance while adding humidity. Bosch explicitly calls it performance-compatible with BMP280.

So if somebody claims BMP280 is automatically a much more accurate barometer simply because it lacks humidity, that is not what Bosch’s own documentation says.

BME280 Humidity Performance

BME280 adds a proper capacitive humidity channel with:

  • 0–100% RH operating range.
  • ±3% RH typical accuracy in the main specified range.
  • About 1 second 63% response time.
  • Approximately ±1% RH hysteresis.

That is good enough for Home Assistant room monitoring, weather stations, HVAC context and general environmental sensing.

If humidity is the most important measurement and pressure is irrelevant, a modern Sensirion SHT4x sensor may provide better humidity/temperature performance. BME280’s strength is that it gives all three environmental quantities in one tiny package.

See our Best Temperature & Humidity Sensor for ESP32 comparison for that wider choice.

Temperature Is Mainly a Compensation Measurement

Both BMP280 and BME280 contain an internal temperature sensor, but Bosch uses it primarily to compensate the pressure measurement, and in BME280 also the humidity measurement.

The temperature value is useful for ambient monitoring, but it is influenced by:

  • PCB temperature.
  • ESP32 heat.
  • Voltage regulator heat.
  • Enclosure temperature.
  • Sensor self-heating.

A sensor mounted 5 mm from a warm ESP32 module may report a temperature that is consistently higher than true room air.

For BME280 this can also indirectly make relative humidity look too low, because RH depends strongly on temperature.

Physical Package Is Different

The bare sensors are not physically identical:

SensorPackage size
BMP280About 2.0 × 2.5 × 0.95 mm
BME280About 2.5 × 2.5 × 0.93 mm

Unfortunately, once mounted on a generic breakout PCB, those dimensions are not always obvious enough to identify the part visually.

The reliable identification method is software: read the chip-ID register.

The Fastest Way to Identify the Sensor

Both devices expose chip ID at register 0xD0.

BMP280 production chip ID = 0x58
BME280 chip ID            = 0x60

Bosch also documents earlier BMP280 sample IDs 0x56/0x57, but production BMP280 is 0x58.

This makes software identification much more reliable than trusting the marketplace description.

Why So Many “BME280” Modules Are Actually BMP280

BMP280 is widely available and cheaper, and the breakout boards often look almost identical. Some low-cost sellers reuse the same PCB photos and product titles for several Bosch sensors.

The usual symptom is:

Temperature works
Pressure works
Humidity is missing / NaN / unsupported

Do not spend an hour changing I²C pins if pressure and temperature already work. Check the sensor ID first.

We already cover this common trap in our ESP32 BME280 Wiring, Arduino & ESPHome Guide.

I²C Addresses

Both BMP280 and BME280 use:

0x76
or
0x77

The exact address depends on how the SDO pin is wired on the breakout.

That means an I²C scan cannot tell you whether the module is BMP280 or BME280. Seeing a device at 0x76 only proves that something is answering there.

Typical ESP32 I²C Wiring

On a classic ESP32 DevKit:

Breakout pinESP32
VCC / VIN3.3 V
GNDGND
SDAGPIO21
SCLGPIO22

Using 3.3 V is safest because the bare Bosch chips are 3.3 V-class devices. Some breakout boards add a regulator and level shifting and advertise 5 V compatibility, but that depends on the module design, not the sensor itself.

ESPHome BMP280 Configuration

Current ESPHome uses a dedicated BMP280 component:

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

sensor:
  - platform: bmp280_i2c
    address: 0x76
    temperature:
      name: "BMP280 Temperature"
      oversampling: 16x
    pressure:
      name: "BMP280 Pressure"
    update_interval: 60s

If the module uses 0x77, change the address accordingly.

ESPHome BME280 Configuration

BME280 adds the humidity entity:

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

sensor:
  - platform: bme280_i2c
    address: 0x76

    temperature:
      name: "BME280 Temperature"

    pressure:
      name: "BME280 Pressure"

    humidity:
      name: "BME280 Humidity"

    update_interval: 60s

ESPHome operates BME280 in forced mode: it wakes the sensor for a measurement and then lets it return to sleep until the next update.

ESPHome Component Names Matter

Older examples may show:

platform: bme280

Current ESPHome separates I²C and SPI explicitly:

bme280_i2c
bme280_spi

bmp280_i2c
bmp280_spi

If you copy an old YAML example and ESPHome rejects the platform name, update it rather than downgrading ESPHome.

Oversampling

Both ESPHome components support oversampling values:

NONE
1x
2x
4x
8x
16x

Higher oversampling reduces noise but increases conversion time and energy.

For a Home Assistant room sensor updating every 30–60 seconds, the default high oversampling is normally fine. For an ultra-low-power battery node, lower oversampling may be appropriate.

IIR Filtering

Both sensors support an internal IIR filter. ESPHome exposes:

OFF
2x
4x
16x

This can smooth pressure changes caused by short disturbances such as a door closing, airflow or mechanical vibration.

For weather monitoring, aggressive filtering is often unnecessary because the real atmospheric pressure changes slowly anyway. For altitude or motion applications, filter choice can affect response speed.

SPI Support

Both chips support I²C and SPI. SPI is useful when:

  • You already have an SPI sensor bus.
  • You want to avoid I²C address conflicts.
  • You need higher bus speed.

For a normal ESP32 weather sensor, I²C is simpler because it uses only SDA and SCL and allows several sensors to share the same bus.

Power Consumption

Both sensors are extremely low power compared with an ESP32 Wi-Fi radio.

Bosch lists BMP280 at about 2.7 µA for 1 Hz pressure sampling. BME280 is approximately:

1.8 µA @ 1 Hz humidity + temperature
2.8 µA @ 1 Hz pressure + temperature
3.6 µA @ 1 Hz humidity + pressure + temperature
0.1 µA sleep

The extra humidity channel therefore does not turn BME280 into a high-power sensor.

In a battery ESP32 node, board regulator current, sensor breakout LEDs and Wi-Fi wake time often matter far more than the difference between BMP280 and BME280.

Which Is Better for Home Assistant?

BME280 is usually more useful because Home Assistant gets:

  • Temperature.
  • Relative humidity.
  • Atmospheric pressure.

That supports comfort dashboards, ventilation decisions, dew-point calculations and weather trends with one sensor.

BMP280 is still ideal when pressure is the main data you want—for example, a barometer that is paired with a separate high-accuracy SHT45 humidity sensor.

Which Is Better for Weather Stations?

For a compact all-in-one weather station, BME280 is the obvious choice.

For a higher-end weather station, you may prefer separate specialised sensors:

Humidity / temperature → SHT45
Pressure               → BMP390 / BMP581 / similar newer pressure sensor

BME280 wins on simplicity and integration, not because each individual channel is the best Bosch/Sensirion sensor available in 2026.

Which Is Better for Altitude?

Humidity does not directly improve pressure-derived altitude. For a pressure/altitude-only device, BMP280 is enough.

But remember that pressure-derived altitude depends strongly on the assumed sea-level pressure:

same measured pressure
+ wrong sea-level reference
= wrong altitude

For relative altitude changes, BMP280/BME280 can be useful. For precise absolute elevation, use a current local sea-level pressure reference and do not expect survey-grade accuracy.

Which Is Better for a Battery Sensor?

If humidity is unnecessary, BMP280 saves a little sensor current and may cost less. If humidity adds value, BME280’s roughly 3.6 µA all-sensor current at 1 Hz is still extremely low.

The better battery optimisation is usually to:

  • Put the ESP32 into deep sleep.
  • Use forced-mode sensor readings.
  • Disable power LEDs.
  • Choose a low-quiescent-current regulator.
  • Transmit Wi-Fi data briefly rather than remaining connected.

Temperature Placement Matters More Than the Model

A beautifully calibrated BME280 installed next to a warm ESP32 can produce worse room-temperature data than a cheaper sensor mounted correctly.

For good environmental readings:

  • Put the sensor near the edge of the PCB.
  • Keep it away from the ESP32 module and regulator.
  • Provide airflow openings.
  • Avoid direct sun.
  • Do not seal a humidity sensor inside an airtight enclosure.

This matters especially for BME280 because temperature bias also affects interpreted relative humidity.

Common Problems

SymptomLikely causeFirst check
No humidity entityModule is probably BMP280Read chip ID 0xD0
Device appears at 0x76 but BME library failsCould be BMP280 at same addressChip ID: 0x58 vs 0x60
Nothing appears on I²CWrong wiring/address/powerRun I²C scanner and check 0x76/0x77
ESPHome rejects old YAMLOld platform nameUse bme280_i2c or bmp280_i2c
Temperature too highPCB/ESP32 self-heatingMove sensor away from heat
BME280 humidity too lowTemperature bias or poor airflowCheck placement before calibration
Altitude consistently wrongWrong sea-level pressure referenceUpdate reference pressure
Random pressure noiseAirflow/vibration or low filteringTry IIR filter / enclosure change
Module dies on 5 VBreakout not 5 V tolerantUse 3.3 V unless module explicitly supports 5 V

BMP280 vs BME280: Practical Winners

Use caseBetter choiceWhy
Home Assistant room sensorBME280Adds humidity
Simple barometerBMP280No need to pay for humidity
Weather stationBME280All three environmental values
Relative altitudeEitherSame basic pressure capability
Pressure-only battery loggerBMP280Slightly simpler/lower-power
Dew point / comfort monitoringBME280Humidity required
Best dedicated humidity accuracyNeitherConsider SHT4x family
Best modern pressure precisionNeitherConsider newer BMP3xx/BMP5xx parts

Which Should You Buy?

Buy BME280 if you need humidity or want a complete environmental sensor for ESPHome/Home Assistant.

Buy BMP280 if you only need pressure and temperature. There is no reason to pay extra for BME280 if humidity is genuinely irrelevant.

The bigger practical warning is not choosing the wrong Bosch model—it is receiving the wrong model from a cheap listing. When a “BME280” module has no humidity, read the ID register before blaming your ESP32 code:

0x58 = BMP280
0x60 = BME280

That one check resolves most BMP280/BME280 mystery-module problems immediately.

Related Bosch and ESP32 Sensor Guides

Official Resources

Share your love