Crates.io | bme280-rs |
lib.rs | bme280-rs |
version | 0.3.0 |
source | src |
created_at | 2022-10-30 10:04:57.983092 |
updated_at | 2024-06-24 20:11:41.502509 |
description | A crate to query BME280 sensors over I²C |
homepage | https://gitlab.com/claudiomattera/bme280-rs |
repository | https://gitlab.com/claudiomattera/bme280-rs |
max_upload_size | |
id | 701416 |
size | 110,126 |
A Rust crate to query temperature, pressure and humidity from sensor BME280
https://gitlab.com/claudiomattera/bme280-rs/
This crate supports both embedded-hal
and embedded-hal-async
.
See the changelog for this project.
Add the dependency to Cargo.toml
.
[dependencies.bme280-rs]
version = "0.3.0"
Optionally enable the desired features.
Feature | Description |
---|---|
blocking (default) |
Enable the blocking sensor Bme280 |
async (default) |
Enable the async sensor AsyncBme280 |
uom |
Use uom for measurement types |
A Bme280
structure can be created from an I²C interface and a delay function.
The initial sampling configuration disables all measurements, so it is necessary to reconfigure the chip with the desired settings before read samples.
use bme280_rs::{Bme280, Configuration, Oversampling, SensorMode};
let i2c = ...
let delay = ...
let mut bme280 = Bme280::new(i2c, delay);
bme280.init()?;
bme280.set_sampling_configuration(
Configuration::default()
.with_temperature_oversampling(Oversampling::Oversample1)
.with_pressure_oversampling(Oversampling::Oversample1)
.with_humidity_oversampling(Oversampling::Oversample1)
.with_sensor_mode(SensorMode::Normal)
)?;
delay.delay_ms(10);
if let Some(temperature) = bme280.read_temperature()? {
println!("Temperature: {} C", temperature);
} else {
println!("Temperature reading was disabled");
}
An AsyncBme280
structure can be used with asynchronous HALs.
Its API is completely identical to Bme280
, just with .await
at the end of function calls.
use bme280_rs::{AsyncBme280, Configuration, Oversampling, SensorMode};
let i2c = ...
let delay = ...
let mut bme280 = AsyncBme280::new(i2c, delay);
bme280.init()?;
bme280.set_sampling_configuration(
Configuration::default()
.with_temperature_oversampling(Oversampling::Oversample1)
.with_pressure_oversampling(Oversampling::Oversample1)
.with_humidity_oversampling(Oversampling::Oversample1)
.with_sensor_mode(SensorMode::Normal)
).await?;
delay.delay_ms(10).await;
if let Some(temperature) = bme280.read_temperature().await? {
println!("Temperature: {} C", temperature);
} else {
println!("Temperature reading was disabled");
}
See the examples for more information.
By default, this crate uses f32
values for all the measurements temperature, pressure and humidity.
When instead enabling the Cargo feature uom
, it uses quantities from crate uom.
Temperature measurements have type uom::si::f32::ThermodynamicTemperature
, pressure measurements have type uom::si::f32::Pressure
, and humidity measurements have type uom::si::f32::Ratio
.
Copyright Claudio Mattera 2022-2024
You are free to copy, modify, and distribute this application with attribution under the terms of either
LICENSE-APACHE-2.0.txt
or https://opensource.org/licenses/Apache-2.0)LICENSE-MIT.txt
or https://opensource.org/licenses/MIT)at your option.
This project is entirely original work, and it is not affiliated with nor endorsed in any way by Bosch Sensortec.