BME680 is as combined digital gas, humidity, pressure and temperature sensor based on proven sensing principles.
API Link: https://github.com/BoschSensortec/BME680_driver
BSEC Link: https://www.bosch-sensortec.com/bst/products/all_products/bme680
Sensor data type
Gas sensor data is gas sensor resistance.
Humidity sensor data is in type of percentage (10%-90%, in 0°C-65°C).
Pressure sensor data is in type of hPa (300hPa-1100hPa, in 0°C-65°C).
Temperature sensor data is in type of °C (-40°C-85°C).
Use function bme680_get_sensor_data in API to get sensor data.
Use BSEC software Library, put gas/humidity/pressure/temperature sensor data as inputs into BSEC, you can also get IAQ(Indoor Air Quality) from outputs.
Measurement preiod
The BME680 measurement period consists of a temperature, pressure and humidity measurement with selectable oversampling. Moreover, it contains a heating phase for the gas sensor hot plate as well as a measurement of the gas sensor resistance.
After the measurement period, the pressure and temperature data can be passed through an optional IIR filter, which removes short-term fluctuations in pressure (e.g. caused by slamming a door). For humidity and gas, such a filter is not needed and has not been implemented
Gas resistance sensitivity
The sensitivity of BME680 to certain target gas is gas_resistance/gas_resistance_base. The sensitivity equaling to 1 means BME680 is not sensitivity in this concentration of the target gas, while the less value in sensitivity, the more sensitive BME680 to the target gas.
Data Interrupt
There is new data interrupt in BME680, below table shows how to enable this feature.
Pressure sensor drift
Used to represent errors in measured values. Basically, two drifts will appear on the pressure part in BME680: one is solder drifts and the other is long term drift.
Pressure sensor offset temperature coefficient (TCO)
TCO is the change in the pressure signal introduced by a change of the temperature.
For pressure sensor, TCO is ±1.5 Pa/K, equiv. to ±12.6 cm at 1 °C temperature change, which means pressure sensor data will change within ±1.5 Pa with 1 °C temperature change at constant pressure.
Accuracy of temperature/pressure/humidity
This feature is used to represent how much accuracy can be achieved on certain condition.
Humidity sensor:
±3 % relative humidity, on condition: 20-80 %r.H., 25°C, including hysteresis
Pressure sensor:
0.12 hPa, on condition: 25°C-40°C, 700-1100hPa, at constat humidity
Temperature Sensor:
±1°C, on condition: 25°C
±0.5°C, on condition: 0…65°C
OSR / Oversampling of humidity/pressure/temperature
There are several oversampling options for different sensors. It is possible to reduce noise, but the power consumption will be higher.
Humidity sensor OSR
As for how to set osrs_h<2:0>, b000->skip humidity data/no humidity, b001->oversamplingx1, b010->oversamplingx2, b011->oversamplingx4, b100->oversamplingx8, b101/Others->oversamplingx16.
Pressure sensor OSR
As for how to set osrs_p<4:2>, b000->skip humidity data/no humidity, b001->oversamplingx1, b010->oversamplingx2, b011->oversamplingx4, b100->oversamplingx8, b101/Others->oversamplingx16.
Temperature sensor OSR
As for how to set osrs_t<7:5>, b000->skip humidity data/no humidity, b001->oversamplingx1, b010->oversamplingx2, b011->oversamplingx4, b100->oversamplingx8, b101/Others->oversamplingx16.
You can use function bme680_set_sensor_settings in API to set OSR of any sensor.
Signal filter
The environmental pressure is subject to many short-term changes, caused e.g. by slamming of a door or window, or wind blowing into the sensor. To suppress these disturbances in the output data without causing additional interface traffic and processor work load, the BME680 features an internal IIR filter. Via setting filter coefficient(c), it effectively reduces the bandwidth of the temperature and pressure output signals and increases the resolution of the pressure and temperature output data to 20 bit(Pressure and Temperature OSR must be non-zero). When c is bigger, response time will be longer.
As for how to set filter<4:2>, b000->filter coefficient 0, b001-> filter coefficient 1, b010-> filter coefficient 3, b011-> filter coefficient 7, b100-> filter coefficient 15, b101-> filter coefficient 31, b110-> filter coefficient 63, b111-> filter coefficient 127.
You can use function bme680_set_sensor_settings in API to set filter.