#air-quality #sensor #gas #embedded-hal #sgp30

无 std embedded-sgp30

适用于室内空气质量应用的SGP30气体传感器的平台无关Rust驱动程序

1个不稳定发布

0.1.0 2024年1月25日

#1619 in 嵌入式开发

MIT/Apache

25KB
361

crates.io License Documentation

嵌入式-sgp30

这是一个使用嵌入式-hal特质的平台无关Rust驱动程序,用于SGP30数字气体传感器。

设备

SGP30是一种用于室内空气质量应用的气体传感器,如空气净化器、按需通风或物联网。

它提供了关于空气质量的详细信息,例如TVOC和CO₂eq。它还提供了乙醇和H₂的原始测量值。

它通过I²C接口进行寻址,具有低功耗。

以下是它的测量范围

乙醇 H₂ TVOC CO₂eq
0 ppm至1000 ppm 0 ppm至1000 ppm 0 ppb至60000 ppb 400 ppm至60000 ppm

ppm:百万分之一。1 ppm = 1000 ppb(十亿分之一)

有关准确性和分辨率的更多详细信息,请参阅以下数据表链接。

文档

特性

  • 初始化空气质量测量。
  • 执行空气质量测量(返回TVOC和CO₂eq值)。
  • 获取基线校正算法的基线值。
  • 设置基线校正算法的基线值。
  • 设置湿度以向芯片上的湿度补偿算法提供来自外部湿度传感器(如sht3x)的绝对湿度值。
  • 进行软件设置。
  • 执行原始信号测量(返回乙醇和H₂值)。
  • 包含一个无浮点变体,适用于没有fpu的系统。

用法

要使用此驱动程序,从该crate导入所需的项,并实例化设备。

use embedded_hal::delay::DelayNs;
use embedded_sgp30::{Sgp30, I2C_ADDRESS};
use linux_embedded_hal as hal;

fn main() -> Result<(), embedded_sgp30::Error<hal::I2CError>> {
    // Create the I2C device from the chosen embedded-hal implementation,
    // in this case linux-embedded-hal
    let i2c = match hal::I2cdev::new("/dev/i2c-1") {
        Err(err) => {
            eprintln!("Could not create I2C device: {}", err);
            std::process::exit(1);
        }
        Ok(i2c) => i2c,
    };

    // Create the sensor and configure its repeatability
    let mut sensor = Sgp30::new(i2c, I2C_ADDRESS, hal::Delay {})?;
    sensor.initialize_air_quality_measure()?;

    // Perform an air quality measurement every second
    let mut delay = hal::Delay {};
    for i in 0..30 {
        delay.delay_ms(1000);
        let measurement = sensor.measure_air_quality()?;

        // Only print the measurement after the startup time of 15s
        if i > 15 {
            println!(
                "CO₂eq: {} ppm, TVOC: {} ppb",
                measurement.co2, measurement.tvoc
            );
        }
    }
    Ok(())
}

基线获取和设置的正确使用

不应在任何随机时间保存和恢复基线值。

如果在不恢复先前基线的情况下启动传感器,则传感器将尝试确定新的基线。为此,调整算法需要运行12小时。因此,不应在这12小时内保存基线值。在之前读取基线值应避免,除非首先已恢复有效基线。

在这12小时之后,或者如果启动时已恢复基线,基线应大约每小时存储一次。如果传感器关闭一段时间,存储的基线值可以保存最多7天。如果传感器关闭时间更长,存储的基线应该被删除,并从开始重新启动过程,因此您应该在存储新的基线之前再次等待12小时。

许可证

许可协议如下

由您选择。

贡献

除非您明确声明,否则任何您有意提交并包含在作品中的贡献(根据Apache-2.0许可证定义),都应双许可如上所述,不附加任何额外条款或条件。

依赖项

~375KB