← 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| Pin | Name | Functions | Notes |
|---|---|---|---|
| — | 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
3Starter 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
| Pin | Arduino Uno R3 | ESP32 DevKitC (WROOM-32) | Notes |
|---|---|---|---|
| VCC | +5V | 3V3 | Breakout 3-5 V safe |
| GND | GND | GND | |
| SCL | A5/SCL | GPIO22 | I2C clock |
| SDA | A4/SDA | GPIO21 | I2C data |