Is there any way we can run BSEC library outside of the microcontroller ?
Details :
I want to use BSEC library to get VOC readings from BME680.
But maximum flash memory size is 192KB (STM32L073RZ), and when using BSEC the binaries are 271KB.
Can I let's say make simple gas measurements on MCU, then convert the data in the cloud using BSEC ?
Best reply by Inactive Member
Yes, this is possible, with a few limitations. For instance, the sensor should run with a fixed configuration, according to the desired operating mode (ULP or LP). Therefore the ULP+ feature isn't supported anymore.
An Arduino library is included in BSEC's package to show how the sensor should be configured, with the following snippet extracted from bme680_data.h:
/* Macro definitions */#define BSEC_HUMIDITY_OVERSAMPLING UINT8_C(1)/*!< Humidity oversampling rate */#define BSEC_TEMPERATURE_OVERSAMPLING UINT8_C(2)/*!< Temperature oversampling rate */#define BSEC_PRESSURE_OVERSAMPLING UINT8_C(5)/*!< Pressure oversampling rate */#define BSEC_HEATER_TEMP_LP UINT16_C(320)/*!< Low Power mode heater temperature */#define BSEC_HEATING_DURATION_LP UINT16_C(197)/*!< Low Power mode heating duration */#define BSEC_HEATER_TEMP_ULP UINT16_C(400)/*!< Ultra Low Power mode heater temperature */#define BSEC_HEATING_DURATION_ULP UINT16_C(1943)/*!< Ultra Low Power mode heating duration */
Attached is an example project that is based on the original bsec_integration.c sample code, but was edited to use a csv file containing raw sensor data as input, and generating another csv file with BSEC's outputs. It includes:
bme680_remote_BSEC_run.c, bsec_integration_backend.c and bsec_integration_backend.h, the sample code,
datalog.csv, an example of raw sensor log from a BME680 (including the necessary timestamp, raw temperature/pressure/humidity/gas resistance) in a .csv file in a format expected by the sample code above,
bsec_output.csv, an example of output generated by the sample code above when datalog.csv was used as input file.
To run the example above, you will need to add the library headers (bsec_interface.h and bsec_datatypes.h) from your BSEC package, as well as the pre-compiled library for your platform (BSEC v1.4.7.3 was used in this project, therefore it is recommended to use at least this version).
To generate bsec_output.csv, BSECLibrary64.dll was used, and compiled in a COINES environment in Windows 10's CMD: