Indoor air-quality monitor
Combine the gas channel with humidity and temperature to build a desk or room monitor that flags rising VOC levels from cooking, cleaning products, or poor ventilation.
A Bosch 4-in-1 environmental sensor that measures temperature, humidity, barometric pressure, and gas (VOC) air quality over I2C or SPI.

The BME680 is a digital environmental sensor from Bosch Sensortec that combines four measurements in one package: temperature, relative humidity, barometric pressure, and a gas (VOC) reading for air quality. On this Adafruit breakout the tiny 3.0 x 3.0 mm sensor is paired with an onboard 3.3V regulator and level shifting, so it runs from a 3-5V supply while its logic stays compatible with both 3.3V and 5V microcontrollers.
Humidity is reported across 0-100% RH with roughly ±3% accuracy, pressure across 300-1100 hPa with about ±1 hPa absolute accuracy, and temperature across -40 to +85°C with about ±1.0°C accuracy. The gas channel uses a heated metal-oxide (MOX) element whose resistance shifts in the presence of volatile organic compounds such as alcohols, solvents, and cooking or paint fumes, which lets libraries derive an indoor air-quality index.
The board talks I2C at address 0x77 by default (selectable to 0x76 by pulling the SDO pin), and the same header also exposes a full 4-wire SPI interface via the SCK, SDI/MOSI, SDO/MISO, and CS pins. Bosch supplies the BSEC library for calibrated IAQ output, and Adafruit provides a simpler Arduino library for raw temperature, humidity, pressure, and gas-resistance values.
| Pin | Function | Type |
|---|---|---|
VIN VIN (3-5V) | Power | Power in |
3V3 3V3 (out) | Power | Power out |
GND GND | Power | Power in |
SCK SCK / SCL | I²C SCL · SPI SCK | Bidirectional (GPIO) |
SDO SDO / MISO | SPI MISO · Digital I2C address select | Bidirectional (GPIO) |
SDI SDI / SDA | I²C SDA · SPI MOSI | Bidirectional (GPIO) |
CS CS | SPI chip select · Digital SPI/I2C mode select | Digital input |
Verified from the Tinkered component library · Adafruit (Bosch BME680).
The BME680 connects to any of the microcontrollers supported in Tinkered. Mind the 3.3 V logic level on 3.3 V boards.
This board answers at 0x77 by default, but many Arduino examples and libraries assume 0x76. If begin() fails or returns garbage, initialize with the 0x77 address or move the board to 0x76 by grounding SDO.
The gas sensor's baseline resistance drifts as the heater warms up and stabilizes. Skipping the recommended warm-up (about 30 minutes per session, plus a 48-hour initial burn-in) gives readings that keep climbing and look broken.
The raw output is a gas resistance in ohms, not a concentration. A usable indoor air-quality index requires baseline tracking, which is what Bosch's BSEC library provides. Comparing raw ohms between boards or sessions without a baseline is misleading.
The onboard gas heater and the die itself warm the chip, so the reported temperature can read a degree or two above true ambient, especially at fast sampling rates. Apply a temperature offset or sample less often for accurate room temperature.
The BME680 is the only Bosch part in this family with a gas/VOC channel. Code and libraries written for the BME280 will read temperature, humidity, and pressure but will never expose gas data, and part-number typos lead to the wrong driver.
Combine the gas channel with humidity and temperature to build a desk or room monitor that flags rising VOC levels from cooking, cleaning products, or poor ventilation.
Log barometric pressure, temperature, and humidity trends to track local weather and predict changes, using pressure as a short-term forecast indicator.
Convert the sensor's fine pressure resolution into relative altitude for drones, hiking loggers, or stairwell-counting projects.
Push all four readings to an ESP32 or Raspberry Pi and chart temperature, humidity, pressure, and air quality over time on a web or MQTT dashboard.
Drop the BME680 into a circuit, write firmware, and simulate it in your browser, then deploy to real hardware. All in one editable Tinkered project.