BME680 Digital Temperature, Humidity, And Pressure Sensor CJMCU-680 High-Altitude Module Development Board

The BME680 is a "4-in-1" sensor that measures temperature, humidity, barometric pressure, and volatile organic compounds (VOC) gas. It is a favorite for weather stations and air quality monitors
R229.90  Inc VAT
The BME680 is a compact digital sensor that measures gas, humidity, pressure, and temperature, all in one device. It features a small metal-covered LGA package measuring only 3.0x3.0 mm and has a maximum height of 1.00 mm.
 
Its compact dimensions and minimal energy usage allow for integration into devices powered by batteries or frequency coupling, like smartphones or wearable technology.
Common uses include: monitoring indoor air quality, managing home automation systems, connecting devices through the Internet of Things, predicting weather conditions, improving GPS accuracy (such as reducing time to first fix, enhancing dead reckoning, and detecting slopes), navigating indoors (like detecting floor changes and elevators), outdoor navigation, recreational activities, and sports applications, as well as indicating vertical speed (ascend/descent rate).
 
Devices intended for use include mobile phones, tablet PCs, GPS units, wearable technology, home weather monitoring systems, smartwatches, navigation equipment, gaming devices like flying toys, and IoT gadgets.
 
Operating voltage ranges from 1.7V to 3.6V. The temperature range for operation is from -40°C to +85°C. The communication interfaces include I2C (up to 3.4 MHz) and SPI (3 and 4 wires, up to 10 MHz). Humidity, pressure, and gas sensors can be individually activated or deactivated. The current draw at 1 Hz for humidity and temperature is 2.1 mA, while for pressure and temperature it is 3.1 mA, and for humidity, pressure, and temperature combined, it is 3.7 mA.
 
Parameters for the gas sensor include a response time of less than 1 second for new sensors, with a response range of 33-63%. It operates in ultra-low power mode consuming less than 0.1 mA, and provides direct output for indoor air quality (IAQ) index data. The humidity sensor has a response time of 8 seconds with an accuracy tolerance of t396r and a hysteresis of ±1.5% relative humidity.
 
The pin definitions are as follows:
 
  • VCC is the positive power supply
  • GND is the ground
  • SCL is the I2C/SPI clock
  • SDA is the I2C/SPI data
  • SDO is the SPI data
  • CS is the SPI slave enable.

What's in the box?

1 x BME680 sensor
1 x 6 pin header

Resources

Since you are likely using a Raspberry Pi 5, the process is now streamlined through virtual environments and the CircuitPython/Blinka library.

1. Hardware Connections (I2C)

The BME680 supports both I2C and SPI, but I2C is the simplest way to wire it.

BME680 PinRaspberry Pi PinPhysical Pin #
VIN / VCC3.3V PowerPin 1
GNDGroundPin 6
SCLI2C Clock (GPIO 3)Pin 5
SDAI2C Data (GPIO 2)Pin 3

Address Tip: By default, the I2C address is usually 0x77. If your module has an "SDO" pin and you connect it to Ground, the address changes to 0x76.

2. Enable I2C


  1. Run sudo raspi-config.

  2. Go to Interface Options > I2C and select Yes.

  3. Reboot your Pi.

  4. Verify the sensor is seen: sudo i2cdetect -y 1. You should see 77 or 76 in the grid.

3. Install the Libraries (2026 Method)

On Raspberry Pi OS (Bookworm and later), you must use a virtual environment.

Bash
mkdir bme_project && cd bme_project
python3 -m venv .venv
source .venv/bin/activate

# Install the Blinka compatibility layer and the BME680 library
pip3 install adafruit-blinka adafruit-circuitpython-bme680
4. Python Example Code

This script will read all four sensors.

Python
import time
import board
import adafruit_bme680

# Create sensor object using the default I2C bus
i2c = board.I2C()
bme680 = adafruit_bme680.Adafruit_BME680_I2C(i2c)

# Change this to match your local sea-level pressure (hPa) for accurate altitude
bme680.sea_level_pressure = 1013.25

print("BME680 Warming up (Gas sensor needs ~30 mins for total stability)...")

try:
    while True:
        print(f"\nTemperature: {bme680.temperature:.1f} °C")
        print(f"Gas Resistance: {bme680.gas} ohms")
        print(f"Humidity: {bme680.relative_humidity:.1f} %")
        print(f"Pressure: {bme680.pressure:.2f} hPa")
        print(f"Altitude: {bme680.altitude:.2f} meters")
        
        time.sleep(2)
except KeyboardInterrupt:
    print("\nProgram stopped.")
Crucial Tips for BME680

  • The "Burn-In" Period: When you first receive the sensor, Bosch recommends running it for 48 hours continuously to stabilize the gas sensor. After that, run it for 30 minutes before trusting any "Gas Resistance" values for a specific session.
  • Self-Heating: Because the BME680 has an internal heater for the gas sensor, the temperature reading can be 1.5°C to 3°C higher than the actual room temperature. In your code, you should subtract an offset (e.g., bme680.temperature - 2.5) to get an accurate reading.
  • Gas vs. CO2: Remember that the BME680 measures VOCs (Total Volatile Organic Compounds), not specific CO2. If you need a "True CO2" reading, you should pair this with the SCD40/41 we discussed earlier

  • Availability: Out of Stock
  • Model: BME680 sensor
  • Brand: Generic2