#sensor #humidity-sensor #embedded-hal-i2c #i2c #embedded-hal #async

无 std bme280-rs

一个用于通过I²C查询BME280传感器的crate

3个版本 (破坏性)

0.3.0 2024年6月24日
0.2.0 2024年2月9日
0.1.0 2022年10月30日

#367 in 嵌入式开发

MIT/Apache

83KB
1.5K SLoC

Rust BME280 Crate

Version Documentation Downloads License MSRV

一个Rust crate,用于从传感器BME280查询温度、压力和湿度

https://gitlab.com/claudiomattera/bme280-rs/

此crate同时支持embedded-halembedded-hal-async

查看此项目的变更日志

用法

将依赖项添加到Cargo.toml

[dependencies.bme280-rs]
version = "0.3.0"

可选地启用所需的功能。

功能 描述
blocking (默认) 启用阻塞式传感器Bme280
async (默认) 启用异步传感器AsyncBme280
uom 使用uom进行测量类型

可以从I²C接口和延迟函数创建一个Bme280结构。初始采样配置禁用所有测量,因此在读取样本之前,需要使用所需设置重新配置芯片。

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");
}

可以使用AsyncBme280结构与异步HAL一起使用。它的API与Bme280完全相同,只是在函数调用末尾添加了.await

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");
}

有关更多信息,请参阅示例

测量单位

默认情况下,此包使用 f32 值进行所有温度、压力和湿度测量。当启用 Cargo 功能 uom 时,它使用来自包 uom 的量。温度测量的类型为 uom::si::f32::ThermodynamicTemperature,压力测量的类型为 uom::si::f32::Pressure,湿度测量的类型为 uom::si::f32::Ratio

许可证

版权所有 Claudio Mattera 2022-2024

您可以在署名的情况下免费复制、修改和分发此应用程序,具体条款如下:

任选其一。

本项目是完全原创作品,与 Bosch Sensortec 无关,也未得到其任何形式的认可或支持。

依赖项

~46–375KB