Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use BME688: Examples, Pinouts, and Specs

Image of BME688
Cirkit Designer LogoDesign with BME688 in Cirkit Designer

Introduction

The BME688, manufactured by Bosch (Part ID: UNO), is a versatile environmental sensor designed to measure temperature, humidity, pressure, and gas concentrations, including volatile organic compounds (VOCs). This sensor combines high accuracy and low power consumption, making it ideal for air quality monitoring, IoT applications, and smart home devices. Its compact design and advanced features allow it to provide reliable data in a wide range of environmental conditions.

Explore Projects Built with BME688

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
ESP32-Based Environmental Monitoring System with Solar Charging
Image of IoT Ola (Final): A project utilizing BME688 in a practical application
This circuit features an ESP32 microcontroller interfaced with a BME/BMP280 sensor for environmental monitoring and an MH-Z19B sensor for CO2 measurement, both communicating via I2C (SCL, SDA) and serial (TX, RX) connections respectively. It includes a SIM800L module for GSM communication, connected to the ESP32 via serial (TXD, RXD). Power management is handled by two TP4056 modules for charging 18650 Li-ion batteries via solar panels, with a step-up boost converter to provide consistent voltage to the MH-Z19B, and voltage regulation for the SIM800L. Decoupling capacitors are used to stabilize the power supply to the BME/BMP280 and ESP32.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32-Based Smart Weather Station with BME280, BH1750, and OLED Display
Image of Smart Station: A project utilizing BME688 in a practical application
This circuit is a smart weather station that uses an ESP32 microcontroller to interface with a BME280 sensor for measuring temperature, humidity, and pressure, a BH1750 sensor for measuring light intensity, and a 0.96" OLED display to show the sensor readings. Additional components include a wind vane and a soil moisture module for environmental monitoring, all powered by a 18650 Li-ion battery managed by a TP4056 charging module.
Cirkit Designer LogoOpen Project in Cirkit Designer
Solar-Powered Environmental Monitoring System with ESP32 and Cellular Connectivity
Image of IoT Ola: A project utilizing BME688 in a practical application
This circuit features an ESP32 microcontroller interfaced with a BME/BMP280 sensor for environmental data and an MH-Z19B sensor for CO2 measurement, both communicating via I2C (SCL, SDA) and serial (TX, RX) connections respectively. It includes a TP4056 module for charging an 18650 Li-ion battery from a solar panel, with a step-up boost converter to provide stable voltage to the MH-Z19B sensor and a voltage regulator for the SIM800L GSM module. The capacitors are likely used for power supply filtering or decoupling.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32C3-Based Environmental and Health Monitoring System with BME280 and MAX30102 Sensors
Image of Petora_protoboard_v1: A project utilizing BME688 in a practical application
This circuit features an XIAO ESP32C3 microcontroller interfaced with a BME/BMP280 sensor for environmental data and a MAX30102 sensor for heart rate and oxygen level monitoring. The microcontroller reads data from these sensors via I2C communication and includes a simple program to blink an LED and print a test message to the serial monitor.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with BME688

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of IoT Ola (Final): A project utilizing BME688 in a practical application
ESP32-Based Environmental Monitoring System with Solar Charging
This circuit features an ESP32 microcontroller interfaced with a BME/BMP280 sensor for environmental monitoring and an MH-Z19B sensor for CO2 measurement, both communicating via I2C (SCL, SDA) and serial (TX, RX) connections respectively. It includes a SIM800L module for GSM communication, connected to the ESP32 via serial (TXD, RXD). Power management is handled by two TP4056 modules for charging 18650 Li-ion batteries via solar panels, with a step-up boost converter to provide consistent voltage to the MH-Z19B, and voltage regulation for the SIM800L. Decoupling capacitors are used to stabilize the power supply to the BME/BMP280 and ESP32.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Smart Station: A project utilizing BME688 in a practical application
ESP32-Based Smart Weather Station with BME280, BH1750, and OLED Display
This circuit is a smart weather station that uses an ESP32 microcontroller to interface with a BME280 sensor for measuring temperature, humidity, and pressure, a BH1750 sensor for measuring light intensity, and a 0.96" OLED display to show the sensor readings. Additional components include a wind vane and a soil moisture module for environmental monitoring, all powered by a 18650 Li-ion battery managed by a TP4056 charging module.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of IoT Ola: A project utilizing BME688 in a practical application
Solar-Powered Environmental Monitoring System with ESP32 and Cellular Connectivity
This circuit features an ESP32 microcontroller interfaced with a BME/BMP280 sensor for environmental data and an MH-Z19B sensor for CO2 measurement, both communicating via I2C (SCL, SDA) and serial (TX, RX) connections respectively. It includes a TP4056 module for charging an 18650 Li-ion battery from a solar panel, with a step-up boost converter to provide stable voltage to the MH-Z19B sensor and a voltage regulator for the SIM800L GSM module. The capacitors are likely used for power supply filtering or decoupling.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Petora_protoboard_v1: A project utilizing BME688 in a practical application
ESP32C3-Based Environmental and Health Monitoring System with BME280 and MAX30102 Sensors
This circuit features an XIAO ESP32C3 microcontroller interfaced with a BME/BMP280 sensor for environmental data and a MAX30102 sensor for heart rate and oxygen level monitoring. The microcontroller reads data from these sensors via I2C communication and includes a simple program to blink an LED and print a test message to the serial monitor.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications

  • Indoor air quality monitoring
  • Weather stations
  • IoT-enabled environmental sensing
  • HVAC systems
  • Smart home automation
  • Wearable devices for environmental tracking

