Gravity: BME688 AI Environmental Sensor (VOC, Temperature, Humidity, Pressure) - DFRobot

Gravity: BME688 AI Environmental Sensor (VOC, Temperature, Humidity, Pressure) - DFRobot
Gravity: BME688 AI Environmental Sensor (VOC, Temperature, Humidity, Pressure) - DFRobotGravity: BME688 AI Environmental Sensor (VOC, Temperature, Humidity, Pressure) - DFRobotGravity: BME688 AI Environmental Sensor (VOC, Temperature, Humidity, Pressure) - DFRobotGravity: BME688 AI Environmental Sensor (VOC, Temperature, Humidity, Pressure) - DFRobotGravity: BME688 AI Environmental Sensor (VOC, Temperature, Humidity, Pressure) - DFRobotGravity: BME688 AI Environmental Sensor (VOC, Temperature, Humidity, Pressure) - DFRobot
รหัสสินค้า AS00623
หมวดหมู่ Temperature & Humidity
ราคา 1,250.00 บาท
สถานะสินค้า พร้อมส่ง
จำนวน
ชิ้น
หยิบลงตะกร้า
หนังสือรับรองบริษัท
บุ๊คแบ๊งค์
คุ้มครองโดย LnwPay
ดูวิธีการใช้งาน การต่อ และตัวอย่าง code ได้ที่ Click

INTRODUCTION

The DFRobot Gravity BME688 Environmental Sensor is an advanced, compact MEMS sensor that provides accurate measurements of temperature, humidity, barometric pressure, and volatile organic compounds (VOC). It supports I2C/SPI communication protocols, which facilitate integration with various systems. It also serves as a data source for AI gas analysis, making it an ideal choice for applications requiring precise environmental monitoring and intelligent gas detection. This sensor is well-suited for DIY weather stations, portable environmental monitoring devices, smart home systems, and agricultural monitoring.

Gravity: BME688 AI Environmental Sensor Measure VOC, Temperature, Humidity, Pressure

AI Gas Analysis
The BME688’s AI-driven gas analysis capability sets it apart from the previous BME680 model. It is particularly valuable for air quality monitoring systems, environmental research, and industrial safety. Using the Bosch BME AI-Studio and BSEC2-Arduino library, customized AI gas analysis can be implemented to detect and analyze specific gas profiles.

BME688 AI Gas Analysis

Highly Accurate Environmental Sensing
The BME688 sensor enhances the precision of temperature measurements, boasting an accuracy of ±0.5°C. These improvements render the sensor ideal for applications requiring highly accurate environmental data, including scientific experiments, climate research, and industrial environmental monitoring.
Advanced Air Quality Monitoring
The Gravity BME688 excels in indoor air quality monitoring, detecting harmful VOCs and providing real-time data for smart homes. Its built-in heating layer ensures stable, accurate measurements by minimizing ambient interference.

IAQ(Indoor Air Quality) Comparison Table

Compact Design

With dimensions of just 22*30mm, the BME688 is ideal for compact and portable weather stations, smart home setups, and agricultural monitoring systems.

Compact Design

SPECIFICATION

Power Requirements

  • Operating Voltage: 3.3 to 5V DC
  • Operating Current: 5mA (25mA with VOC Measurement Enabled)

Output Signal

  • Interface Options: I2C/SPI

Temperature Sensor

  • Measurement Range: -40 to +85°C
  • Accuracy: ±0.5°C (0 to 65°C)

Humidity Sensor

  • Measurement Range: 0 to 100% Relative Humidity (R.H.)
  • Accuracy: ±3% R.H. (20 to 80% R.H. at 25°C)

Barometric Pressure Sensor

  • Measurement Range: 300 to 1100 hPa
  • Accuracy: ±0.6 hPa (300 to 1100 hPa at 0 to 65°C)

Physical Dimensions

  • Module Size: 30 mm x 22 mm / 1.18 inches x 0.87 inches

DOCUMENTS

