9 个不稳定版本 (4 个重大变更)

0.5.0+1.4.9.2 2023年2月12日
0.4.1 2023年2月12日
0.3.1 2021年11月9日
0.3.0 2021年5月15日
0.1.2 2021年5月4日

嵌入式开发中排名 450

Download history

每月下载 63

MIT/Apache

64KB
1K SLoC

bsec crate

Rust API 对 Bosch BSEC 库 的访问。

此说明将使用 bsec 来指代此crate,而 Bosch BSEC 用于指代由Bosch提供的原始BSEC库。

重要许可信息

《Bosch BSEC》库是专有软件。因此,《Bosch BSEC》库及其文档不能包含在《bsec》Rust crate中,需要单独获取。

尽管此crate中的Rust API在宽松许可下发布,但您仍需遵守《Bosch BSEC》许可条款。

您有责任确保您的产品遵守《Bosch BSEC》许可条款。

功能

  • 对《Bosch BSEC》库的安全Rust API绑定。
  • 实现,可用于与BME680 传感器一起使用。
  • 可扩展到其他传感器。
  • 基本的假传感器实现,用于单元测试。

文档

crate文档可在docs.rs上找到。

入门指南

请参阅crate文档。

使用示例

use bsec::{Bsec, Input, InputKind, OutputKind, clock::Clock, SampleRate, SubscriptionRequest};
use nb::block;
use std::time::Duration;

// Acquire handle to the BSEC library.
// Only one such handle can be acquired at any time.
let mut bsec: Bsec<_, TimePassed, _> = Bsec::init(sensor, &clock)?;

// Configure the outputs you want to subscribe to.
bsec.update_subscription(&[
    SubscriptionRequest {
        sample_rate: SampleRate::Lp,
        sensor: OutputKind::Iaq,
    },
])?;

// We need to feed BSEC regularly with new measurements.
loop {
    // Wait for when the next measurement is due.
    sleep_for(Duration::from_nanos((bsec.next_measurement() - clock.timestamp_ns()) as u64));

    // Start the measurement.
    let wait_duration = block!(bsec.start_next_measurement())?;
    sleep_for(wait_duration);
    # clock.advance_by(wait_duration);

    // Process the measurement when ready and print the BSEC outputs.
    let outputs = block!(bsec.process_last_measurement())?;
    for output in &outputs {
        println!("{:?}: {}", output.sensor, output.signal);
    }
}

依赖关系

~0.1–2MB
~40K SLoC