【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

相关文章
|
9天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能质量检测与控制
使用Python实现深度学习模型:智能质量检测与控制 【10月更文挑战第8天】
102 62
使用Python实现深度学习模型:智能质量检测与控制
|
3天前
|
消息中间件 监控 网络协议
Python中的Socket魔法:如何利用socket模块构建强大的网络通信
本文介绍了Python的`socket`模块,讲解了其基本概念、语法和使用方法。通过简单的TCP服务器和客户端示例,展示了如何创建、绑定、监听、接受连接及发送/接收数据。进一步探讨了多用户聊天室的实现,并介绍了非阻塞IO和多路复用技术以提高并发处理能力。最后,讨论了`socket`模块在现代网络编程中的应用及其与其他通信方式的关系。
|
6天前
|
Python
Python 中常用的内置模块之`re`模块
【10月更文挑战第11天】 `re` 模块是 Python 内置的正则表达式处理工具,支持模式匹配、搜索、替换等功能。通过 `search`、`match`、`findall` 和 `sub` 等函数,结合正则表达式的元字符、分组、贪婪模式等特性,可高效完成文本处理任务。示例代码展示了基本用法,帮助快速上手。
9 1
|
6天前
|
JSON 数据格式 Python
Python基础-常用内置模块
【10月更文挑战第11天】 Python 内置模块丰富,涵盖系统交互、时间处理、数学运算、正则表达式、数据序列化等功能,如 `sys`、`os`、`time`、`datetime`、`random`、`math`、`re`、`json`、`pickle` 和 `csv` 等,极大提升了开发效率和代码质量。
8 1
|
10天前
|
Python
Python实用记录(四):os模块-去后缀或者改后缀/指定目录下图片或者子目录图片写入txt/csv
本文介绍了如何使用Python的os模块来操作文件,包括更改文件后缀、分割文件路径和后缀、将指定目录下的所有图片写入txt文档,以及将指定目录下所有子目录中的图片写入csv文档,并为每个子目录分配一个标签。
10 1
|
7天前
|
机器学习/深度学习 缓存 Linux
python环境学习:pip介绍,pip 和 conda的区别和联系。哪个更好使用?pip创建虚拟环境并解释venv模块,pip的常用命令,conda的常用命令。
本文介绍了Python的包管理工具pip和环境管理器conda的区别与联系。pip主要用于安装和管理Python包,而conda不仅管理Python包,还能管理其他语言的包,并提供强大的环境管理功能。文章还讨论了pip创建虚拟环境的方法,以及pip和conda的常用命令。作者推荐使用conda安装科学计算和数据分析包,而pip则用于安装无法通过conda获取的包。
24 0
|
8天前
|
运维 安全 网络协议
Python 网络编程:端口检测与IP解析
本文介绍了使用Python进行网络编程的两个重要技能:检查端口状态和根据IP地址解析主机名。通过`socket`库实现端口扫描和主机名解析的功能,并提供了详细的示例代码。文章最后还展示了如何整合这两部分代码,实现一个简单的命令行端口扫描器,适用于网络故障排查和安全审计。
13 0
|
10天前
|
数据处理 Python
Python读取大文件的“坑“与内存占用检测
Python读取大文件的“坑“与内存占用检测
25 0
|
11天前
|
安全 Java Python
基于python-django的Java网站全站漏洞检测系统
基于python-django的Java网站全站漏洞检测系统
23 0
|
11天前
|
Python
Python中tqdm模块的常用方法和示例
`tqdm` 是一个快速、可扩展的Python进度条库,适用于长循环中添加进度提示。通过封装迭代器 `tqdm(iterator)`,可以轻松实现进度显示。支持自定义描述、宽度及嵌套进度条,适用于多种迭代对象。在Jupyter notebook中,可自动调整显示效果。
19 0