【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

相关文章
|
8月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
944 7
|
8月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
704 0
|
8月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
599 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
8月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
669 4
|
9月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
266 4
|
8月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
744 0
|
8月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
1123 0
|
9月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
775 0
|
11月前
|
监控 编译器 Python
如何利用Python杀进程并保持驻留后台检测
本教程介绍如何使用Python编写进程监控与杀进程脚本,结合psutil库实现后台驻留、定时检测并强制终止指定进程。内容涵盖基础杀进程、多进程处理、自动退出机制、管理员权限启动及图形界面设计,并提供将脚本打包为exe的方法,适用于需持续清理顽固进程的场景。
|
10月前
|
存储 安全 数据处理
Python 内置模块 collections 详解
`collections` 是 Python 内置模块,提供多种高效数据类型,如 `namedtuple`、`deque`、`Counter` 等,帮助开发者优化数据处理流程,提升代码可读性与性能,适用于复杂数据结构管理与高效操作场景。
601 0

热门文章

最新文章

推荐镜像

更多