Go Down

Topic: Possible to use BME680 Breakout With Adafruit_BME680? (Read 71 times) previous topic - next topic

gel11

Hi, I am really new to this.

I bought this recently. I'm trying to use it and I am following this guide.

Mine seems to be a little bit different than the one they are showing. Is it possible to follow this guide? I've looked at this github repo, but I don't really understand it.

When I run the code from the adafruit guide I get:
Code: [Select]
Could not find a valid BME680 sensor, check wiring!


I have not changed the code at all (because I don't know if I need to). I imported the example code from  File->Examples->Adafruit_BME680->bmp680test. I also followed I2C Wiring.

 Could someone point me in the right direction? Thank you!

groundFungus

The first thing that I do when I have trouble with an I2C device is to run an I2C scanner to confirm the device address and that the device is on the I2C bus.  If not success, double check your wiring and confirm that the required pullup resistors are on the SDA and SCL lines.  Some modules have the pullups and some do not.

Code: [Select]
// I2C scanner by Nick Gammon.  Thanks Nick.

#include <Wire.h>

void setup() {
  Serial.begin (115200); //*****  make sure serial monitor baud matches *****

  // Leonardo: wait for serial port to connect
  while (!Serial)
    {
    }

  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;
  
  Wire.begin();
  for (byte i = 1; i < 120; i++)
  {
    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0)
      {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      count++;
      delay (1);  // maybe unneeded?
      } // end of good response
  } // end of for loop
  Serial.println ("Done.");
  Serial.print ("Found ");
  Serial.print (count, DEC);
  Serial.println (" device(s).");
}  // end of setup

void loop() {}

 

gel11

The first thing that I do when I have trouble with an I2C device is to run an I2C scanner to confirm the device address and that the device is on the I2C bus.  If not success, double check your wiring and confirm that the required pullup resistors are on the SDA and SCL lines.  Some modules have the pullups and some do not.

Code: [Select]
// I2C scanner by Nick Gammon.  Thanks Nick.

#include <Wire.h>

void setup() {
  Serial.begin (115200); //*****  make sure serial monitor baud matches *****

  // Leonardo: wait for serial port to connect
  while (!Serial)
    {
    }

  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;
  
  Wire.begin();
  for (byte i = 1; i < 120; i++)
  {
    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0)
      {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      count++;
      delay (1);  // maybe unneeded?
      } // end of good response
  } // end of for loop
  Serial.println ("Done.");
  Serial.print ("Found ");
  Serial.print (count, DEC);
  Serial.println (" device(s).");
}  // end of setup

void loop() {}

 

Hi! Thanks for the reply.

Seems the IC2 scanner found it:

Code: [Select]

I2C scanner. Scanning ...

Found address: 118 (0x76)

Done.

Found 1 device(s).


So I guess that it is correct?

gel11

I think I got repo (that I mention in the first post) to work (in the sense that I can run it). But it seems that it returns a similar message . Which seems related to ID and the above address (0x76)?

groundFungus

The default address for the sensor is 0x77 in the Adafruit library.  You can change the default to 0x76 in the begin() statement that should be in setup().  Try setting the address in the Adafruit BME680 example like so:

Code: [Select]
if (!bme.begin(0x76)) {  // ********** change from the default address (0x77) to 0x76
    Serial.println("Could not find a valid BME680 sensor, check wiring!");
    while (1);
  }

gel11

The default address for the sensor is 0x77 in the Adafruit library.  You can change the default to 0x76 in the begin() statement that should be in setup().  Try setting the address in the Adafruit BME680 example like so:

Code: [Select]
if (!bme.begin(0x76)) {  // ********** change from the default address (0x77) to 0x76
    Serial.println("Could not find a valid BME680 sensor, check wiring!");
    while (1);
  }


Thank you SO MUCH! It works. Thank you thank you!

Go Up