SHIPPING LIST

  • Gravity: I2C BME688 Environmental Sensor x1
  • Gravity UART / I2C sensor cable x1
  • XH2.54-10pin Header x1

Tutorial

This tutorial will demonstrate how to use this sensor module. Currently, only FireBeetle ESP8266 can read the IAQ value, other host controllers are not supported yet.

Prepare

Hardware

  • Arduino Uno(or similar dev board) x1
  • Gravity: BME688 environmental sensor x1
  • Gravity I2C/UART cable x1

Software

Wiring Diagram

  • This product supports I2C interface and SPI interface. When using this product, please select the corresponding wiring method according to the communication interface selected. Refer to the following diagram for the connection method.Please refer to the following diagram for the connection method.
  • I2C interface is recommended for plug-and-play, easy to use. It is recommended to use the I2C interface, which is easy to use.
  • If SPI interface is used, the module will be powered by 3.3V.

I2C diagram

Be sure to pay attention to the wire sequence, VCC to 5V, GND grounded

SPI diagram

Be sure to pay attention to the wire sequence, VCC to 3.3V, GND grounded


Sample code

Please install the Arduino library files first. DFRobot_BME68x This sample code uses I2C interface. For SPI interface sample code, please go to the library file to find DFRobot_BME68x_SPI.ino file, due to the same function, we do not show the code here. Calibration is required for accurate altitude measurement. Before uploading the code, please fill in the altitude value of your region into the statement in the sample code: seaLevel = bme.readSeaLevel(altitude value of your region);

Reading data (without IAQ index)

Program Function: Reads sensor data and performs serial port printing. (without IAQ) Set the heating layer to 320℃ for 100ms through setGasHeater() function. and wait for 30ms (the heating layer needs 20~30ms to be heated to the target temperature). And read the gas resistance value by readGasResistance() function.

