All Projects → alexh-name → bsec_bme680_linux

alexh-name / bsec_bme680_linux

Licence: other
Read the BME680 sensor with the BSEC library on Linux (e.g. Raspberry Pi)

Programming Languages

c
50402 projects - #5 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to bsec bme680 linux

BME680
Arduino Library to access the Bosch BME680 - temperature, pressure, humidity and gas sensor
Stars: ✭ 30 (-61.54%)
Mutual labels:  sensor, bosch, iaq, bme680
ha-iaquk
Indoor Air Quality Sensor Component for Home Assistant
Stars: ✭ 57 (-26.92%)
Mutual labels:  sensor, air-quality
IoTHAT
Turta IoT HAT Source, Reference and Manual.
Stars: ✭ 23 (-70.51%)
Mutual labels:  sensor, bme680
Volumetriccapture
A multi-sensor capture system for free viewpoint video.
Stars: ✭ 243 (+211.54%)
Mutual labels:  sensor, calibration
air-quality
Air quality sensing and monitoring
Stars: ✭ 17 (-78.21%)
Mutual labels:  air, sensor
Catena-Sketches
Top-level Arduino sketches for the MCCI Catena family of IoT LPWA Devices
Stars: ✭ 12 (-84.62%)
Mutual labels:  sensor, bme680
ropenaq
⛔ ARCHIVED ⛔ Accesses Air Quality Data from the Open Data Platform OpenAQ
Stars: ✭ 69 (-11.54%)
Mutual labels:  air, air-quality
openair
国家空气质量数据获取库,包含完整的API,不再信任地方检测站
Stars: ✭ 85 (+8.97%)
Mutual labels:  air, air-quality
EnviroMonitorStation
Arduino compatible software for ESP8266 based environmental monitoring station. Includes temperature, humidity, barometric pressure and PM2.5, PM10 dust monitoring
Stars: ✭ 71 (-8.97%)
Mutual labels:  air, sensor
DustViewerSharp
UART-USB based dust sensor viewer(and also logging) program by C#
Stars: ✭ 38 (-51.28%)
Mutual labels:  air, air-quality
elixir bme680
An Elixir library to interface with the BME680 (and BME280) environmental sensor
Stars: ✭ 19 (-75.64%)
Mutual labels:  sensor, air-quality
rdefra
rdefra: Interact with the UK AIR Pollution Database from DEFRA
Stars: ✭ 14 (-82.05%)
Mutual labels:  air-quality
sensor.rpi power
A Custom component for Home-Assistant that checks if your Raspberry Pi power supply is giving enough voltage from the kernel.
Stars: ✭ 105 (+34.62%)
Mutual labels:  sensor
nodejs
Node.js in-process collectors for Instana
Stars: ✭ 66 (-15.38%)
Mutual labels:  sensor
SAMD TimerInterrupt
This library enables you to use Interrupt from Hardware Timers on an SAMD-based board. These SAMD Hardware Timers, using Interrupt, still work even if other functions are blocking. Moreover, they are much more precise (certainly depending on clock frequency accuracy) than other software timers using millis() or micros(). That's mandatory if you …
Stars: ✭ 28 (-64.1%)
Mutual labels:  accuracy
SmogWatch
watchOS app for checking air pollution levels, created for my blog post series
Stars: ✭ 34 (-56.41%)
Mutual labels:  air-quality
vignetting calib
No description or website provided.
Stars: ✭ 41 (-47.44%)
Mutual labels:  calibration
TimerInterrupt
This library enables you to use Interrupt from Hardware Timers on an Arduino, such as Nano, UNO, Mega, etc. It now supports 16 ISR-based timers, while consuming only 1 hardware Timer. Timers' interval is very long (ulong millisecs). The most important feature is they're ISR-based timers. Therefore, their executions are not blocked by bad-behavin…
Stars: ✭ 76 (-2.56%)
Mutual labels:  accuracy
Advanced-PRTG-Sensors
Collection of my Advanced PRTG Sensors
Stars: ✭ 60 (-23.08%)
Mutual labels:  sensor
ESPSense
Use ESPHome to emulate TP-Link Kasa HS110 plugs, and report energy usage to your Sense Home Energy Monitor (or anything else on your network!) via ESP8266/ESP32 devices
Stars: ✭ 36 (-53.85%)
Mutual labels:  sensor

bsec_bme680_linux

Read the BME680 sensor with the BSEC library on Linux (e.g. Raspberry Pi)

Intro

Working example of fully using the BME680 sensor on Linux (e.g. Raspberry Pi) with the precompiled BSEC library, which allows to read calibrated environment values including an actual Indoor Air Quality (IAQ) score.

It makes use of Bosch's provided driver and can be configured in terms of it. Readings will be directly output to stdout in a loop.

Prerequisites

Download the BSEC software package from Bosch and put it into ./src, then unpack.

Configure and Compile

Optionally make changes to make.config.

Depending on how your sensor is embedded it might be surrounded by other components giving off heat. Use an offset in °C in bsec_bme680.c to compensate. The default is 5 °C:

#define temp_offset (5.0f)

To compile: ./make.sh

Usage

Output will be similar to this:

$ ./bsec_bme680
2017-12-27 18:47:21,[IAQ (1)]: 33.96,[T degC]: 19.61,[H %rH]: 46.41,[P hPa]: 983.39,[G Ohms]: 540924.00,[S]: 0
2017-12-27 18:47:24,[IAQ (1)]: 45.88,[T degC]: 19.61,[H %rH]: 46.41,[P hPa]: 983.41,[G Ohms]: 535321.00,[S]: 0
2017-12-27 18:47:26,[IAQ (1)]: 40.65,[T degC]: 19.60,[H %rH]: 46.45,[P hPa]: 983.39,[G Ohms]: 537893.00,[S]: 0
2017-12-27 18:47:29,[IAQ (1)]: 30.97,[T degC]: 19.60,[H %rH]: 46.42,[P hPa]: 983.41,[G Ohms]: 542672.00,[S]: 0
  • IAQ (n) - Accuracy of the IAQ score from 0 (low) to 3 (high).
  • S: n - Return value of the BSEC library

It can easily be modified in the output_ready function.

The BSEC library is supposed to create an internal state of calibration with increasing accuracy over time. Each 10.000 samples it will save the internal calibration state to ./bsec_iaq.state (or wherever you specify the config directory to be) so it can pick up where it was after interruption.

Further

You can find a growing list of tools to further use and visualize the data here.

Troubleshooting

Raspberry Pi

Make sure you enabled I2C functionality first.

bsec_bme680 just quits without a message

Your bsec_iaq.state file might be corrupt or incompatible after an update of the BSEC library. Try (re)moving it.

remote I/O error

If you get user_i2c_write: Remote I/O error on run time, check the I2C address used by your version of the sensor:

sudo i2cdetect -y 1

If you find a device on 77 but not on 76, then your sensor is configured to use its secondary I2C address. In this case, change this at the beginning of bsec_bme680.c:

int i2c_address = BME680_I2C_ADDR_PRIMARY;

to

int i2c_address = BME680_I2C_ADDR_SECONDARY;

and recompile (./make.sh).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].