11-30-2021 02:09 PM
Hello,
I have purchased a BME688 breakout board and woudl like to run an Indoor Air Quality Example on Arduino ESP32. I do see different download options for BME688 Software. There are mentioned multiple times "Arduino Example" for BSEC 2.x Integration guide AND API integration Example.
Another example "basic_config_state" is in BSEC 2.x Software package as "bsec".
I tried with bsec2 example "basic_config_state" on ESP32 with "bsec_serialized_configurations_iaq" and removed all EEPROM part which gives me an output like the following. It has values without IAQ until Gas_index = 9 appears. Please note, there is a time gap of 1:55 minute between iaq reading and new measurement.
The example gives some measurements and then has a pause of ~2 minutes. Is that expected behavior?
14:05:55.097 -> BSEC outputs:
14:05:55.097 -> timestamp = 161860
14:05:55.097 -> temperature = 27.94
14:05:55.097 -> pressure = 97182.41
14:05:55.097 -> humidity = 46.24
14:05:55.097 -> gas resistance = 114746.75
14:05:55.097 -> gas index = 0.00
14:05:55.374 -> BSEC outputs:
14:05:55.374 -> timestamp = 162140
14:05:55.374 -> temperature = 28.18
14:05:55.374 -> pressure = 97184.16
14:05:55.374 -> humidity = 46.17
14:05:55.374 -> gas resistance = 9183857.00
14:05:55.374 -> gas index = 1.00
14:05:56.752 -> BSEC outputs:
14:05:56.752 -> timestamp = 163505
14:05:56.752 -> temperature = 28.65
14:05:56.752 -> pressure = 97181.55
14:05:56.752 -> humidity = 45.17
14:05:56.752 -> gas resistance = 8763841.00
14:05:56.752 -> gas index = 2.00
14:06:00.902 -> BSEC outputs:
14:06:00.902 -> timestamp = 167670
14:06:00.902 -> temperature = 29.60
14:06:00.902 -> pressure = 97185.88
14:06:00.902 -> humidity = 41.80
14:06:00.902 -> gas resistance = 7777830.50
14:06:00.902 -> gas index = 3.00
14:06:01.620 -> BSEC outputs:
14:06:01.620 -> timestamp = 168370
14:06:01.620 -> temperature = 30.34
14:06:01.620 -> pressure = 97184.32
14:06:01.620 -> humidity = 41.39
14:06:01.620 -> gas resistance = 603951.62
14:06:01.620 -> gas index = 4.00
14:06:02.312 -> BSEC outputs:
14:06:02.312 -> timestamp = 169070
14:06:02.312 -> temperature = 30.73
14:06:02.312 -> pressure = 97186.54
14:06:02.312 -> humidity = 40.90
14:06:02.312 -> gas resistance = 579349.38
14:06:02.312 -> gas index = 5.00
14:06:03.023 -> BSEC outputs:
14:06:03.023 -> timestamp = 169770
14:06:03.023 -> temperature = 30.99
14:06:03.023 -> pressure = 97192.75
14:06:03.023 -> humidity = 40.49
14:06:03.023 -> gas resistance = 556673.00
14:06:03.023 -> gas index = 6.00
14:06:03.732 -> BSEC outputs:
14:06:03.732 -> timestamp = 170470
14:06:03.732 -> temperature = 31.53
14:06:03.732 -> pressure = 97188.94
14:06:03.732 -> humidity = 39.87
14:06:03.732 -> gas resistance = 137931.03
14:06:03.732 -> gas index = 7.00
14:06:04.375 -> BSEC outputs:
14:06:04.375 -> timestamp = 171135
14:06:04.375 -> temperature = 31.89
14:06:04.375 -> pressure = 97187.52
14:06:04.375 -> humidity = 39.34
14:06:04.375 -> gas resistance = 177716.08
14:06:04.375 -> gas index = 8.00
14:06:05.104 -> BSEC outputs:
14:06:05.104 -> timestamp = 171835
14:06:05.104 -> iaq = 25.00
14:06:05.104 -> iaq accuracy = 0
14:06:05.104 -> temperature = 32.15
14:06:05.104 -> pressure = 97189.34
14:06:05.104 -> humidity = 38.76
14:06:05.104 -> gas resistance = 214765.09
14:06:05.104 -> compensated temperature = 29.15
14:06:05.104 -> compensated humidity = 49.76
14:06:05.104 -> gas estimate 1 = 0.25
14:06:05.104 -> gas estimate 2 = 0.25
14:06:05.104 -> gas estimate 3 = 0.25
14:06:05.104 -> gas estimate 4 = 0.25
14:06:05.104 -> gas index = 9.00
Attached is my arduino exmaple code.
Kind Regards
Matthias
12-07-2021 02:32 PM
Thanks a lot, let me try if that solves my issues
12-07-2021 06:02 PM
No problem, let me know how you get on or if you have any other issues 🙂
12-08-2021 12:59 PM
Hello,
Again, thank you very much for your help! I ran the code with your suggested sensor type:
bsec_virtual_sensor_t sensorList[] = {
BSEC_OUTPUT_RAW_TEMPERATURE,
BSEC_OUTPUT_RAW_HUMIDITY,
BSEC_OUTPUT_RAW_GAS,
BSEC_OUTPUT_IAQ,
BSEC_OUTPUT_STATIC_IAQ,
BSEC_OUTPUT_CO2_EQUIVALENT,
BSEC_OUTPUT_BREATH_VOC_EQUIVALENT,
BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE,
BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY
};
Unfortunately, i get an error after the first data coming in. This is as long as BSEC_OUTPUT_RAW_GAS_INDEX is not part of the sensor. I am assuming, that it might have to do with my sensor config, it is still the original one called bsec_serialized_* .
12:55:52.317 -> BSEC outputs:
12:55:52.317 -> timestamp = 1050
12:55:52.317 -> temperature = 33.53
12:55:52.317 -> pressure = 97709.91
12:55:52.317 -> humidity = 21.84
12:55:52.317 -> gas resistance = 301176.47
12:55:52.317 ->
12:55:52.317 -> no bsec run
12:55:52.317 -> BSEC error code : -4
Did that happen to you as well?
BTW: Meanwhile, the BSEC2 github repo was filled with content. https://github.com/BoschSensortec/Bosch-BSEC2-Library
There are multiple examples now, i remember that this repo was empty a while ago. Anyway, i get an error while comilation which is described in there:
https://github.com/BoschSensortec/Bosch-BSEC2-Library/issues/1
Kind Regards!
12-08-2021 02:15 PM - edited 12-08-2021 02:20 PM
Hi,
No I don't have any error returned by the BSES instance. When I look at bsec_datatypes.h in the BSEC 2 library your error is:
BSEC_E_DOSTEPS_TSINTRADIFFOUTOFRANGE = -4, /*!< Past timestamps passed to bsec_do_steps() */
That looks like it comes from the Bsec::processData() function in the Arduino API which is called by bsecInst.run(). It shouldn't be possible as bsecInst.run() always updates the timestamps passed to the BSEC 2 library. Maybe there's an issue with calling millis() on your device but doubt it. You could try debugging by invoking millis() every time you call bsecInst.run() and make sure it's incrementing. Other than that I can't really help much unless you upload your ino file so we can see what your current use of the API is like.
Thankyou very much for highlight that they've filled the the BSEC2 arduino repo! Shame they didn't test the examples. Also are you using that Arduino library from github? That seems to be different to the version I downloaded from the bosch website. It might also have bugs in it?
Cheers,
12-28-2021 08:08 AM
Hello hugehead,
Could you provide your source file you used, then we check it.
Thank for your kindly sharing in commmunity, iamdjango,