Note: Bosch Sensortec BMP280 vs BME280 Sensor Confusion

While looking around for some cheap environmental sensors, I came across the seemingly ideal and relatively popular Bosch Sensortec BME280. This is a digital I2C sensor that can operate at 1.8 or 3.3V, providing temperature, humidity and barometric pressure measurements with high accuracy, low energy consumption and at low cost. This makes it ideal for weather stations, temperature monitoring for comfort, etc.

As a result, I sought out a few of these BME280 sensors from sellers on eBay, but ended up receiving the lesser BMP280 on two separate occasions. The BMP280 differs from the BME280 in lacking humidity measurement and having a different ID, so it didn’t work as I expected and I thought I did something wrong. So I decided I might as well write a note to help others in case they have been supplied incorrect products and how to diagnose it.

The Products

I purchased two different listings with two different-looking PCBs, both claiming to be BME280 modules with humidity function. I soldered some pins to it immediately and tried to get to work.

Test 1: By Software

The units are 1.8/3.3V capable and are not directly compatible with 5V interfaces without an appropriately configured level shifter. As a result, I connected it to a 3.3V Arduino Pro Micro. I downloaded the Adafruit BME280 library and tried the demo sketch.

Trying both 0x76 and 0x77 I2C addresses by modifying the library .h file, I knew there was a problem. I suspected it was a BMP280, so I tried the Adafruit BMP280 library which worked right away.

To me, this was a smoking gun indication that the unit is not a BME280 as described, but the seller wasn’t pleased with the explanation.

Test 2: By Visual Inspection of the PCB

Looking at the rear of the PCB, it seems the purple PCB may be the “genuine” and the blue PCB a “clone” – notice the poor printing by comparison and the M which became I1. Regardless, it seems the PCB was designed for BME280 and BMP280 – the black dot on the left module on the P text indicates it’s a BMP280. This was, however, confusing to the seller who insisted this meant it was a BME280 as the E was showing. The purple module on the right didn’t have any mark.

Test 3: By Visual Inspection of the Package

The sellers, being absolutely annoying, demanded to see the markings that say BMP280 to substantiate my claims. Unfortunately, that’s not how small electronics work – on a package which measures under 3x3mm, they use coded markings. In this case, it says DTC KW.

In the case of the purple board, it was 133 KN.

This is the smoking gun. If you look at the BME280 datasheet, on Page 44, the markings for mass production devices is shown. The marking should be in the format ??? U? where the U indicates BME280. The final ? is only a P according to this revision of the datasheet as there is only one subcontractor, so the last two characters should be UP.

Comparing this with the BMP280 datasheet, on Page 41, the format should be ??? K?, where the last ? is either P, U, N, W. Thus KP, KU, KN, KW are all BMP280 devices.

It’s not easy getting good images of something this small – so I suspected the sellers were just being unreasonable for the sake of it and even then, only in one case I managed a partial refund. The other was left at leaving negative feedback.

Conclusion

If you try to buy a Bosch Sensortec BME280 module on eBay, there’s a good chance you will get the lesser BMP280 instead. The reason seems to be sellers that don’t know what they are selling, a supply chain that doesn’t understand the difference between a BME280 and the BMP280 and a PCB break-out design that is shared between the two types of sensors. As a result, buying these sensors can get quite frustrating, as the sellers often get away with it.

If you want to be sure you get what you ordered, you’ll probably have to spend quite a bit more for a proper module from the likes of Adafruit, where everything is clearly labelled and controlled.

About lui_gough

I'm a bit of a nut for electronics, computing, photography, radio, satellite and other technical hobbies. Click for more about me!
This entry was posted in Electronics and tagged , , , , . Bookmark the permalink.

8 Responses to Note: Bosch Sensortec BMP280 vs BME280 Sensor Confusion

  1. David Griffiths says:

    I have a BMP280 on my home weather station but I have found it to be unreliable. It locks up every few weeks and needs to be reset. The barometric readings I see from it are also about 20 millibars off from the local BoM station ?? This may be due to a software error as a fairly serious amount of number crunching is needed to get the output of the chip into usable numbers.
    I am now looking at using an ST Micro device LPS22HB that looks much easier to get along with – but it is too small to solder by hand 🙁 and I haven’t found anyone offering them on a breakout board. It doesn’t have humidity but I use a separate Honeywell chip for that.
    Cheers DG

    • lui_gough says:

      Barometric readings that have a fixed offset from a known reference are not unexpected, as barometric pressure will change as a function of the altitude of the sensor versus sea level. As far as I know, most weather observations are made with sea-level corrected barometric pressure – about 12mbar per 100m altitude or something like that. In fact that’s how the barometric sensor is useful in smartphones for floor change estimation and providing rough altitude for GPS locking.

      Sensor locking up is probably just a problem with your library code – in my case, I account for the fact that the I2C bus will not be so reliable when extended out to any significant distance – e.g. impulse noise from lightning etc. So I force my code to reinitialize the sensor before taking a reading and it hasn’t faulted in months (BMP280, as I don’t have a BME280 – damn those eBay sellers). Other than that, it could be power related. I’ve also played with an Si7021 that doesn’t do barometric pressure, but mine succumbed to water damage and mild electrolysis, which is unfortunate.

      – Gough

      Edit: Added a few ideas.

      • David Griffiths says:

        Yes I adjust for height above sea level (200m in my case) and it still reads about low. Currently 1003 while RCH Air Base is reading 1017 ??
        The I2C re-init is a good idea, but shouldn’t have to do it!
        Haven’t had a chance to try the LPS22HB chips yet.

  2. Mark says:

    Hmmm… I checked some boards that I bought a few months back (but have not tried to use). One brand are “UP”, the other is “LP”. Any idea what those LP devices are?

    • lui_gough says:

      I’m not sure – but assuming that they work as BME280 sensors, there’s a slim chance they might be engineering sample units? The markings will be ??N ?? where the N is either a */e/E.

      – Gough

      • Mark says:

        The full markings are:
        N86
        LP

        Also, there may be some error in BME280 libraries/sample code out there. I have two different USB environmental sensors that use the BME280. These output approximately the same humidity values (say around 38%), but two very expensive calibrated metrology grade humidity sensors that I have read about 50% (which was close to the value that the National Weather Service was reporting).

        • lui_gough says:

          For humidity, you can try calibrating using the salt-water test (e.g. https://www.allaboutcircuits.com/projects/how-to-check-and-calibrate-a-humidity-sensor/) for a check, but an error in the library processing code is actually not unlikely as I had discovered a similar error in some code that dealt with temperature from the Xtrinsic-Sense board in the past for temperature that resulted in the fractional part of the temperature being incorrectly computed.

          So far, I’ve not had any luck obtaining BME280s at a decent (enough) price, so I’m still running an Si7021 indoors for indoor RH with no outdoor RH. Interestingly, my old 433Mhz weather station must have had corrosion/oxide build-up on its RH sensor as it always reports 20% regardless of rain or sun!

          – Gough

  3. Mark says:

    My good humidity sensors (Vaisala and Robertson) are kept calibrated to NIST traceable standards, so I trust those… they agree to within 0.1% RH.

    Since the two BME280 USB sensors (different makers and designs/processors) report values that are close to each other but disagree with the “known good” sensors I think the error is in some reference code that the USB sensor makers used (or the BME280 is just a crappy humidity sensor). They consistently produce readings around 10% RH lower than the calibrated devices.

Leave a Reply to Mark Cancel reply