Example Code for Arduino-Reading data without IAQ index
Reads sensor data and prints the values to the serial port. (IAQ data not included)
Hardware Preparation
- DFRduino UNO x1
- Gravity: BME688 environmental sensor x1
- Gravity IO Expansion shield x1
- Jumper Wire(F/F) for SPI connection x1
Software Preparation
- Arduino IDE (1.8.x)
- Download the DFRobot_BME68x library
Wiring Diagram
- This product supports both I2C and SPI interfaces. Select the appropriate wiring method based on your chosen communication interface.
- The I2C interface is recommended for plug-and-play usage and easier integration.
- When using the SPI interface, the module must be powered by 3.3V.
I2C Diagram
Make sure to follow the correct wiring sequence: connect VCC to 5V and GND to ground.
Other Preparation Work
Calibration is required for accurate altitude measurement. Before uploading the code, enter the altitude of your region into the following statement in the sample code:
seaLevel = bme.readSeaLevel(<altitude_in_meters>);
Sample Code
This sample code uses the I2C interface. For SPI examples, see the reference files.
Use
setGasHeater()to set the heating layer to 320°C for 100 ms, then wait for 20–30 ms for the heater to reach the target temperature.
After the waiting period, callreadGasResistance()to obtain the gas resistance value.
/*!
* @file DFRobot_BME68x_I2C.ino
* @brief connect bme68x I2C interface with your board (please reference board compatibility)
* @n Temprature, Humidity, pressure, altitude, calibrate altitude and gas resistance data will print on serial window.
*
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @license The MIT License (MIT)
* @author [Frank]([email protected])
* @maintainer [GDuang]([email protected])
* @version V2.0
* @date 2024-04-25
* @url https://github.com/DFRobot/DFRobot_BME68x
*/
#include "DFRobot_BME68x_I2C.h"
#include "Wire.h"
/*use an accurate altitude to calibrate sea level air pressure*/
#define CALIBRATE_PRESSURE
DFRobot_BME68x_I2C bme(0x77); //0x77 I2C address
float seaLevel;
void setup()
{
uint8_t rslt = 1;
Serial.begin(9600);
while(!Serial);
delay(5000);
Serial.println();
while(rslt != 0) {
rslt = bme.begin();
if(rslt != 0) {
Serial.println("bme begin failure");
delay(2000);
}
}
Serial.println("bme begin successful");
#ifdef CALIBRATE_PRESSURE
bme.startConvert();
delay(1000);
bme.update();
/*You can use an accurate altitude to calibrate sea level air pressure.
*And then use this calibrated sea level pressure as a reference to obtain the calibrated altitude.
*In this case,525.0m is chendu accurate altitude.
*/
seaLevel = bme.readSeaLevel(525.0);
Serial.print("seaLevel :");
Serial.println(seaLevel);
#endif
// At initialization, the default heating layer target temperature is 320 and the duration is 150ms
bool res = bme.setGasHeater(360, 100);
Serial.print("Set the target temperature of the heating layer and the heating time: ");
if(res == true){
Serial.println("set successful!");
}else{
Serial.println("set failure!");
}
}
void loop()
{
bme.setGasHeater(320, 100);
delay(30);
bme.startConvert();
delay(1000);
bme.update();
Serial.println();
Serial.print("temperature(C) :");
Serial.println(bme.readTemperature() / 100, 2);
Serial.print("pressure(Pa) :");
Serial.println(bme.readPressure());
Serial.print("humidity(%rh) :");
Serial.println(bme.readHumidity() / 1000, 2);
Serial.print("gas resistance(ohm) :");
Serial.println(bme.readGasResistance());
Serial.print("altitude(m) :");
Serial.println(bme.readAltitude());
#ifdef CALIBRATE_PRESSURE
Serial.print("calibrated altitude(m) :");
Serial.println(bme.readCalibratedAltitude(seaLevel));
#endif
}
Result
Was this article helpful?
