14次发布
0.2.8 | 2024年6月8日 |
---|---|
0.2.7 | 2024年4月27日 |
0.2.3 | 2024年3月25日 |
0.1.4 | 2024年1月6日 |
0.1.2 | 2023年12月31日 |
#1752 in 嵌入式开发
每月21次下载
27KB
444 行
ENS160-AQ
Rust crate,用于ScioSense ENS160空气质量传感器
https://github.com/marvinrobot42/ens160-aq.git
使用ENS160的好处是设备内部计算了综合空气质量指数,无需外部专有计算程序。
特性
-
更新为使用嵌入式hal版本1.0.x
-
为嵌入式使用设计(ESP32-C3、-C6和-S3)和树莓派
-
可配置中断引脚
-
支持0x52(默认)和0x53(二级)I2C设备地址
-
为ENS160补偿计算设置温度和湿度
-
读取空气质量指数、eCO2、TVOC、乙醇浓度和原始加热板电阻(欧姆)
-
易于使用的Measurements结构体
-
易于使用的初始化函数
-
无_std嵌入式兼容
-
(暂不支持SPI)
注意
这是我第一个设备驱动程序项目。我受到了Alexander Hübener的优秀ENS160 crate的启发。
STM32:stm32fxx-hal crate仍然基于嵌入式hal版本0.2。为了将此ens160-aq crate用作STM32项目的依赖项,请使用版本0.1.4。例如 dependencies.ens160-aq 版本 = "0.1.4"。ens160-aq的新版本基于嵌入式hal 1.0+,不兼容,您将遇到i2c和Delay::delay特征界限构建错误。
在crate.io中检查您的硬件特定hal依赖项。版本1.0是最新版本。例如,ESP32-C3和-C6 hal是esp-idf-hal版本 "0.43.0",它表明它依赖于嵌入式hal版本 ^1。树莓派是linux-embedded-hal,版本 "0.4.0" 依赖于嵌入式hal ^1。
最近版本历史
- 0.2.8 更新了README.md
- 0.2.7 添加了树莓派示例
- 0.2.6 修复了README.MD
- 0.2.5 添加了更多文档注释
- 0.2.2 在InterruptPinConfig中修复了小错误,添加了返回 .0 属性作为 u8 的 build() 方法。更新了 examples/airquality.rs 文件
使用
将依赖项添加到 Cargo.toml
。
[dependencies.ens160-aq]
version = "0.2"
从I²C接口和延迟函数创建Ens160结构体。如有必要,配置中断引脚属性。
初始化 ENS160。可以随时调用 set_temp_rh_comp() 进行温度和湿度补偿。读取 ENS160 的状态,检查是否有新的数据或组数据(如有需要)准备就绪,然后获取测量值。或者您可以单独获取 ECO2、TVOC 或空气质量指数。注意,set_operation_mode(OperationMode::Reset) 是可用的,但它会将 ENS160 重置到出厂默认设置,包括 24 小时的“烧入”模式。无需在其他任何原因下调用。
简单示例
更完整的示例在仓库 examples 路径中
use ens160_aq::data::{InterruptPinConfig, Measurements};
use ens160_aq::Ens160;
...
fn main() -> Result<()> {
...
let peripherals = Peripherals::take().unwrap();
let pins = peripherals.pins;
let sda = pins.gpio0;
let scl = pins.gpio1;
let i2c = peripherals.i2c0;
let config = I2cConfig::new().baudrate(100.kHz().into());
let i2c_dev = I2cDriver::new(i2c, sda, scl, &config)?;
let mut ens160 = Ens160::new(i2c_dev, Ets {}); // Ets is ESP32 IDF delay function
ens160.initialize().unwrap();
loop {
if let Ok(status) = ens160.get_status() {
if status.new_data_ready() { // read all measurements
let measuremnts: Measurements = ens160.get_measurements().unwrap();
info!("measurements are : {:#?}\n\n", measuremnts);
}
else {
info!("no new data ready");
}
}
FreeRtos::delay_ms(30000);
}
}
许可协议
您可以根据以下任一许可协议自由复制、修改和分发此应用程序,并注明出处:
- Apache License,版本 2.0(LICENSE-Apache-2.0 或 https://opensource.org/licenses/Apache-2.0)
- MIT 许可协议(LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任选其一。
此项目与 ScioSense 无关,也不受其支持。
依赖关系
~0.7–1.7MB
~23K SLoC