Coder Social home page Coder Social logo

Comments (2)

mihai-dinculescu avatar mihai-dinculescu commented on June 16, 2024

Getting the same behavior with an Adafruit BME680 as well.

Here's my code.

fn main() -> anyhow::Result<()> {
    esp_idf_sys::link_patches();

    log::set_logger(&LOGGER).map(|()| LOGGER.initialize())?;
    LOGGER.set_target_level("", log::LevelFilter::Debug);

    let peripherals = Peripherals::take().context("failed to get peripherals")?;
    let pins = peripherals.pins;

    let mut delayer = delay::FreeRtos;

    let i2c_config = <i2c::config::MasterConfig as Default>::default();

    let i2c_master = i2c::Master::<i2c::I2C0, _, _>::new(
        peripherals.i2c0,
        i2c::MasterPins {
            sda: pins.gpio23,
            scl: pins.gpio22,
        },
        i2c_config,
    )?;

    let mut sensor: Bme680<_, FreeRtos> =
        Bme680::init(i2c_master, &mut delayer, I2CAddress::Secondary).unwrap();

    let settings = SettingsBuilder::new()
        .with_humidity_oversampling(OversamplingSetting::OS16x)
        .with_pressure_oversampling(OversamplingSetting::OS4x)
        .with_temperature_oversampling(OversamplingSetting::OS8x)
        .with_temperature_filter(IIRFilterSize::Size3)
        .with_gas_measurement(Duration::from_millis(1500), 320, 25)
        .with_temperature_offset(-2.2)
        .with_run_gas(true)
        .build();

    let profile_dur = sensor.get_profile_dur(&settings.0).unwrap();
    info!("Profile duration {:?}", profile_dur);

    info!("Setting sensor settings");
    sensor.set_sensor_settings(&mut delayer, settings).unwrap();

    let sensor_settings = sensor.get_sensor_settings(settings.1);
    info!("Sensor settings: {:?}", sensor_settings);

    loop {
        delayer.delay_ms(5 * 1000u32);

        let power_mode = sensor.get_sensor_mode();
        info!("Sensor power mode: {:?}", power_mode);

        info!("Setting forced power modes");
        sensor
            .set_sensor_mode(&mut delayer, PowerMode::ForcedMode)
            .unwrap();

        // Something I've tried
        // delayer.delay_ms(profile_dur.as_millis() as u32);

        // Something else I've tried
        // while sensor.get_sensor_mode().unwrap() == PowerMode::SleepMode {
        //     sensor
        //         .set_sensor_mode(&mut delayer, PowerMode::ForcedMode)
        //         .unwrap();
        // }

        let (data, _state) = sensor.get_sensor_data(&mut delayer).unwrap();
        info!("Sensor Data {:?}", data);
        info!("Temperature {}°C", data.temperature_celsius());
        info!("Pressure {}hPa", data.pressure_hpa());
        info!("Humidity {}%", data.humidity_percent());
        info!("Gas Resistence {}Ω", data.gas_resistance_ohm());
    }
}

from bme680.

haflinger avatar haflinger commented on June 16, 2024

Same behavior with and without #43 😭

Humidity seems to be correct when I remove :

.with_temperature_oversampling(OversamplingSetting::OS8x)
.with_temperature_filter(IIRFilterSize::Size3)

Any ideas ?

from bme680.

Related Issues (14)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.