Arduino driver for the Bosch BME68x environmental sensor.
The BME68x is a high-performance environmental sensor capable of measuring temperature, humidity, pressure, and gas resistance. It is widely used for air quality monitoring, environmental sensing, and IoT applications.
This library provides an easy interface for configuring the sensor and reading environmental measurements using I²C or SPI communication.
- Temperature measurement
- Humidity measurement
- Barometric pressure measurement
- Gas resistance measurement
- I²C communication support
- SPI communication support
- Heater configuration for gas sensing
- Oversampling configuration
- IIR filter configuration
- Forced mode measurements
- Parallel mode measurements
- Multiple heater profile support
- Arduino UNO / Mega
- ESP32
- ESP8266
- Any board supporting Wire (I²C) or SPI
Supported sensor:
7Semi Environmental Sensor Breakout - BME68x
The BME68x supports both I²C and SPI communication.
| BME68x Pin | MCU Pin | Description |
|---|---|---|
| VCC | 3.3V | Sensor power |
| GND | GND | Ground |
| SDA | SDA | I²C data |
| SCL | SCL | I²C clock |
Default sensor address:
0x77Alternative address:
0x76Recommended I²C speed:
100 kHz – 400 kHz| BME68x Pin | MCU Pin | Description |
|---|---|---|
| VCC | 3.3V | Sensor power |
| GND | GND | Ground |
| CS | Chip Select | SPI chip select |
| SCK | SPI Clock | SPI clock |
| SDI | MOSI | SPI data input |
| SDO | MISO | SPI data output |
- Open Arduino IDE
- Go to Library Manager
- Search for 7Semi BME68x
- Click Install
- Download this repository as ZIP
- Arduino IDE → Sketch → Include Library → Add .ZIP Library
#include <7Semi_BME68x.h>
BME68x_7Semi sensor;
void setup()
{
Serial.begin(115200);
if(!sensor.begin())
{
Serial.println("BME68x not detected");
while(1);
}
}
void loop()
{
float temperature, humidity, pressure, gas;
if(sensor.getData(temperature, humidity, pressure, gas))
{
Serial.print("Temperature: ");
Serial.println(temperature);
Serial.print("Humidity: ");
Serial.println(humidity);
Serial.print("Pressure: ");
Serial.println(pressure);
Serial.print("Gas: ");
Serial.println(gas);
}
delay(2000);
}float temperature, humidity, pressure, gas;
sensor.getData(temperature, humidity, pressure, gas);
Serial.println(temperature);
Serial.println(humidity);
Serial.println(pressure);
Serial.println(gas);Returns sensor measurements.
float temperature = sensor.getTemperature();
Serial.println(temperature);Returns temperature in °C.
float humidity = sensor.getHumidity();
Serial.println(humidity);Returns relative humidity (%).
float pressure = sensor.getPressure();
Serial.println(pressure);Returns barometric pressure in Pa.
float gas = sensor.getGasResistance();
Serial.println(gas);Returns gas resistance value in ohms.
sensor.setSampling(OS8, OS2, OS4, FILTER_3);Parameters:
Temperature oversampling
Humidity oversampling
Pressure oversampling
Filter configuration
Oversampling options:
SKIPPED
OS1
OS2
OS4
OS8
OS16Available filter settings:
FILTER_OFF
FILTER_1
FILTER_3
FILTER_7
FILTER_15
FILTER_31
FILTER_63
FILTER_127Filters help reduce measurement noise.
The BME68x contains a gas sensing heater that can be configured for different gas measurement conditions.
Example:
sensor.setHeater(true, 300, 100);Parameters:
enable heater
heater temperature (°C)
heater duration (ms)
Multiple heater profiles can be stored for advanced gas sensing.
Example:
sensor.setHeaterProfile(0, 200, 100);
sensor.setHeaterProfile(1, 300, 150);Profiles allow different heater configurations during operation.
Triggers a single measurement.
sensor.setForcedMode();Used for advanced gas sensing measurements.
bme68x_data data[3];
uint8_t fields;
sensor.readParallel(data, fields);Typical applications include:
- Air quality monitoring
- Indoor environmental monitoring
- Smart home sensors
- IoT environmental sensing
- Weather stations
- Industrial environmental monitoring
MIT License
This library includes the Bosch BME68x Sensor API.
Bosch Sensortec retains copyright ownership of the original driver.
The 7Semi library provides a C++ wrapper and additional functionality for Arduino platforms.
Original driver:
- Bosch Sensortec BME68x Sensor API
- https://github.com/boschsensortec/BME68x-Sensor-API
7Semi