【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

相关文章
|
6天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
19 5
|
14天前
|
机器学习/深度学习 PyTorch TensorFlow
使用Python实现智能食品质量检测的深度学习模型
使用Python实现智能食品质量检测的深度学习模型
61 1
|
16天前
|
Java 程序员 开发者
Python的gc模块
Python的gc模块
|
19天前
|
数据采集 Web App开发 JavaScript
python-selenium模块详解!!!
Selenium 是一个强大的自动化测试工具,支持 Python 调用浏览器进行网页抓取。本文介绍了 Selenium 的安装、基本使用、元素定位、高级操作等内容。主要内容包括:发送请求、加载网页、元素定位、处理 Cookie、无头浏览器设置、页面等待、窗口和 iframe 切换等。通过示例代码帮助读者快速掌握 Selenium 的核心功能。
62 5
|
18天前
|
Python
SciPy 教程 之 SciPy 模块列表 16
SciPy教程之SciPy模块列表16 - 单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了力学单位的使用,如牛顿、磅力和千克力等。
15 0
|
18天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy 教程之 SciPy 模块列表 15 - 功率单位。常量模块包含多种单位,如公制、质量、时间等。功率单位中,1 瓦特定义为 1 焦耳/秒,表示每秒转换或耗散的能量速率。示例代码展示了如何使用 `constants` 模块获取马力值(745.6998715822701)。
15 0
|
19天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy教程之SciPy模块列表15:单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。功率单位以瓦特(W)表示,1W=1J/s。示例代码展示了如何使用`constants`模块获取马力(hp)的值,结果为745.6998715822701。
16 0
|
20天前
|
Python
SciPy 教程 之 SciPy 模块列表 13
SciPy 教程之 SciPy 模块列表 13 - 单位类型。常量模块包含多种单位:公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例:`constants.zero_Celsius` 返回 273.15 开尔文,`constants.degree_Fahrenheit` 返回 0.5555555555555556。
14 0
|
4天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
4天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!