BMP280 on GY-21P not responding

Hey there,

I have the following problem:

I bought a GY-21P Breakout (like this) with an BMP280 & Si7021 Sensor on it.
I connected it to my Arduino Uno with the 3.3 V supply, but I have a 5 V LCD connected as well.
If I run the I2C-Scanner I can see both sensors (0x40 & 0x76; & 0x3F for the LCD).

The Si7021 is just working fine the the SparkFun Si7021 library, but with the Adafruit BMP280 library I can't get any values but the message:
"Could not find a valid BMP280 sensor, check wiring!"

What could be the Problems here?

TIA

The BMP280 library of adafruit support the chip with the SPI and the I2C interface. Post your code to let us see how you call the library.

Take a look in the library from Adafruit : "#define BMP280_ADDRESS (0x77)"

You found a sensor @ 0x76

I am not sure if this the problem, but try change the address

I too am not getting any response from address 0x76, as mentioned earlier the i2scanner reports addresses 0x40 and 0x76 Nothing at 0x77

I too am not getting any response from address 0x76, as mentioned earlier the i2scanner reports addresses 0x40 and 0x76 Nothing at 0x77

The I2C address is defined by the SDO pin. If connected to GND, the address is 0x76, if connected to Vcc it's 0x77. Adafruit sets the default to match their own hardware. If you bought other hardware you might have to adapt that.

The above one is the GY-21P Breakout Board. It has no SDO line.

The OP may try the following codes (tested in my UNO of mine BME/BMP280 with VIN, GND, SCL, SDA pins) just to test the BME280 sensor alone (disconnect the I2CLCD panel). Note that there are many libraries and the sensor does not work for all libraries.

#include <Wire.h>
#include "BlueDot_BME280.h"
BlueDot_BME280 bme280 = BlueDot_BME280();


void setup()
{
  Serial.begin(9600);
  bme280.parameter.communication = 0;                  //Choose communication protocol
  bme280.parameter.I2CAddress = 0x76;                  //Choose I2C Address
  bme280.parameter.sensorMode = 0b11;                   //Choose sensor mode
  bme280.parameter.IIRfilter = 0b100;                    //Setup for IIR Filter
  bme280.parameter.tempOversampling = 0b101;             //Setup Temperature Ovesampling
  bme280.parameter.tempOutsideCelsius = 15;              //default value of 15°C
  bme280.init();
}

void loop()
{
  Serial.print(F("Temperature in Celsius:\t\t"));
  Serial.println(bme280.readTempC());
  delay(1000);
}

The above one is the GY-21P Breakout Board. It has no SDO line.

Sure but the chips has a pin with that name. My answer was an explanation why the Adafruit library uses an I2C address default that doesn't match the OP's board but is still correct.

knut_ny:
Take a look in the library from Adafruit : "#define BMP280_ADDRESS (0x77)"

You found a sensor @ 0x76

I am not sure if this the problem, but try change the address

I changed the address and the sensor worked correctly.