#sensor #driver #no-std #bme680

no-std bosch-bme680

A pure rust implementation for the BME680 environmental sensor

5 releases (3 stable)

1.0.3 Sep 3, 2024
1.0.2 Feb 28, 2024
1.0.1 Feb 21, 2024
0.1.1 Jan 22, 2023
0.1.0 Jan 13, 2023

#520 in Embedded development

MIT license

81KB
1.5K SLoC

bosch_bme680   crates.io

A pure rust driver for the Bosch BME680 environmental sensor that focuses on ease of use.

Additional information

Simple example

Mock i2c and delay have to be replaced with specific hardware crates.

fn main() -> ! {
    let i2c = mock::blocking_i2c();
    let delay = mock::MockDelay;

    let config = bosch_bme680::Configuration::default();
    let mut bme = Bme680::new(i2c, DeviceAddress::Primary, delay, &config, 20).unwrap();
    thread::sleep(Duration::from_millis(100));

    loop {
        thread::sleep(Duration::from_secs(2));
        let values = bme.measure().unwrap();
        println!("Values: {values:?}\n");
    }
}

embedded-hal-async usage

This crate has optional support for embedded-hal-async, which provides asynchronous versions of the embedded-hal traits. To avoid an unnecessary dependency on embedded-hal-async for projects which do not require it, the embedded-hal-async support is an optional feature.

In order to use the embedded-hal-async driver, add the following to your Cargo.toml:

[dependencies]
bosch-bme680 = { version = "1.0.3", features = ["embedded-hal-async"] }

Then, construct an instance of the AsyncBme680 struct using the embedded_hal_async I2c and Delay traits.

Dependencies

~195KB