1个不稳定发布
0.1.0 | 2024年1月25日 |
---|
#1619 in 嵌入式开发
25KB
361 行
嵌入式-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 License,版本2.0(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则任何您有意提交并包含在作品中的贡献(根据Apache-2.0许可证定义),都应双许可如上所述,不附加任何额外条款或条件。
依赖项
~375KB