bme.performReading() fails for BME680 using I2C

We have connected a BME680 using I2C to a SparkFun RedBoard (Arduino Uno) as shown in these instructions:

It was not detected by I2C_scanner until we added pull-up resistors:

The port was properly detected as 0x77.

When we run the provided test program, the call to bmeBegin() succeeds, but the call to [url=https://adafruit.github.io/Adafruit_BME680/html/class_adafruit___b_m_e680.html#a96489aa0c1c9bbbf066a0c915bc215b9]bme.performReading()[/url] returns false, indicating failure.

Here is the relevant part of the code:

Adafruit_BME680 bme; // I2C
//Adafruit_BME680 bme(BME_CS); // hardware SPI
//Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO,  BME_SCK);

void setup() {
  Serial.begin(9600);
  while (!Serial);
  Serial.println(F("BME680 test"));

  if (!bme.begin()) {
    Serial.println("Could not find a valid BME680 sensor, check wiring!");
    while (1);
  }

  // Set up oversampling and filter initialization
  bme.setTemperatureOversampling(BME680_OS_8X);
  bme.setHumidityOversampling(BME680_OS_2X);
  bme.setPressureOversampling(BME680_OS_4X);
  bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
  bme.setGasHeater(320, 150); // 320*C for 150 ms
}

void loop() {
  if (! bme.performReading()) {
    Serial.println("Failed to perform reading :("); // FAILURE OCCURS HERE
    return;
  }

Replacing the 10K resistors with 330 Ohm resistors had no effect.

If we call bme.readTemperature(), the return value is 0.0.

Here's something strange: I tried pulling out the resistors while it was running, and there was one successful reading before it began failing again. If I try starting it without the pull-up resistors, it doesn't get past bme.begin().

UPDATE: Based on an off-line suggestion, we tried using two 10K resistors in parallel to reduce the pull-up to 5K, and we tried changing the input voltage to the BME680 from 3.3V to 5V. Neither change helped.

A student switched to SPI and, after that didn't work, re-soldered the connections, which got it working. I'll report back if we try I2C again.

Post a link to the exact BME280 module. If it uses 3.3V I/O, then the pullup resistors MUST be connected to 3.3V, not 5V.

Of course, connections must be properly soldered, with no solder bridges between them creating a short circuit.

jremington:
Post a link to the exact BME280 module. If it uses 3.3V I/O, then the pullup resistors MUST be connected to 3.3V, not 5V.

Of course, connections must be properly soldered, with no solder bridges between them creating a short circuit.

Sorry for not posting a link. We're using the Adafruit BME680.

That sensor has level shifters and pullup resistors, so you don't need to add any. Most likely the wiring is/was faulty.