空气质量检测模块 - CCS811
来这里发现更多拿来即用的硬件积木
https://haas.iot.aliyun.com/solution/detail/hardware
一、产品简介
通过CCS811传感器模块可以测量环境中TVOC(总挥发性有机物质)浓度和eCO2(二氧化碳)浓度,作为衡量空气质量(IAQ)的指标。
引脚定义
VCC:3.3V
GND:接地
SCL:I2C时钟
SDA:I2C数字
WAK:接地
INT:NC(阈值中断引脚)
RST:NC(复位引脚)
ADD:NC
二、技术参数
供电电压:3.3V
接口:I2C接口
分辨率:14位
工作电流:20mA
睡眠模式的电流:3uA
模块尺寸:15mm * 21mm
三、软件接口
CCS811传感器HaaS Python驱动:下载地址
CCS811(i2cObj) - 创建CCS811驱动对象
函数原型:
ccs811Obj = CCS811(i2cObj)
参数说明:
参数 类型 必选参数? 说明
i2cObj I2C 是 调用此函数前需确保i2cObj对象已经处于open状态
返回值:
CCS811对象创建成功,返回CCS811对象;CCS811对象创建失败,抛出Exception
示例代码:
from driver import I2C
import ccs811
i2cObj = I2C()
i2cObj.open("ccs811")
devObj = ccs811.CCS811(i2cObj)
print("ccs811 inited!")
1
2
3
4
5
6
7
输出:
ccs811 inited!
1
geteCO2 - 获取空气中二氧化碳浓度
函数功能:
获取空气中二氧化碳浓度
函数原型:
CCS811.geteCO2()
参数说明:
无
返回值:
返回值 类型 说明
status 整型 0-无效数值;
1-有效数值
eco2 整型 单位:ppm,>=400
示例:
from driver import I2C
import ccs811
import utime
i2cObj = I2C()
i2cObj.open("ccs811")
devObj = ccs811.CCS811(i2cObj)
print("ccs811 inited!")
while True:
status,eco2 = devObj.geteCO2()
if status == 1:
print('eCO2: %d ppm' %(eco2))
utime.sleep(1)
1
2
3
4
5
6
7
8
9
10
11
12
13
输出:
ccs811 inited!
eCO2: 400 ppm
eCO2: 868 ppm
eCO2: 400 ppm
eCO2: 400 ppm
1
2
3
4
5
getTVOC - 获取空气中挥发有机物的浓度
函数功能:
获取空气中挥发有机物的浓度
函数原型:
CCS811.getTVOC()
参数说明:
无
返回值:
返回值 类型 说明
status 整型 0-无效数值;
1-有效数值
tvoc 整型 单位:ppb
示例:
from driver import I2C
import ccs811
import utime
i2cObj = I2C()
i2cObj.open("ccs811")
devObj = ccs811.CCS811(i2cObj)
print("ccs811 inited!")
while True:
status,tvoc = devObj.getTVOC()
if status == 1:
print('TVOC: %d ppb' %(tvoc))
utime.sleep(1)
1
2
3
4
5
6
7
8
9
10
11
12
13
输出:
ccs811 inited!
TVOC: 0 ppb
TVOC: 0 ppb
TVOC: 0 ppb
TVOC: 3 ppb
TVOC: 734 ppb
TVOC: 68 ppb
TVOC: 129 ppb
TVOC: 62 ppb
TVOC: 25 ppb
1
2
3
4
5
6
7
8
9
10
geteCO2TVOC - 获取空气中二氧化碳以及挥发有机物的浓度
函数功能:
获取空气中二氧化碳以及挥发有机物的浓度
函数原型:
CCS811.geteCO2TVOC()
参数说明:
无
返回值:
返回值 类型 说明
status 整型 0-无效数值;
1-有效数值
eco2 整型 单位:ppm,>=400
tvoc 整型 单位:ppb
示例:
from driver import I2C
import ccs811
import utime
i2cObj = I2C()
i2cObj.open("ccs811")
devObj = ccs811.CCS811(i2cObj)
print("ccs811 inited!")
while True:
status,eco2,tvoc = devObj.geteCO2TVOC()
if status == 1:
print('eCO2: %d ppm, TVOC: %d ppb' % (eco2, tvoc))
utime.sleep(1)
1
2
3
4
5
6
7
8
9
10
11
12
13
输出:
ccs811 inited!
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 1495 ppm, TVOC: 168 ppb
eCO2: 481 ppm, TVOC: 12 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
1
2
3
4
5
6
7
8
9
10
11
12
13
四、接口案例
此使用实例在board.json中定义了名为CCS811的I2C类型的对象。在Python脚本中周期性的获取二氧化碳、有机物浓度并打印在日志中。
代码:
board.json配置
{
"name": "board-name",
"version": "1.0.0",
"io": {
"ccs811": {
"type": "I2C",
"port": 0,
"addrWidth": 7,
"freq": 400000,
"mode": "master",
"devAddr": 90
}
},
"debugLevel": "ERROR",
"repl": "disable"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Python代码
from driver import I2C
import ccs811
import utime
i2cObj = I2C()
i2cObj.open("ccs811")
devObj = ccs811.CCS811(i2cObj)
print("ccs811 inited!")
while True:
status,eco2,tvoc = devObj.geteCO2TVOC()
if status == 1:
print('eCO2: %d ppm, TVOC: %d ppb' % (eco2, tvoc))
utime.sleep(1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
输出:
ccs811 inited!
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 1495 ppm, TVOC: 168 ppb
eCO2: 481 ppm, TVOC: 12 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
eCO2: 400 ppm, TVOC: 0 ppb
1
2
3
4
5
6
7
8
9
10
11
12
13
五、工作原理
INA219传感器寄存器描述如下表所示:
序号 寄存器地址 功能说明 默认值
1 0x00 状态寄存器 –
2 0x01 测量模式寄存器 –
3 0x02 测量结果寄存器 –
4 0x20 硬件ID寄存器 0x81
5 0x21 硬件版本寄存器 0x1X
6 0xF4 APP启动寄存器 –
7 0xFF 软件重启寄存器 –
从下图可以看到CCS811内置I2C通信单元,与MCU进行数据交互。其中nINT和nRESET是可选的,根据实际项目需要而定,nWAKE低电平状态为激活CCS811。
引脚分布如下:
序号 引脚名 功能说明
1 I2C_ADDR 低电平 - I2C地址总线0x5A 高电平 - I2C地址总线0x5B
2 nRESET 复位引脚,低电平有效
3 nINT 阈值中断引脚
4 PWM –
5 Sense –
6 VDD 电源正
7 nWAKE 唤醒引脚,低电平有效
8 AUX –
9 I2C_SDA I2C数据线
10 I2C_SCK I2C时钟线
————————————————
版权声明:本文为CSDN博主「HaaS技术社区」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/HaaSTech/article/details/125048199