#scd30 #operations #devices #i2c #interface #implemented

scd30_i2c

Rust Traits for SCD30设备I2C接口相关操作

3个版本

0.1.2 2024年5月15日
0.1.1 2024年5月3日
0.1.0 2024年5月3日

#596硬件支持

Download history 187/week @ 2024-05-02 96/week @ 2024-05-09 43/week @ 2024-05-16 9/week @ 2024-05-23 4/week @ 2024-05-30

每月 100 次下载

MIT 许可证

15KB
185

实现基本SCD30 I2C CO2传感器操作的SCD30 trait

操作来自接口描述

重要 当前版本0.1.2包含基本操作,一些高级操作如校准尚未实现

待办事项

  • (取消)激活自动自校准(ASC)
  • 设置强制校准
  • 设置温度偏移
  • 高度补偿
  • 软复位

基本示例

在您的Cargo.toml中 scd30_i2c="0.1.2"

获取测量值,CO2、温度和湿度

use scd30_i2c::scd30::Scd30;
use std::thread;
use std::time::Duration;

fn main() {
    // Open the I2C device
    let mut scd = Scd30::new().unwrap();
    let mut counter = 0;
    scd.trigger_cont_measurements();

    scd.set_measurements_interval(2);

    loop {
        match scd.get_measurements() {
            Ok((a, b, c)) => {
                println!("Co2: {} ppm Temp: {} C RH: {} %", a, b, c);
                thread::sleep(Duration::from_secs(2));
                counter += 1;
                println!("{}", counter);
            }
            Err(e) => {
                println!(
                    "Error obtaining measurements. More details: {}. Waiting 10 seconds for recovering",
                    e
                );
                thread::sleep(Duration::from_secs(10));
            }
        }
    }
}

硬件

我使用Raspberry Pi 5及其I2C功能创建和测试了这个库,对于其他运行Linux的机器应该也能工作,但我没有更多的设备进行测试

更多信息

这是我用Rust制作的第一个crate,所以任何建议都非常欢迎。

特别感谢

特别感谢RequestForCoffe提供的出色的Python库。我使用了这个库很多来理解并在Rust中复制代码。

依赖项

~2MB
~38K SLoC