Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Sensor_传感器框架
packages_软件包
在 RT-Thread 中快速使用 CCS811 传感器
1.00
发布于 2020-07-04 22:16:25 浏览:974
订阅该版
[tocm] ## 1、CCS811 传感器 ccs811 软件包是 CCS811 气体传感器的驱动软件包。CCS811 是一款低功耗数字气体传感器,用于检测室内低水平的挥发性有机化合物和二氧化碳浓度,内部集成微控制器单元 (MCU) 和模数转换器(ADC),并提供通过标准 I2C 数字接口获取 CO2 或 TVOC 数据。 CCS811 模块支持 I2C 接口,IIC 地址可配置为 0x5A 或 0X5B。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200704210908902.jpg) CCS811 支持多种模式:每1秒、10秒、1分钟、250毫秒测量一次以及休眠模式,这些模式在传感器测量期间进行了低功耗优化,因此 CCS811 适用于便携式应用。CCS811 支持浓度报警,当浓度超过用户设置的阈值时,INT 引脚就会触发。 注意:该芯片对 IIC 进行了时钟延展,有些控制器不支持时钟延展,例如树莓派。 ### 1.1 技术规格 - 供电电压:3.3V~5.5 V - 预热时间:<15s - IIC地址:0x5A 或 0X5B - 工作温度范围:-40℃~85℃ - 工作湿度范围:10%RH~95%RH - eCO2测量范围:400ppm~8000ppm - TVOC测量范围:0ppb~1100ppb - 产品尺寸:22*31mm ### 1.2 功能特性 - 集成 MCU - 板载处理 - 标准数字接口 - 优化的低功耗模式 - IAQ 阈值报警 - 可编程基线-2.7mm x 4.0mm LGA 封装 - 低元件数 - 成熟的技术平台 ### 1.3 应用场景 - 车内空气质量检测 - 室内空气质量检测 - 空气净化器 - 家庭控制器 - 新风系统 ## 2、使用 ccs811 软件包 ### 2.1 添加软件包 为了在项目中快速集成 CCS811 传感器进行应用开发,笔者制作了基于 RT-Thread 的 ccs811 软件包。 GitHub 地址:
。 使用 ccs811 软件包,需要在 RT-Thread 的包管理器中选择它,具体路径如下: ``` RT-Thread online packages ---> peripheral libraries and drivers ---> [*] sensors drivers ---> [*] CCS811: Digital Gas Sensor for Monitoring Indoor Air Quality.. ``` 打开 Env 工具,执行 `pkgs --upgrade` 更新 RT-Thread 软件包索引。更新完成后,在你的 BSP 工程目录中执行 menuconfig 进行配置,添加 ccs811 软件包,如下图所示。 ![添加CCS811软件包.png](/uploads/20200704/a8a7503b08f53b209afa0acf7ca0ca42.png) 然后让 RT-Thread 的包管理器自动更新,或者使用 `pkgs --update` 命令更新包到 BSP 中。 ### 2.2 配置选项 ccs811 软件包目前提供两个配置选项: - 选择 I2C 地址(`PKG_USING_CCS811_I2C_ADDRESS`) - 是否使用示例程序(`PKG_USING_CCS811_SAMPLE`) 用户可根据 CCS811 实际的硬件连接,选择 I2C 地址为 0x5A 或 0x5B。 ## 3 测试 ### 3.1 编译下载 ccs811 软件包中提供了测试示例,只需在 menuconfig 配置中勾选 “Enable ccs811 sample” 即可。为了完成测试,还需要开启 “Sensor cmd” 功能。 ![添加CCS811软件包_启动Sensor-cmd.png](/uploads/20200704/bc2d520de2ef8e1dc917a6e0c6610988.png) 对了,别忘了配置 I2C 总线!ccs811 软件包的示例默认使用 i2c1,因此需要在 menuconfig 中配置好 I2C1 Bus。 ![添加CCS811软件包_配置I2C总线.png](/uploads/20200704/2010fc7f48489c50f518fbea7f2f559b.png) 配置完成后即可编译,下载到开发板中进行下一步实验。 ### 3.2 初始化示例代码 因为 RT-Thread 提供了 Sensor 驱动框架,并且 ccs811 已经接入 Sensor 框架了,因此只需要向下面这样注册传感器设备,即可完成初始化工作。 ```c static int rt_hw_ccs811_port(void) { struct rt_sensor_config cfg; cfg.intf.type = RT_SENSOR_INTF_I2C; cfg.intf.dev_name = CCS811_I2C_BUS_NAME; rt_hw_ccs811_init("cs8", &cfg); return RT_EOK; } INIT_COMPONENT_EXPORT(rt_hw_ccs811_port); ``` 实际上,这一步在 sensor_ccs811_sample.c 示例中已经有了。因此,我们不用敲一行代码! ### 3.3 使用 sensor 命令 如果一切正常,我们就可以来到 msh 终端。 #### 3.3.1 检查传感器是否初始化成功 输入 list_device 查看 CCS811 传感器是否已经注册。如果看到如下信息,说明已经注册上了,并且传感器初始化成功。 ```shell msh >list_device device type ref count -------- -------------------- ---------- tvoc_cs8 Sensor Device 0 eco2_cs8 Sensor Device 0 ``` 这里会看到两个设备 tvoc_cs8 和 eco2_cs8,这是因为 CCS811 模块能检测两类气体数据(TVOC 和 CO2),所以在 RT-Thread 中会注册为两个设备。 #### 3.3.2 查看 CCS811 信息 传感器初始化成功后,我们就可以使用 sensor 命令进行测试了!`sensor probe` 命令用于探测传感器设备,命令后面接上设备名称即可。 ```shell msh >sensor probe tvoc_cs8 [4774993] I/sensor.cmd: device id: 0x81! ``` 同时 `sensor probe` 命令还会选中该传感器设备,之后可以使用 `sensor info` 或 `sensor read` 等命令对该设备进行操作。 比如查看设备信息: ```shell msh >sensor info vendor :AMS model :ccs811 unit :ppb range_max :32768 range_min :0 period_min:250ms fifo_max :1 ``` #### 3.3.3 读取 TVOC 数据 执行 `sensor read` 即可读取 TVOC 的值。 ```shell msh >sensor read [4794468] I/sensor.cmd: num: 0, tvoc: 184 ppb, timestamp:4794468 [4794586] I/sensor.cmd: num: 1, tvoc: 184 ppb, timestamp:4794586 [4794704] I/sensor.cmd: num: 2, tvoc: 184 ppb, timestamp:4794704 [4794822] I/sensor.cmd: num: 3, tvoc: 184 ppb, timestamp:4794822 [4794940] I/sensor.cmd: num: 4, tvoc: 184 ppb, timestamp:4794940 ``` #### 3.3.4 读取 CO2 数据 由于前面选中的是 tvoc_cs8 设备,为了读取 CO2 的值,我们需要先执行 `sensor probe eco2_cs8` 切换设备,再执行 `sensor read` 读取传感数据。 ```shell msh >sensor read [4957632] I/sensor.cmd: num: 0, eco2: 871 ppm, timestamp:4957632 [4957850] I/sensor.cmd: num: 1, eco2: 865 ppm, timestamp:4957850 [4957968] I/sensor.cmd: num: 2, eco2: 865 ppm, timestamp:4957968 [4958086] I/sensor.cmd: num: 3, eco2: 871 ppm, timestamp:4958086 [4958303] I/sensor.cmd: num: 4, eco2: 871 ppm, timestamp:4958303 ``` ### 3.4 使用自定义接口测试 ccs811 为我们提供了两种接口,一种是自定义的接口,另一种是对接 RT-Thread Sensor 框架的接口。在 ccs811 软件包的示例代码中还提供了一个 cat_ccs811 示例,其使用的就是自定义接口,测试结果如下。 ```shell msh >cat_ccs811 [20] TVOC: 0 ppb, eCO2: 0 ppm [19] TVOC: 9 ppb, eCO2: 465 ppm [18] TVOC: 11 ppb, eCO2: 475 ppm [17] TVOC: 11 ppb, eCO2: 475 ppm [16] TVOC: 11 ppb, eCO2: 477 ppm ==> baseline: 0x8484 ... ```
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
阿基米东
https://github.com/luhuadong
文章
7
回答
52
被采纳
3
关注TA
发私信
相关文章
1
有关多sensor设备的module定义结构体自调用的疑惑
2
ART-PI,使用vl53l0x软件包,报错
3
sensor传感器驱动框架中sensor.h疑问
4
SENSOR驱动框架的使用
5
请教RT-thread的传感器框架的使用
6
RT_THREAD使用线程读取传感器数据偶尔会失败
7
关于单总线传感器驱动问题
8
寻求sensor多种数据一次全采集的实现方式
9
设备dev是如何根据parameter找到的
10
max6675 热电偶接入sensor框架,间隔时间太短读出来数值不会变化
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部