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.
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.
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.
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.