MCU: ESP32 (3.3V)
Sensor: BME688 @ 0x76 (I²C), 3.3 V supply
Platform: custom board (not Shuttle), SD logging
Goal: run the HP-354 heating profile, log per-step raw data (gas ohm, T, RH, p) and compare against a second board running BSEC outputs (IAQ, CO₂eq, bVOC). I’d like to do this without the Shuttle Board / AI-Studio logging pipeline.
So, temps:
{320, 100, 100, 100, 200, 200, 200, 320, 320, 320}
durations (ms):{700, 280, 1400, 4200, 700, 700, 700, 700, 700, 700}
(I also saw forum snippets stating the duration unit is 140 ms — please confirm this is correct for HP-354.)Questions
BSEC2 config blob to pair with HP-354:
Under.../config/bme688/I seebme688_sel_33v_3s_28dandbme688_sel_33v_300s_4d, etc.
HP-354 lasts ≈10.78 s, so 3 s and 300 s do not match.
→ Is there an official BSEC2 selectivity config for 3.3 V that matches HP-354, or should I rely solely on the AI-Studio exported heater sequence and run BSEC with a generic selectivity config?Running HP-354 in parallel mode on a non-Shuttle board:
If I apply the heater profile viabme68x_set_heatr_conf(BME68X_PARALLEL_MODE, ...)with the arrays above, can I still feed the raw samples to BSEC2 to obtain IAQ/CO₂eq/bVOC consistently?
Do I need a specificbsec_configblob that corresponds to HP-354 for stable outputs, or will the generic “sel” config work as long as the timing is respected?Timing base / scheduling:
Is the 140 ms time base the right assumption for HP-354 step durations?
For BSEC2 scheduling, should I simply loop one full HP-354 cycle (~10.78 s), then call into BSEC with the collected fields, or should I pace calls per field? Any reference guidance is appreciated.
Expected data fields per cycle:
In parallel mode I expect the number of valid fields to equal the profile length (10 steps here). Is that correct for HP-354?Do’s & don’ts on ESP32:
Any caveats when replicating HP-354 on a custom ESP32 board (heater duty limits, T/RH compensation, recommended oversampling / IIR settings) to make BSEC happy?
What I plan to implement (pseudo-C):
static const uint16_t HP354_TEMP_C[] = {320,100,100,100,200,200,200,320,320,320};
static const uint16_t HP354_DUR_MS[] = {700,280,1400,4200,700,700,700,700,700,700};
static const uint8_t HP354_STEPS = 10;
// bme68x_set_heatr_conf(BME68X_PARALLEL_MODE, ...) with the arrays above,
// then bme68x_get_data() to read per-step fields and log them (gas_ohm, T, RH, p).
Any official recommendations or example mappings (HP-354 ↔ BSEC2 config blob) would be super helpful.
Thanks a lot in advance!