Technical Specifications

The BME688 is a highly integrated sensor with the following key specifications:

Parameter Value
Supply Voltage 1.71V to 3.6V
Operating Current 2.1 µA (sleep mode), 3.7 mA (typical during gas measurement)
Temperature Range -40°C to +85°C
Humidity Range 0% to 100% relative humidity (non-condensing)
Pressure Range 300 hPa to 1100 hPa
Gas Measurement Detects VOCs and other gases (e.g., CO2 equivalents)
Interface I2C and SPI
Dimensions 3.0 mm x 3.0 mm x 0.93 mm

Pin Configuration and Descriptions

The BME688 has an 8-pin LGA package. The pin configuration is as follows:

Pin Number Pin Name Description
1 VDD Power supply voltage (1.71V to 3.6V)
2 GND Ground connection
3 SCL/SPICLK I2C clock line / SPI clock
4 SDA/SDI I2C data line / SPI data input
5 CSB Chip select for SPI (active low)
6 SDO SPI data output
7 VDDIO I/O voltage supply (1.2V to 3.6V)
8 NC Not connected (leave floating or connect to GND for stability)

Usage Instructions

How to Use the BME688 in a Circuit

  1. Power Supply: Connect the VDD pin to a stable power source (1.71V to 3.6V) and the GND pin to ground. Ensure the VDDIO pin is connected to the appropriate I/O voltage level.
  2. Communication Interface: Choose between I2C or SPI communication:
    • For I2C, connect the SCL and SDA pins to the corresponding I2C lines on your microcontroller.
    • For SPI, connect the SPICLK, SDI, SDO, and CSB pins to the respective SPI lines.
  3. Pull-Up Resistors: If using I2C, add pull-up resistors (typically 4.7 kΩ) to the SCL and SDA lines.
  4. Gas Sensor Warm-Up: Allow the sensor to warm up for a few minutes after powering on to stabilize gas measurements.
  5. Software Configuration: Use the Bosch BME688 library or write custom code to initialize the sensor and read data.

Important Considerations

  • Placement: Avoid placing the sensor near heat sources or in direct sunlight, as this may affect temperature and humidity readings.
  • Calibration: For gas measurements, the sensor may require calibration in the target environment for optimal accuracy.
  • Power Management: Use sleep mode to reduce power consumption when the sensor is not actively measuring.

Example Code for Arduino UNO

Below is an example of how to interface the BME688 with an Arduino UNO using I2C:

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME680.h>

// Create an instance of the BME680 sensor
Adafruit_BME680 bme;

// Define I2C address (default is 0x76, alternate is 0x77)
#define BME680_I2C_ADDR 0x76

void setup() {
  Serial.begin(9600);
  while (!Serial); // Wait for serial monitor to open

  // Initialize the BME680 sensor
  if (!bme.begin(BME680_I2C_ADDR)) {
    Serial.println("Could not find a valid BME680 sensor, check wiring!");
    while (1);
  }

  // Configure sensor settings
  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() {
  // Perform a measurement
  if (!bme.performReading()) {
    Serial.println("Failed to perform reading!");
    return;
  }

  // Print sensor data
  Serial.print("Temperature = ");
  Serial.print(bme.temperature);
  Serial.println(" °C");

  Serial.print("Humidity = ");
  Serial.print(bme.humidity);
  Serial.println(" %");

  Serial.print("Pressure = ");
  Serial.print(bme.pressure / 100.0);
  Serial.println(" hPa");

  Serial.print("Gas = ");
  Serial.print(bme.gas_resistance / 1000.0);
  Serial.println(" kOhms");

  delay(2000); // Wait 2 seconds before the next reading
}

Troubleshooting and FAQs

Common Issues

  1. Sensor Not Detected:

    • Ensure the I2C or SPI connections are correct.
    • Verify the I2C address (default is 0x76; alternate is 0x77).
    • Check for loose or faulty wiring.
  2. Inaccurate Readings:

    • Ensure the sensor is not exposed to extreme conditions (e.g., condensation).
    • Allow sufficient warm-up time for gas measurements.
    • Perform calibration if necessary.
  3. High Power Consumption:

    • Use sleep mode when the sensor is idle.
    • Optimize the measurement frequency to reduce active time.

Tips for Troubleshooting

  • Use a multimeter to verify power supply voltage and continuity of connections.
  • Test the sensor with a known working library (e.g., Adafruit BME680 library) to rule out software issues.
  • If using SPI, ensure the CSB pin is correctly configured and not floating.

By following this documentation, users can effectively integrate the BME688 sensor into their projects and achieve accurate environmental measurements.