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.
