BME680 Temperature, Humidity, Pressure Sensor Board

  • RM120.00

  • Product Code: BME680
  • Availability: In Stock

The BME680 is an environmental sensor that combines gas, pressure, humidity and temperature sensors. The gas sensor can detect a broad range of gases like volatile organic compounds (VOC). For this reason, the BME680 can be used in indoor air quality control.

 

Specifications:

  • Temperature range: -40 to +85°C
  • Humidity range: 0 to 100% RH
  • Pressure range: 300 to 1100 hPa (equivalent to 0.3 to 1.1 bar)
  • Temperature resolution: 1°C
  • Humidity: Max error: ±3%, Hysteresis error: ±1.5%
  • Pressure: RMS noise: 0.12Pa (equivalent to 1.7cm), Temperature coefficient: ±1.3Pa/K (equivalent to ±10.9cm at 1°C change)

 

Applications:

  • Indoor air quality monitoring and regulation
  • Smart homes
  • IoT
  • Weather forecasting
  • Improving GPS performance
  • Indoor navigation (e.g., detecting floors, elevators)
  • Outdoor navigation
  • Recreational, and sports activities
  • Measuring vertical speed

 

Pinout module:

The BME680 sensor module has six pins as follows:
Vcc: Module power supply (5V)
GND: Ground
SCL: Clock pin (I2C protocol)
SDA: Data pin (I2C protocol)
SDO: Selecting the I2C address
CS: Chip Select (but here, it selects the communication protocol)
You can select the I2C address of the BME680 module between 0x76 and 0x77 by connecting the SDO pin to GND or Vcc, respectively.

                                                                              BME680 Pinout

Interfacing the BME680 Sensor Module with Arduino

                                                                                BME680 wiring

Code:

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BME680.h"

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME680 bme; // I2C
//Adafruit_BME680 bme(BME_CS); // hardware SPI
//Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK);

void setup() {
 Serial.begin(9600);
 while (!Serial);
 Serial.println(F("BME680 test"));

 if (!bme.begin()) {
 Serial.println("Could not find a valid BME680 sensor, check wiring!");
 while (1);
 }

 // Set up oversampling and filter initialization
 bme.setTemperatureOversampling(BME680_OS_8X);
 bme.setHumidityOversampling(BME680_OS_2X);
 bme.setPressureOversampling(BME680_OS_4X);
 bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
 bme.setGasHeater(320, 150); // 320*C for 150 ms
}

void loop() {
 if (! bme.performReading()) {
 Serial.println("Failed to perform reading :(");
 return;
 }
 Serial.print("Temperature = ");
 Serial.print(bme.temperature);
 Serial.println(" *C");

 Serial.print("Pressure = ");
 Serial.print(bme.pressure / 100.0);
 Serial.println(" hPa");

 Serial.print("Humidity = ");
 Serial.print(bme.humidity);
 Serial.println(" %");

 Serial.print("Gas = ");
 Serial.print(bme.gas_resistance / 1000.0);
 Serial.println(" KOhms");

 Serial.print("Approx. Altitude = ");
 Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
 Serial.println(" m");

 Serial.println();
 delay(2000);
}

Write a review

Note: HTML is not translated!
    Bad           Good