Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    IAQ sensor value always 0 with ESP32-C2C3 lib

    IAQ sensor value always 0 with ESP32-C2C3 lib

    dimaplusplus
    New Poster

    Hello!

    I want to use BSEC library 2.4.0.0 build for ESP32-C2C3 on another riscv platform.
    Sample application build up succesfully.

    I read data from BME680, raw sensor data seems ok
    I use valid timestamps in ns
    Mode is LP
    I wait forsensor_settings.next_call
    I followed guide in FAQ section
    BSEC configuration for BME680 has been set up with no error
    no error on bsec_init
    no other warnings or errors


    I tried with fresh air, defferent configuration, different delays, all I can find in the forum here.

    In the BSEC output I have temperature, humidity and other values I have already from BME680, but IAQ sesnor value and accuracy always 0.

    Maybe library is not appropriate for my platform.
    So I am concerned about initial valule for IAQ.
    Should initial value for IAQ be 25, or it could be zero?

    I attached output data from BSEC with raw valuesfrom BME680.
    Note that timestamps is devided by 1000000, so they are passed to BSEC lib in ns.

    Could you please share some test data that I can test if library in general can work on my platform?

    4 REPLIES 4

    dimaplusplus
    New Poster
    void StartBME68XTask(void const * argument)
    {
    return_values_init ret;
    struct bme68x_dev bme_dev;

    memset(&bme_dev,0,sizeof(bme_dev));

    /* Call to the function which initializes the BSEC library
    * Switch on low-power mode and provide no temperature offset */
    #if defined(BME68X_OUTPUT_GAS_ESTIMATE)
    #if defined(USE_I2C_INTERFACE)
    ret = bsec_iot_init(BSEC_SAMPLE_RATE_SCAN, 0.0f, SensorAPI_I2Cx_Write, SensorAPI_I2Cx_Read, bst_delay_us, state_load, config_load, bme_dev);
    #elif defined(USE_SPI_INTERFACE)
    ret = bsec_iot_init(BSEC_SAMPLE_RATE_SCAN, 0.0f, SensorAPI_SPIx_Write, SensorAPI_SPIx_Read, bst_delay_us, state_load, config_load, bme_dev);
    #endif
    #elif defined(BME68X_OUTPUT_GAS_IAQ)
    #if defined(USE_I2C_INTERFACE)
    ret = bsec_iot_init(BSEC_SAMPLE_RATE_LP, 0.0f, SensorAPI_I2Cx_Write, SensorAPI_I2Cx_Read, bst_delay_us, state_load, config_load, bme_dev);
    #elif defined(USE_SPI_INTERFACE)
    ret = bsec_iot_init(BSEC_SAMPLE_RATE_LP, 0.0f, bus_write, bus_read, sleep_n, state_load, config_load, bme_dev);
    #endif
    #endif
    if (ret.bme68x_status)
    {
    /* Could not intialize BME68x */
    printf("Could not intialize BME68x,ret.bme68x_status=%d\r\n", ret.bme68x_status);
    while(1);
    }
    else if (ret.bsec_status)
    {
    /* Could not intialize BSEC library */
    printf("Could not intialize BSEC library,ret.bsec_status=%d\r\n", ret.bsec_status);
    while(1);
    }

    #if defined(BME68X_OUTPUT_GAS_ESTIMATE)
    /* Call to endless loop function which reads and processes data based on sensor settings */
    /* State is saved every 10.000 samples, which means every 10.000 * 3 secs = 500 minutes */
    bsec_iot_loop(bst_delay_us, get_timestamp_us, output_ready, state_save, 10000);
    #elif defined(BME68X_OUTPUT_GAS_IAQ)
    bsec_iot_loop(sleep_n, get_timestamp_us, output_iaq_ready, state_save, 10000);
    #endif

    }

    static bsec_library_return_t bme68x_bsec_update_subscription(float sample_rate)
    {
    bsec_sensor_configuration_t requested_virtual_sensors[8];
    uint8_t n_requested_virtual_sensors = 8;

    uint8_t n_required_sensor_settings = BSEC_MAX_PHYSICAL_SENSOR;

    bsec_library_return_t status = BSEC_OK;

    /* note: Virtual sensors as desired to be added here */
    requested_virtual_sensors[0].sensor_id = BSEC_OUTPUT_IAQ;
    requested_virtual_sensors[0].sample_rate = sample_rate;
    requested_virtual_sensors[1].sensor_id = BSEC_OUTPUT_STATIC_IAQ;
    requested_virtual_sensors[1].sample_rate = sample_rate;
    requested_virtual_sensors[2].sensor_id = BSEC_OUTPUT_CO2_EQUIVALENT;
    requested_virtual_sensors[2].sample_rate = sample_rate;
    requested_virtual_sensors[3].sensor_id = BSEC_OUTPUT_BREATH_VOC_EQUIVALENT;
    requested_virtual_sensors[3].sample_rate = sample_rate;
    requested_virtual_sensors[4].sensor_id = BSEC_OUTPUT_RAW_PRESSURE;
    requested_virtual_sensors[4].sample_rate = sample_rate;
    requested_virtual_sensors[5].sensor_id = BSEC_OUTPUT_RAW_TEMPERATURE;
    requested_virtual_sensors[5].sample_rate = sample_rate;
    requested_virtual_sensors[6].sensor_id = BSEC_OUTPUT_RAW_HUMIDITY;
    requested_virtual_sensors[6].sample_rate = sample_rate;
    requested_virtual_sensors[7].sensor_id = BSEC_OUTPUT_RAW_GAS;
    requested_virtual_sensors[7].sample_rate = sample_rate;

    /* Call bsec_update_subscription() to enable/disable the requested virtual sensors */
    status = bsec_update_subscription(requested_virtual_sensors, n_requested_virtual_sensors, required_sensor_settings,
    &n_required_sensor_settings);

    return status;
    }

    Hi dimaplusplus,

    Could you provide the complete software code related to BME688 for review?

    Please, find software code here.
    We use BME680.

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist