#空气质量 #传感器 #气体 #空气 #品质 #嵌入式HAL驱动程序

无需std embedded-ccs811

用于监控室内空气质量的CCS811超低功耗数字气体传感器的跨平台Rust驱动程序

2个不稳定版本

0.2.0 2020年9月10日
0.1.0 2020年1月27日

#2034 in 嵌入式开发

每月 22次下载

MIT/Apache

58KB
938

Rust CCS811 驱动程序:用于监控室内空气质量的超低功耗数字气体传感器

crates.io Docs Build Status Coverage Status

这是一个使用embedded-hal特质实现的、适用于所有平台的CCS811超低功耗数字VOC传感器驱动程序,用于监控室内空气质量(IAQ)。

此驱动程序允许您

  • 在应用模式下
    • 设置测量模式。见:set_mode()
    • 检查是否有新数据准备好。见:has_data_ready()
    • 获取算法和原始结果数据。见:data()
    • 获取原始数据。见:raw_data()
    • 获取当前基线。见:baseline()
    • 设置基线。见:set_baseline()
    • 设置环境温度和相对湿度。见:set_environment()
    • 设置中断模式。见:set_interrupt_mode()
    • 设置中断的eCO2阈值。见:set_eco2_thresholds()
  • 在启动模式下
    • 启动应用。见:start_application()
    • 重置、擦除、下载并验证新的应用。见:update_application()
    • 擦除应用。见:erase_application()
    • 验证应用程序。请参阅:verify_application()
    • 下载应用程序。请参阅:download_application()
  • 在任一模式下
    • 获取固件模式。请参阅:firmware_mode()
    • 检查是否加载了有效的应用程序。请参阅:has_valid_app()
    • 获取硬件ID。请参阅:hardware_id()
    • 获取硬件版本。请参阅:hardware_version()
    • 获取固件引导加载程序版本。请参阅:firmware_bootloader_version()
    • 获取固件应用程序版本。请参阅:firmware_application_version()
    • 执行软件重置。请参阅:software_reset()

介绍性博客文章

设备

CCS811是一种超低功耗数字气体传感器解决方案,它集成了金属氧化物(MOX)气体传感器,用于检测广泛的挥发性有机化合物(VOCs),并通过微控制器单元(MCU)进行室内空气质量监测,该单元包括模拟数字转换器(ADC)和I²C接口。

CCS811基于ams独特的微热板技术,该技术为气体传感器提供了高度可靠的解决方案,非常快的循环时间,并显著降低了平均功耗。

集成的MCU管理传感器驱动模式和测量。I²C数字接口显著简化了硬件和软件设计,使产品上市时间更快。

CCS811支持智能算法,用于处理原始传感器测量值,输出等效总VOC(eTVOC)和等效CO2(eCO2)值,其中VOCs的主要来源是人类。

CCS811支持多种测量模式,这些模式在活动传感器测量和空闲模式下已优化以降低功耗,从而延长便携式应用程序的电池寿命。

文档

使用

要使用此驱动程序,请导入此crate和embedded_hal实现,然后实例化设备。

请在此存储库中查找使用硬件的附加示例:[driver-examples](https://github.com/eldruin/driver-examples)

extern crate linux_embedded_hal as hal;
use embedded_ccs811::{prelude::*, Ccs811, MeasurementMode, SlaveAddr};
use nb::block;

fn main() {
    let dev = hal::I2cdev::new("/dev/i2c-1").unwrap();
    let nwake = hal::Pin::new(17);
    let delay = hal::Delay {};
    let address = SlaveAddr::default();
    let sensor = Ccs811::new(dev, address, nwake, delay);
    let mut sensor = sensor.start_application().ok().unwrap();
    sensor.set_mode(MeasurementMode::ConstantPower1s).unwrap();
    loop {
        let data = block!(sensor.data()).unwrap();
        println!("eCO2: {}, eTVOC: {}", data.eco2, data.etvoc);
    }
}

支持

有关问题、问题、功能请求和其他更改,请在[github项目](https://github.com/eldruin/embedded-ccs811-rs/issues)中提交问题。

许可

根据您选择的以下任一许可

  • Apache License,版本2.0 ([LICENSE-APACHE](https://github.com/eldruin/embedded-ccs811-rs/blob/1f1a3294dade8b83dd7bc13d0145d648f97a27d9/LICENSE-APACHE) 或 [https://apache.ac.cn/licenses/LICENSE-2.0](https://apache.ac.cn/licenses/LICENSE-2.0))
  • MIT许可 ([LICENSE-MIT](https://github.com/eldruin/embedded-ccs811-rs/blob/1f1a3294dade8b83dd7bc13d0145d648f97a27d9/LICENSE-MIT) 或 [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT))

任选其一。

贡献

除非您明确声明,否则根据Apache-2.0许可定义,您有意提交给作品的所有贡献,将按照上述方式双许可,不附加任何额外条款或条件。

依赖关系

~71KB