BME688
UnreviewedBosch Sensortec BME688 — Digital low power gas, pressure, temperature & humidity sensor with AI
Source: Bosch Sensortec Datasheet (BST-BME688-DS000-03)
Manufacturer: Bosch Sensortec
Part Number: BME688
Document: BST-BME688-DS000-03 — Rev 1.3, February 2024
Description
The BME688 is the first gas sensor with Artificial Intelligence (AI) and integrated high-linearity and high-accuracy pressure, humidity and temperature sensors. It is housed in a robust yet compact 3.0 x 3.0 x 0.93 mm metal lid LGA package and is especially developed for mobile and connected applications where size and low power consumption are critical requirements.
The gas sensor can detect Volatile Organic Compounds (VOCs), volatile sulfur compounds (VSCs) and other gases such as carbon monoxide and hydrogen in the part per billion (ppb) range. The BME688 features a gas scanner function that can be customized with respect to sensitivity, selectivity, data rate and power consumption using the BME AI-Studio tool, enabling customers to train the sensor on their specific application.
Key Specifications
| Parameter | Value |
|---|---|
| Supply Voltage (VDD) | 1.71V to 3.6V |
| Interface Voltage (VDDIO) | 1.2V to 3.6V |
| Digital Interface | I2C (up to 3.4 MHz), SPI (up to 10 MHz) |
| Package | 3.0 x 3.0 x 0.93 mm LGA-8 |
| Temperature Range | -40 to +85 C |
| Pressure Range | 300 to 1100 hPa |
| Humidity Range | 0 to 100% r.H. |
| Sleep Current | 0.15 uA |
| Gas Scan H2S F1 Score | 0.94 |
| IAQ Range | 0 to 500 |
| Pin Count | 8 |
Features
- First gas sensor with integrated AI capability for custom gas classification
- 4-in-1 sensor: gas, pressure, temperature and humidity in a single package
- Gas scanner function with H2S selectivity (F1 score 0.94) for VSC detection
- Ultra-low power modes from 0.09 mA (ULP) to 12 mA (continuous)
- BME AI-Studio toolchain enables training for custom gas classification use cases (up to 4 classes)
- Index for Air Quality (IAQ) output with 0-500 scale and automatic calibration
- bVOC and CO2 equivalent outputs via BSEC software library
- I2C and SPI digital interfaces with configurable I2C address via SDO pin
- IIR filter for temperature and pressure noise reduction
- 10 programmable heater temperature steps for gas scanning profiles
- Forced and parallel measurement modes for flexible power/performance tradeoff
- RoHS compliant, halogen-free, MSL1
Pin Configuration
| Pin | Name | Type | Description |
|---|---|---|---|
| 1 | GND | Power | Ground |
| 2 | CSB | Input | SPI chip select (active low); connect to VDDIO for I2C |
| 3 | SDI | In/Out | SPI data in / I2C SDA |
| 4 | SCK | Input | SPI clock / I2C SCL |
| 5 | SDO | In/Out | SPI data out / I2C address select (GND=0x76, VDDIO=0x77) |
| 6 | VDDIO | Power | Digital interface supply (1.2V to 3.6V) |
| 7 | GND | Power | Ground |
| 8 | VDD | Power | Analog supply (1.71V to 3.6V) |
Absolute Maximum Ratings
| Parameter | Min | Max | Unit |
|---|---|---|---|
| Voltage at any supply pin (VDD, VDDIO) | -0.3 | 4.25 | V |
| Voltage at any interface pin | -0.3 | VDDIO + 0.3 | V |
| Storage temperature | -45 | +85 | C |
| Pressure | 0 | 20000 | hPa |
| ESD (HBM, any pin) | - | +/-2 | kV |
| ESD (Machine model) | - | +/-200 | V |
Electrical Characteristics
| Parameter | Conditions | Min | Typ | Max | Unit |
|---|---|---|---|---|---|
| Supply Voltage VDD | Ripple max 50 mVpp | 1.71 | 1.8 | 3.6 | V |
| Supply Voltage VDDIO | - | 1.2 | 1.6 | 3.6 | V |
| Sleep Current | - | - | 0.15 | 1 | uA |
| Standby Current | - | - | 0.29 | 0.8 | uA |
| Current (humidity meas.) | Max at 85 C | - | 340 | 450 | uA |
| Current (pressure meas.) | Max at -40 C | - | 714 | 849 | uA |
| Gas heater current | 320 C target, VDD <= 1.8V | 9 | 12 | 13 | mA |
| Peak supply current | First ms of heater on | 15 | 17 | 18 | mA |
| Start-up time | VDD > 1.58V, VDDIO > 0.65V | - | 2 | - | ms |
| Humidity accuracy | 20-80% r.H., 25 C | - | - | +/-3 | % r.H. |
| Humidity response time | 0-63% step | - | 8 | - | s |
| Pressure absolute accuracy | 300-1100 hPa, 0-65 C | - | - | +/-0.6 | hPa |
| Pressure noise (RMS) | Full BW, highest OS | - | 1.4 | - | Pa |
| Temperature accuracy | 0-65 C | - | - | +/-0.5 | C |
| Temperature resolution | API output | - | 0.01 | - | C |
Power Consumption
| Parameter | Conditions | Typ | Unit |
|---|---|---|---|
| Humidity + temperature | 1 Hz forced mode | 2.1 | uA |
| Pressure + temperature | 1 Hz forced mode | 3.1 | uA |
| Humidity + pressure + temperature | 1 Hz forced mode | 3.7 | uA |
| Ultra-low power (p/h/T + air quality) | ULP mode | 90 | uA |
| Low power (p/h/T + air quality) | LP mode | 0.9 | mA |
| Standard gas scan mode | 5 scan + 10 sleep cycles | 3.96 | mA |
| Continuous mode | 1 Hz update rate | 12 | mA |
Communication Interface
The BME688 supports I2C (standard, fast, and high-speed modes up to 3.4 MHz) and SPI (3-wire and 4-wire modes up to 10 MHz).
I2C: The 7-bit device address is 1110110 (0x76) when SDO is connected to GND, or 1110111 (0x77) when SDO is connected to VDDIO. External pull-up resistors (typically 4.7 kOhm) are required on SDA and SCL. Use 100 nF bypass capacitors on VDD and VDDIO.
SPI: Compatible with SPI mode 0 (CPOL=0, CPHA=0) and mode 3 (CPOL=1, CPHA=1). CSB is active low with an internal pull-up resistor. In 3-wire mode, SDI is used for bidirectional data.
Packages
| Package | Pins | Body Size | Height |
|---|---|---|---|
| Metal Lid LGA | 8 | 3.0 x 3.0 mm | 0.93 mm |
Software API
The BME688 is designed to work with the BSEC (Bosch Software Environmental Cluster) library, which provides intelligent algorithms for:
- Index for Air Quality (IAQ): 0-500 scale with automatic background calibration
- Gas scan classification: Up to 4 custom gas classes trained via BME AI-Studio
- CO2 equivalents: Derived from VOC/CO2 correlation in exhaled breath
- bVOC equivalents: Breath-VOC concentration in ppm
- Compensated outputs: Temperature and humidity corrected for device self-heating
BSEC Power Modes:
| Mode | Update Rate | Avg Current |
|---|---|---|
| Standard gas scan | 1/10.8 s | 3.96 mA |
| Ultra-low power (ULP) | 1/300 s | 0.09 mA |
| Quick ULP (q-ULP) | 0.33 Hz (T/p/h), 3.3 mHz (IAQ) | 0.1 mA |
| Low power (LP) | 0.33 Hz | 0.9 mA |
| Continuous | 1 Hz | 12 mA |
Software Components:
| Component | Type | Description |
|---|---|---|
| BME68x Sensor API | C code | Raw data access via SPI/I2C interface |
| BSEC | C static library | Fused outputs and AI gas classification |
| BME AI-Studio | PC application | AI toolchain for custom gas use cases |
Sensor API: github.com/BoschSensortec/BME68x-Sensor-API
Applications
- Indoor air quality monitoring and smart ventilation
- Bad breath and spoiled food detection via volatile sulfur compounds
- Gas leak detection (unusual gases and smells)
- Diaper state detection for baby care
- Early odor and bad smell detection
- Weather station and environmental monitoring (pressure, humidity, temperature)
- Wearable health and wellness tracking
- Smart home devices (speakers, connected sensors, lamps)
- Asset tracking and surveillance with environmental context
Key Formulas
Temperature Compensation
var1 = (temp_adc / 16384.0 - par_t1 / 1024.0) * par_t2
var2 = ((temp_adc / 131072.0 - par_t1 / 8192.0)^2) * (par_t3 * 16.0)
t_fine = var1 + var2
temp_comp = t_fine / 5120.0
Heater Resistance Target
res_heat = 3.4 * ((1 + 0.023 * target_temp) * gas_res - 25)
Gas Wait Duration
duration_ms = gas_wait[5:0] * multiplication_factor
multiplication_factor = {1, 4, 16, 64}[gas_wait[7:6]]
IAQ Scale
0-50: Excellent — Pure air, best for well-being
51-100: Good — No irritation or impact
101-150: Lightly polluted — Ventilation suggested
151-200: Moderately polluted — Increase ventilation
201-250: Heavily polluted — Optimize ventilation
251-350: Severely polluted — Maximize ventilation
>351: Extremely polluted — Avoid presence in room