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

简介: 【HaaS Python硬件积木】空气质量检测模块 - 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)


参数说明:

参数 类型 必选参数? 说明

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

相关文章
|
23小时前
|
机器学习/深度学习 算法 数据可视化
Python用KNN(K-近邻)回归、分类、异常值检测预测房价、最优K值选取、误差评估可视化
Python用KNN(K-近邻)回归、分类、异常值检测预测房价、最优K值选取、误差评估可视化
|
3天前
|
数据采集 关系型数据库 BI
Python路面平整度检测车辆数据——速度修正
Python路面平整度检测车辆数据——速度修正
|
5天前
|
人工智能 安全 Java
Python 多线程编程实战:threading 模块的最佳实践
Python 多线程编程实战:threading 模块的最佳实践
121 5
|
5天前
|
人工智能 数据库 开发者
Python中的atexit模块:优雅地处理程序退出
Python中的atexit模块:优雅地处理程序退出
8 3
|
8天前
|
存储 开发者 Python
Python中的argparse模块:命令行参数解析的利器
Python中的argparse模块:命令行参数解析的利器
16 2
|
8天前
|
开发者 Python
Python的os模块详解
Python的os模块详解
16 0
|
11天前
|
数据挖掘 API 数据安全/隐私保护
python请求模块requests如何添加代理ip
python请求模块requests如何添加代理ip
|
13天前
|
测试技术 Python
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
|
13天前
|
Serverless 开发者 Python
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
42 1
|
13天前
|
数据采集 存储 安全
python检测代理ip是否可用的方法
python检测代理ip是否可用的方法