/*!
* @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](jiehan.guo@dfrobot.com)
* @maintainer [GDuang](yonglei.ren@dfrobot.com)
* @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
}

Reading data (with IAQ values)

Program Function: Reads sensor data and performs serial printing. (with IAQ) Currently, only FireBeetle ESP8266 can read IAQ values, other dev board are not supported at this time. For FireBeetle ESP8266 WiFi IoT development board, please use Arduino IDE version 1.8, and you need to upgrade the SDK to 2.3.1 and above. Upgrade method reference FireBeetle ESP8266 wiki

/*!
* @file IAQ_I2C.ino
* @brief connect bme68x I2C interface with your board (please reference board compatibility)
* @n Temprature, Humidity, pressure, altitude, calibrated altitude, gas resistance and IAQ data will be printed via serial.
* @note This demo only support ESP8266 MCU
*
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @license The MIT License (MIT)
* @author [Frank](jiehan.guo@dfrobot.com)
* @maintainer [GDuang](yonglei.ren@dfrobot.com)
* @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(115200);
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");
bme.supportIAQ();

// 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()
{
static uint8_t calibrated = 0;

#ifdef CALIBRATE_PRESSURE
if(calibrated == 0) {
if(bme.iaqUpdate() == 0) {
/*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);
calibrated = 1;
}
}
#else
calibrated = 1;
#endif

if(calibrated) {
uint8_t rslt = bme.iaqUpdate();
if(rslt == 0) {
Serial.println();
Serial.print("timestamp(ms) :");
Serial.println(millis());
Serial.print("temperature(C) :");
Serial.println(bme.readTemperature(), 2);
Serial.print("pressure(Pa) :");
Serial.println(bme.readPressure());
Serial.print("humidity(%rh) :");
Serial.println(bme.readHumidity(), 2);
Serial.print("altitude(m) :");
Serial.println(bme.readAltitude());
#ifdef CALIBRATE_PRESSURE
Serial.print("calibrated altitude(m) :");
Serial.println(bme.readCalibratedAltitude(seaLevel));
#endif
Serial.print("gas resistance :");
Serial.println(bme.readGasResistance());
if(bme.isIAQReady()) {
Serial.print("IAQ :");
float iaq = bme.readIAQ();
Serial.print(iaq);
if(iaq < 50) Serial.println(" good");
else if(iaq < 100) Serial.println(" average");
else if(iaq < 150) Serial.println(" little bad");
else if(iaq < 200) Serial.println(" bad");
else if(iaq < 300) Serial.println(" worse");
else Serial.println(" very bad");
} else {
Serial.println("IAQ not ready, please wait about 5 minutes");
Serial.print("IAQ not ready, You will have to wait ");
Serial.print((int)(305000-millis())/1000);
Serial.println(" seconds");
}
}
}
}

Result

without IAQ data

with IAQ data

Arduino library API list

  • Create a bme object and write to the I2C address
    DFRobot_BME68x_I2C bme(0x77);

  • Initializing the BME68x and Libraries
    begin();

  • Start data conversion startConvert();

  • Read converted data
    update();

  • Supports IAQ reading
    supportIAQ();

  • Read-converted data with IAQ
    iaqUpdate();

  • Queries whether the IAQ conversion is complete, returns 1 if complete, 0 if not.
    isIAQReady();

  • Get the temperature in °C, data with two decimal points
    readTemperature();

  • Get the pressure in pa, data with two decimal points
    readPressure();

  • Get the humidity in %rh with two decimal places.
    readHumidity();

  • Get the resistance value of the gas resistor in ohm, data with two decimal points
    readGasResistance();

  • Get the altitude in m with two decimal places.
    readAltitude();

  • Acquisition of sea level barometric pressure reference, incoming elevation
    readSeaLevel(float altitude);

  • Acquisition of corrected elevations to be passed into the sea level reference readCalibratedAltitude(float seaLevel);

  • Set the target temperature of the heating layer (°C) and the heating duration (ms). Temperature range 200~400°C
    setGasHeater(uint16_t heaterTemp, uint16_t heaterTime);

Compatible test

MCU Working well Working wrong Untested special specification
FireBeetle-Board328P     IAQ is not supported
FireBeetle-ESP32     IAQ is not supported
FireBeetle-ESP8266     IAQ is supported
Leonardo/UNO/MEGA     IAQ is not supported

วิธีการชำระเงิน

ชำระเงินค่าสินค้าโดยการโอนเงินเข้าบัญชีธนาคาร KBANK, SCB, BBL,TMB

กรุณาเก็บหลักฐานการโอนเงินของท่านไว้เพื่อแจ้งการชำระเงินด้วยค่ะ

 

ท่านสามารถแจ้งการชำระเงินผ่านระบบอัตโนมัติได้โดย Click Link ข้างล่างค่ะ

https://www.arduitronics.com/informpayment

 

บมจ. ธนาคารกสิกรไทย สาขาเซ็นทรัล แจ้งวัฒนะ ออมทรัพย์
ธนาคารไทยพาณิชย์ จำกัด (มหาชน) สาขาเซ็นทรัล แจ้งวัฒนะ ออมทรัพย์
ธนาคารกรุงเทพ จำกัด (มหาชน) สาขาเซนทรัล พระราม 3 สะสมทรัพย์
ธนาคารทหารไทยธนชาต จำกัด (มหาชน) สาขาเซนทรัล พระราม 3 กระแสรายวัน

เพิ่มเพื่อน

@rfm0967y

ติดต่อสอบถาม

เพิ่มเพื่อน

CATEGORY

Sensors / Modules [1695]

CONTACT US

มือถือ 0887823467 แฟกซ์ 02-0153201

Join เป็นสมาชิกร้านค้า

ร้านArduitronics
ร้านArduitronics
/www.arduitronics.com/
Join เป็นสมาชิกร้าน
2118
สมัครสมาชิกร้านนี้ เพื่อรับสิทธิพิเศษ

STATISTICS

หน้าที่เข้าชม15,375,197 ครั้ง
ผู้ชมทั้งหมด5,878,275 ครั้ง
เปิดร้าน21 พ.ค. 2556
ร้านค้าอัพเดท5 ก.ย. 2568

MEMBER

พูดคุย-สอบถาม