当前位置:   article > 正文

【HaaS Python硬件积木】空气质量检测模块 - CCS811

ccs811

空气质量检测模块 - 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)

  • 参数说明:
参数类型必选参数?说明
i2cObjI2C调用此函数前需确保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传感器寄存器描述如下表所示:

序号寄存器地址功能说明默认值
10x00状态寄存器
20x01测量模式寄存器
30x02测量结果寄存器
40x20硬件ID寄存器0x81
50x21硬件版本寄存器0x1X
60xF4APP启动寄存器
70xFF软件重启寄存器

从下图可以看到CCS811内置I2C通信单元,与MCU进行数据交互。其中nINT和nRESET是可选的,根据实际项目需要而定,nWAKE低电平状态为激活CCS811。

在这里插入图片描述

引脚分布如下:

序号引脚名功能说明
1I2C_ADDR低电平 - I2C地址总线0x5A 高电平 - I2C地址总线0x5B
2nRESET复位引脚,低电平有效
3nINT阈值中断引脚
4PWM
5Sense
6VDD电源正
7nWAKE唤醒引脚,低电平有效
8AUX
9I2C_SDAI2C数据线
10I2C_SCKI2C时钟线
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/211668
推荐阅读
相关标签
  

闽ICP备14008679号