BME680 Sensor Board | Temperature Humidity Pressure Air Quality
Need a larger quantity?
Need bulk pricing?
Get a formal quotation with lead time and volume pricing.
For universities, companies, distributors, and project orders.
BME680 Sensor Board | Temperature Humidity Pressure Air Quality
BME680 Sensor Board - Temperature, Humidity, Pressure, and Air Quality Monitoring for IoT Projects
The BME680 sensor board is a compact environmental sensing module based on the Bosch BME680, combining temperature, relative humidity, barometric pressure, and gas/VOC sensing in one small breakout. It is well suited for indoor air-quality experiments, weather-station prototypes, HVAC monitoring, smart-home dashboards, classroom IoT labs, and portable environmental data loggers.
Compared with basic temperature and humidity modules, the BME680 adds a gas sensor that can be used to estimate indoor air-quality trends when paired with suitable software libraries. The board works naturally with microcontroller platforms such as the ELAB Nano V3, compact MicroPython hosts like the Raspberry Pi Pico W, and breadboard prototypes built around an MB 102 Breadboard Kit. For projects focused specifically on gas detection, it can also complement sensors such as the Waveshare MQ-135 Gas Sensor.
The current OpenELAB listing identifies this board as a CJMCU-680 BME680 sensor board with a pin header included. For exact sensor-level limits, calibration behavior, and measurement modes, refer to the official Bosch BME680 datasheet. In practical designs, use the board with a compatible I2C or SPI host, keep the sensing opening exposed to airflow, and allow warm-up time when evaluating gas and air-quality readings.
Technical Specifications
| Parameter | Value |
|---|---|
| SKU | TB-BME680 |
| Model | CJMCU-680 BME680 sensor board |
| Sensor IC | Bosch BME680 |
| Measured Parameters | Temperature, relative humidity, barometric pressure, gas/VOC trend |
| Digital Interfaces | I2C and SPI supported by BME680 sensor IC |
| Sensor Supply Range | 1.71V-3.6V at sensor IC level; confirm breakout-board supply pins before wiring |
| Temperature Range | -40C to +85C |
| Humidity Range | 0% RH to 100% RH |
| Pressure Range | 300hPa to 1100hPa |
| Gas Sensor | Metal-oxide gas sensor for VOC/air-quality trend estimation |
| Typical I2C Addresses | 0x76 or 0x77, depending on board configuration |
| Current Listing Weight | Approx. 5g |
| Included Accessory | Pin header |
| Software Support | Arduino, CircuitPython, MicroPython, Raspberry Pi Python libraries |
| Typical Applications | IoT air-quality nodes, weather stations, smart-home monitoring, altitude estimation |
Board Layout & Label Guide
- VIN / VCC - Power input for the breakout board. Confirm the exact board labeling and supported voltage before connecting.
- GND - Ground reference shared with the host microcontroller or single-board computer.
- SCL / SCK - I2C clock line, or SPI clock line when the board is used in SPI mode.
- SDA / SDI - I2C data line, or SPI data input depending on the selected communication mode.
- SDO - SPI data output, and often also used to select the I2C address on BME680 breakout boards.
- CS - SPI chip-select pin. Leave or strap according to the breakout-board design when using I2C.
- BME680 Package - Main sensing IC; keep this area exposed to ambient air for better humidity and gas-response behavior.
- Pin Header - The listing includes a pin header for breadboard or soldered integration.
- Airflow Note - Avoid enclosing the sensor tightly beside heat sources, regulators, or high-current devices.
- Logic-Level Note - Use pull-ups and signal levels that match both the breakout and the host controller.
Application Scenarios
1. Arduino Environmental Readout over I2C
This Arduino example uses the Adafruit BME680 library to print temperature, humidity, pressure, and gas-resistance readings to the serial monitor.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME680.h>
Adafruit_BME680 bme;
void setup() {
Serial.begin(115200);
while (!Serial) {}
if (!bme.begin(0x76)) {
Serial.println("BME680 not found. Check wiring and I2C address.");
while (1) delay(10);
}
bme.setTemperatureOversampling(BME680_OS_8X);
bme.setHumidityOversampling(BME680_OS_2X);
bme.setPressureOversampling(BME680_OS_4X);
bme.setGasHeater(320, 150);
}
void loop() {
if (!bme.performReading()) {
Serial.println("Reading failed");
return;
}
Serial.print("Temp C: ");
Serial.println(bme.temperature);
Serial.print("Humidity %: ");
Serial.println(bme.humidity);
Serial.print("Pressure hPa: ");
Serial.println(bme.pressure / 100.0);
Serial.print("Gas KOhms: ");
Serial.println(bme.gas_resistance / 1000.0);
delay(2000);
}
2. Raspberry Pi Python Air-Quality Logger
This Python script records readings to a CSV file on a Raspberry Pi or Linux SBC using the Adafruit CircuitPython BME680 library.
import time
import board
import adafruit_bme680
sensor = adafruit_bme680.Adafruit_BME680_I2C(board.I2C(), address=0x76)
with open("bme680_log.csv", "a", encoding="utf-8") as log:
while True:
line = (
f"{time.time():.0f},"
f"{sensor.temperature:.2f},"
f"{sensor.relative_humidity:.2f},"
f"{sensor.pressure:.2f},"
f"{sensor.gas}\n"
)
log.write(line)
log.flush()
print(line.strip())
time.sleep(60)
3. MicroPython I2C Address Scanner
Before writing a full sensor application, this MicroPython snippet helps confirm whether the BME680 board appears at 0x76 or 0x77.
from machine import Pin, I2C
i2c = I2C(0, scl=Pin(17), sda=Pin(16), freq=400000)
devices = i2c.scan()
print("I2C devices:")
for address in devices:
print(hex(address))
4. Simple Comfort Alert with Arduino
Use the BME680 as a local room-monitoring sensor and trigger an alert LED when humidity rises above a chosen threshold.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME680.h>
Adafruit_BME680 bme;
const int alertLed = 13;
void setup() {
pinMode(alertLed, OUTPUT);
Serial.begin(115200);
if (!bme.begin(0x76)) {
while (1) {}
}
}
void loop() {
if (bme.performReading()) {
digitalWrite(alertLed, bme.humidity > 70.0 ? HIGH : LOW);
Serial.println(bme.humidity);
}
delay(2000);
}
5. Altitude Estimation from Pressure
This Arduino example calculates approximate altitude from pressure, useful for basic weather-station and indoor floor-change experiments.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME680.h>
Adafruit_BME680 bme;
const float seaLevelPressure = 1013.25;
void setup() {
Serial.begin(115200);
if (!bme.begin(0x76)) {
while (1) {}
}
}
void loop() {
if (bme.performReading()) {
float altitude = bme.readAltitude(seaLevelPressure);
Serial.print("Approx altitude m: ");
Serial.println(altitude);
}
delay(3000);
}
6. MQTT Environmental Node Concept
For IoT dashboards, the BME680 can feed temperature, humidity, pressure, and gas data to an MQTT broker from a Python-capable host.
import json
import time
import board
import adafruit_bme680
import paho.mqtt.client as mqtt
sensor = adafruit_bme680.Adafruit_BME680_I2C(board.I2C(), address=0x76)
client = mqtt.Client()
client.connect("192.168.1.10", 1883, 60)
while True:
payload = {
"temperature": round(sensor.temperature, 2),
"humidity": round(sensor.relative_humidity, 2),
"pressure": round(sensor.pressure, 2),
"gas": sensor.gas,
}
client.publish("lab/bme680", json.dumps(payload))
time.sleep(30)
Packing List
- 1 x BME680 Sensor Board
- 1 x Pin Header
FAQ
Q: What does TB-BME680 measure?
A: It measures temperature, relative humidity, barometric pressure, and gas/VOC trends for environmental monitoring projects.
Q: Is the gas reading the same as a calibrated CO2 sensor?
A: No. The BME680 gas sensor is useful for VOC and air-quality trend estimation, but it is not a direct calibrated CO2 sensor.
Q: Which interface should I use?
A: I2C is usually the easiest option for Arduino, Raspberry Pi, and Pico projects, while SPI is useful when you need a dedicated bus or higher integration control.
Q: What I2C address should I try first?
A: Try 0x76 first, then 0x77 if the sensor is not detected. The actual address depends on the breakout configuration.
Q: Can I use it with a 5V Arduino?
A: Check the exact breakout-board power and logic-level design first. The BME680 sensor IC itself is a low-voltage device, so level compatibility matters.
Q: Why do gas readings change slowly after power-up?
A: Gas sensing requires heater operation and stabilization time, so readings often need warm-up and baseline tracking before they become meaningful.
Q: Can this board estimate altitude?
A: Yes. Altitude can be estimated from barometric pressure when you provide an appropriate sea-level pressure reference.
Q: What should I check if the board is not detected?
A: Verify VCC, GND, SDA, SCL, pull-ups, I2C address, library installation, and whether the host GPIO voltage is compatible with the breakout.
1. General Shipping Information
- We provide reliable shipping services with a tracking number for each order.
- Shipping addresses must be entered in English and should not contain special symbols, so that the courier system can recognize your location correctly.
- Please make sure your shipping address is accurate before placing your order. We ship strictly according to the address provided at checkout.
- In-stock orders are usually dispatched within 1 business day after order confirmation.
- Estimated delivery times refer to the period after dispatch and do not include order processing time, weekends, public holidays, customs inspection, or force majeure delays.
- If you need to cancel or modify your order, please contact us before the order is marked as “Shipped”. Once shipped, the order cannot be canceled or changed.
🚀 Need Faster Shipping?
If you require expedited shipping, please contact our customer support team at info@upenelab.com for a customized quote based on your destination.
2. Shipping Rates & Options
Shipping rates are calculated based on order value, destination, and available shipping methods. The final available options will be displayed at checkout.
2.1 Germany Domestic Shipping
| Shipping Method | Order Value | Cost | Est. Delivery |
|---|---|---|---|
| Deutsche Post | €0.00 - €50.00 | €4.95 | 2-4 Business Days |
| Deutsche Post | Over €50.00 | Free | 2-4 Business Days |
|
DHL Paket (Faster Delivery) |
€0.00 - €50.00 | €6.95 | 1-3 Business Days |
|
DHL Paket (Faster Delivery) |
€50.00 - €100.00 | €2.00 | 1-3 Business Days |
|
DHL Paket (Faster Delivery) |
Over €100.00 | Free | 1-3 Business Days |
2.2 Selected EU Countries / Regions
Available EU shipping destinations are shown at checkout based on your shipping address. For orders shipped to selected EU countries or regions outside Germany, we use FedEx Regional Economy.
| Shipping Method | Order Value | Cost | Est. Delivery |
|---|---|---|---|
| FedEx Regional Economy | €0.00 - €100.00 | €7.95 | 3-5 Business Days |
| FedEx Regional Economy | Over €100.00 | Free | 3-5 Business Days |
EU orders may be fulfilled from our Munich warehouse or, when applicable, from our Shenzhen warehouse depending on inventory availability. For EU member states, OpenELAB covers applicable import duties and taxes under DDP service where required.
2.3 United States
| Region | Shipping Method | Order Value | Cost | Est. Delivery |
|---|---|---|---|---|
|
Continental U.S. (50 States) |
USPS Ground Advantage | €0.00 - €45.00 | €4.95 | 3-7 Business Days |
| USPS Ground Advantage | Over €45.00 | Free | 3-7 Business Days | |
| USPS Priority Mail | €0.00 - €45.00 | €16.95 | 1-4 Business Days | |
| USPS Priority Mail | Over €45.00 | €14.95 | 1-4 Business Days | |
|
Non-Continental U.S. (AK, HI, PR, etc.) |
USPS Ground Advantage | €0.00 - €60.00 | €6.95 | 5-9 Business Days |
| USPS Ground Advantage | Over €60.00 | Free | 5-9 Business Days |
Non-Continental U.S. regions include Alaska, American Samoa, Guam, Hawaii, the Marshall Islands, the Northern Mariana Islands, Palau, Puerto Rico, the U.S. Virgin Islands, and U.S. Armed Forces addresses.
2.4 International Destinations Outside the EU
For selected international destinations outside the EU, including Switzerland, the United Kingdom, and Norway, shipping rates are as follows:
| Order Amount | Shipping Cost |
|---|---|
| €0.00 - €300.00 | €19.95 |
| Over €300.00 | Free |
For non-EU destinations, import duties, taxes, and customs fees may be charged by the destination country and are the responsibility of the recipient.
3. Warehouses & Fulfillment
Our products may be stored in our Munich, Arlington, and Shenzhen warehouses. The actual shipping warehouse depends on product availability and destination.
3.1 Munich Warehouse
For products stored in our Munich warehouse, we use Deutsche Post or DHL Paket for domestic deliveries within Germany. For selected EU destinations outside Germany, we use FedEx Regional Economy.
3.2 Arlington Warehouse
For products stored in our Arlington warehouse, we use USPS or UPS for deliveries within the United States.
3.3 Shenzhen Warehouse
For pre-order items or products fulfilled directly from our Shenzhen warehouse, we arrange reliable international shipping based on destination and inventory status. For EU member states, OpenELAB covers applicable import duties and taxes under DDP service where required.
4. Inventory, Pre-orders & Split Shipments
- Inventory Status: Please check the product page for real-time stock information. If an item is out of stock in our local warehouses, it may be marked as “Pre-order”.
- Pre-order Fulfillment: Pre-order items may be shipped directly from Shenzhen or restocked to a local warehouse first before final delivery.
- Split Shipments: If your order contains both in-stock and pre-order items, we may ship them separately. No additional shipping fee will be charged for split shipments caused by our fulfillment arrangement.
5. Customs, Taxes & Delivery Issues
5.1 Customs and Taxes
For EU Member States:
Whether shipped from Germany or China, OpenELAB covers applicable import duties and taxes under DDP service where required. Customers in EU member states should not be charged additional import duties or VAT upon delivery.
For destinations outside the European Union, such as Switzerland, Norway, and the United Kingdom, import duties, taxes, and customs fees may be charged by local authorities upon delivery. These fees are the responsibility of the recipient.
5.2 Damaged, Delayed, or Lost Parcels
Please inspect your parcel upon delivery where possible. If you notice visible damage, please report it to the courier and contact us as soon as possible. This does not affect your statutory consumer rights.
If your parcel is delayed, lost, returned to sender, or the tracking information has not updated for an unusual period of time, please contact us at info@upenelab.com. We will assist you in checking the shipment status with the courier.
5.3 Incorrect Address or Failed Delivery
If a parcel cannot be delivered due to an incorrect or incomplete address provided by the customer, refusal of delivery, or failure to collect the parcel, additional shipping or return costs may apply.
6. VAT
For orders within the EU, VAT is collected at checkout according to the applicable destination rules. No additional VAT should be collected upon delivery for EU member state orders covered under our DDP shipping arrangement.




