Uno / BMP280 I2C address(s)?

I just received a BMP280 I2C Temp sensor. I ran the I2C scanner.
I used (2) 10K pull-up resistors. 1 from SDA to 3V+, SCL to 3V+

Obviously 3V from Arduino Uno to VIN to the BMP280, GND to GND.
SDA to A4(Uno), SCL to A5(Uno).

It comes up with 2 addresses:

I2C scanner. Scanning ...
Found address: 64 (0x40)
Found address: 118 (0x76)
Found 2 device(s).

I was not expecting that. Is that normal?

I had to go in and change the I2C address in the BMP280.h file to read 0x76. saved the .h file and re-loaded Arduino IDE, compiled&uploaded the BMP280test sketch. Now it works!!! It' nice to be able to figure things out on your own.

So, here I wait until the 128x64 I2C OLED arrives. Then I'll have to verify that works via I2C, then merge the 2 sketches.

I'll be back when the display arrives.

No, that is not normal at all.
You are not the only one:
Is there is SI7021 (square chip with metal/white top) on the module as well ?
The BMP280 is the metal box with the hole.

Can you give a link to where you bought the BMP280 module ? What kind of module is it ?

The Arduino Uno is a 5V board and the sensor is a 3.3V sensor. That could cause trouble on the I2C bus.

Do you use a breadboard or long wires or do you use a cable or (even worse) a flat ribbon cable for the I2C bus ?

Could you try to run the i2c scanner again with a 3.3V Arduino board or when using a I2C level shifter ?

On the page of the i2c scanner is a link to a MultiSpeed I2C Scanner. Could you test if that has the same result ?

Those OLED displays are known to disturb the I2C bus. Try it without the sensors on the I2C bus, and if it is working, try to add the sensors.
Which library for the OLED are you going to use ?

Purchased the sensor from here:

Plan on using the SSD1306 librabry for the OLED. And when all is working, I will be attempting to upload it to a Adafruit 3V Trinket

Currently the sensor is on a breadboard with 3V from the Uno R3 I’m getting readings from the sensor on the serial monitor.
IMG_5322 (1).JPG

Is there is SI7021 (square chip with metal/white top) on the module as well ?
The BMP280 is the metal box with the hole.


If it makes any difference. I only need it to read the Barometric Pressure.

I guess my next question is: Is the one I purchased a crapy knock-off?

That module also seems to have a Si7021 temp/humidity sensor onboard with an I2C address of 0x40.

That BMP280 is the real sensor from Bosch.
I can not be 100% sure, but you can assume that it is the real thing and the baromic pressure is accurate.

You can ignore the Si7021, and use only the baromic pressure from the BMP280.

You mean the SSD1306 library from Adafruit ? There are a number of different types of OLED displays. If you did not buy your OLED display from Adafruit, it might not be compatible with the Adafruit library.

I have doubts if it will fit into a Trinket with a ATtiny85.
The Trinket is not an official Arduino board. You can give it a try, but why bother ?

So you a few hurdles to take:

  • will the OLED disturb the I2C bus ?
  • will the OLED work with the Adafruit library ?
  • will the project work on a Trinket ?

I think the Si7021 is cheaper than the price difference between the BMP180 (which costs less than USD 1) and the BME280 (about USD 3, making it a pretty expensive sensor). Hope I remember those prices correctly but won’t be much off - this when bought in volume of course.

So to do a temp/pressure/humidity all-in-one this is the cheaper way.

Not likely to be a knock-off, it’s not easy to copy a sensor like the BMP280 and even less so at that price.

So you got what you paid for - it’s just not exactly what you expected to get as there are two individual sensors on one board.

Do add a level shifter to the I2C lines. You can easily kill the BMP280 with 5V signals (I don’t know about the other one). Powering the device off the 3.3V output of the Arduino is fine, that’s what that output is for.


  • will the project work on a Trinket?

Umm. No. But should work with a 3V Trinket Pro. Same Atmega 328. I just looked through my parts bin and found one left over from a project 2 years ago when I 1st started tinkering with an Uno.

The BMP280 has been running now for over 48 hours without issues. Temp(F) and Baro(mmHg)

I think I'm good I decided on NOT destroying my SPI OLED, will hook that up tomorrow. I accidentally left it at work.

Edit: No, the left-over OLED was toast. I tossed it. So back to waiting for the new one to arrive and hope for the best. I found in the product reviews a comment that says it works with the Adafruit SSD1306 Library, just need to change the I2C address in the header file to 0x3C