Arduino driver for the Bosch BME690 environmental sensor.
The BME690 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 - BME690
The BME690 supports both I²C and SPI communication.
| BME690 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| BME690 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 BME690
- Click Install
- Download this repository as ZIP
- Arduino IDE → Sketch → Include Library → Add .ZIP Library
#include <7Semi_BME690.h>
BME69X_7Semi sensor;
void setup()
{
Serial.begin(115200);
if(!sensor.begin())
{
Serial.println("BME690 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 configurationOversampling 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 BME690 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.
BME690_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 BME690 Sensor API.
Bosch Sensortec retains copyright ownership of the original driver.
The 7Semi library provides a C++ wrapper and additional functionality for Arduino platforms.
- Bosch Sensortec BME690 Sensor API
- https://github.com/boschsensortec/BME690_SensorAPI
7Semi