Strange BME280 problems -- please help


BME280 clone looks similar to this, but blue version.

but I bought it from here...

I have connected it through an APC220 Sensor Shield.

The Sensor Shield can be found here.

Using I2C...

I have tried three different libraries to try and get the results from it, and none of them seem to work:

Sparkfun library
gives me results like this:

Temperature: 0.00 degrees C
Temperature: 32.61 degrees F
Pressure: 69092.69 Pa
Altitude: 3221.09m
Altitude: 10567.87ft
%RH: 62.81 %

Looks good, HOWEVER it never changes, even by 0.01C or 0.01%. And there are some anomalous numbers in C/F (it is 19C where I live)

Finitespace library

Adafruit library

Both of these libraries give me a "No valid sensor found error"

I2C finds values on 0x23 and 0x77. I only have one I2C connection, as far as I can tell. However, I do have DHT22, GY-30 also connected.

Please help.

What is the supply and logic voltage for the sensor?
Is that compatible with the shield?

The poor documentation from the seller:

Digital interface I2C (up to 3.4 MHz) and SPI (3 and 4 wire, up to 10 MHz)
Supply voltage VDD main supply voltage range: 1.71 V to 3.6 V
VDDIO interface voltage range: 1.2 V to 3.6 V
Current consumption 1.8 μA @ 1 Hz humidity and temperature
2.8 μA @ 1 Hz pressure and temperature
3.6 μA @ 1 Hz humidity, pressure and temperature
0.1 μA in sleep mode
Operating range -40…+85 °C, 0…100 % rel. humidity, 300…1100 hPa
Humidity sensor and pressure sensor can be independently enabled / disabled
Register and performance compatible to Bosch Sensortec BMP280 digital pressure sensor
RoHS compliant, halogen-free, MSL1
Key parameters for humidity sensor1
Response time 1 s
Accuracy tolerance ±3 % relative humidity
0 Hysteresis ±1% relative humidity
Key parameters for pressure sensor RMS Noise 0.2 Pa, equiv. to 1.7 cm
Offset temperature coefficient ±1.5 Pa/K, equiv. to ±12.6 cm at 1 °C temperature change

So it's 3.3v supply, and I am using the 3.3v from the Bluetooth header on the shield (on the right), but I am not sure about the logic. I am using I2C.

The Sparkfun info (the board is exactly the same as far as I can tell except for the colour)


The breakout provides a 3.3V SPI interface, a 5V tolerant I2C interface (with pull-up resistors to 3.3V)

The BME280 is a 3.3V device! Supplying voltages greater than ~3.6V can permanently damage the IC. As long as your Arduino has a 3.3V supply output, and you're OK with using I2C, you shouldn't need any extra level shifting. But if you want to use SPI, you may need a Logic Level Converter.

Also can't get the camel library to work




People who live in glass houses . . .

The 0x77 address is the correct one according to the documentation. Use that one for starters.

That you see two addresses is odd, it would seem the shield has something extra on it (can't see it as that link returns a 404 error).

Why don't you connect the sensor directly to the Arduino? Make sure you power it at 3.3V and you should be able to connect the I2C that way.