← All parts

BME680 Gas/Env Sensor

BME680

Boschsensor environment

The Bosch BME680 is a compact, low-power 4-in-1 sensor that measures gas, humidity, pressure, and temperature. It's ideal for indoor air quality monitoring and IoT devices, offering digital I2C and SPI interfaces.

In stock

Specifications

25
Package
LGA mm
Package Dimensions
3.0 x 3.0 x 0.93
Interface
I2C, SPI
I2c Clock Speed
3.4 MHz
Spi Clock Speed
10 MHz
Operating Voltage Vdd
1.71 V
Operating Voltage Vdd
3.6 V
Operating Voltage Vddio
1.2 V
Operating Voltage Vddio
3.6 V
Current Consumption Sleep
0.15 µA
Current Consumption Humidity Temp
2.1 µA
Current Consumption Pressure Temp
3.1 µA
Current Consumption Gas Heater
9 mA
Current Consumption Gas Peak
15 mA
Operating Temperature Range
-40 °C
Operating Temperature Range
85 °C
Operating Humidity Range
0 % r.H.
Operating Humidity Range
100 % r.H.
Operating Pressure Range
300 hPa
Operating Pressure Range
1100 hPa
Humidity Accuracy
±3 % r.H.
Pressure Accuracy
±0.6 hPa
Temperature Accuracy
±0.5 °C
Gas Sensor Response Time
0.75 s
Iaq Range
0-500

Pinout

11
PinNameFunctionsNotes
VDD
POWER
Main supply voltage
VDDIO
POWER
Interface voltage
SDI/SDO
SPII2C
SPI data input/output, I2C data
SCK
SPII2C
SPI clock, I2C clock
CS
SPI
SPI chip select
SCL
I2C
I2C clock
SDA
I2C
I2C data
SDI
SPI
SPI data input
SDO
SPI
SPI data output
INT
GPIO
Interrupt output
GND
GND
Ground

Interactive pinout

Highlight:
BME680

Click a pin to copy its name · tap a tag above to spotlight a bus.

Logic level & voltage

VDD is 1.71-3.6 V and VDDIO 1.2-3.6 V (per the datasheet specs); a 3.3 V part on I2C/SPI. The integrated gas heater draws up to ~15 mA in bursts.

Typical uses

  • Indoor air-quality (VOC) sensing
  • Combined temperature/humidity/pressure/gas logging
  • Smart-home environmental nodes

Wiring notes & gotchas

  • Allow gas-heater warm-up and budget for current spikes on the supply.
  • Level-shift / use a 3.3 V module with 5 V MCUs.
  • Provide I2C pull-ups; set the address pin for 0x76/0x77.

Commonly used with

3

Starter code

Community starter examples — minimal, unofficial, and provided to get you wiring fast. Verify against the manufacturer datasheet before relying on them.

Arduino (C++)

Arduino library: Adafruit BME680 Library (+ Adafruit Unified Sensor)

arduino
// BME680 temp/humidity/pressure/gas (I2C) — community starter example
#include <Wire.h>
#include <Adafruit_BME680.h>

Adafruit_BME680 bme;  // I2C

void setup() {
  Serial.begin(115200);
  Wire.begin();
  if (!bme.begin()) { Serial.println("BME680 not found"); while (1) delay(10); }
  bme.setGasHeater(320, 150);   // 320 C for 150 ms
}

void loop() {
  if (bme.performReading()) {
    Serial.print("T="); Serial.print(bme.temperature); Serial.print(" C  RH=");
    Serial.print(bme.humidity); Serial.print(" %  Gas=");
    Serial.print(bme.gas_resistance / 1000.0); Serial.println(" kOhm");
  }
  delay(2000);
}

MicroPython

MicroPython library: bme680 (robert-hh/BME680-Micropython)

python
# BME680 (ESP32) — community starter example
# lib: robert-hh/BME680-Micropython (bme680.py on the board)
from machine import Pin, I2C
import bme680, time

i2c = I2C(0, scl=Pin(22), sda=Pin(21))
sensor = bme680.BME680_I2C(i2c)

while True:
    print(sensor.temperature, sensor.humidity, sensor.pressure, sensor.gas)
    time.sleep(2)

Wiring

PinArduino Uno R3ESP32 DevKitC (WROOM-32)Notes
VCC+5V3V3Breakout 3-5 V safe
GNDGNDGND
SCLA5/SCLGPIO22I2C clock
SDAA4/SDAGPIO21I2C data

Related parts

6