The BME680 sensor is a "low power gas, pressure, temperature & humidity sensor" from Bosch Sensortec.
This crate helps to interface with the sensor. Offering general purpose access to the sensor, as well as a more opinionated controller logic, simplifying the process of taking measurements.
~~~rust fn main() -> ! { let i2c = createblockingi2c(); let mut timer = create_timer();
let bme680 = Bme680Sensor::from(i2c, Address::Secondary).unwrap();
let mut controller = Bme680Controller::new( bme680, &mut timer, Configuration::standard(), || 25, // fixed 25 degrees Celsius as ambient temperature ).unwrap();
loop { let result = controller.measure_default().unwrap(); log::info!("Measured: {:?}", result); } } ~~~
Also, see: examples/
You can run the unit tests on simple host machine using:
cargo test --feature logging
Run with (STM32F411):
cargo embed --release --features stm32f4xx --target thumbv7em-none-eabihf --example simple
Run with (STM32F723):
cargo embed --release --features stm32f7xx --target thumbv7em-none-eabihf --example simple
You can enable logging of raw data, by enabling the feature dump
, using --features dump
.
Note that this requires a logging implementation, such as rtt-logger
. Note that this may have a
huge negative impact on performance.