物联网AI MicroPython传感器学习 之 CCS811空气质量检测传感器

学物联网,来万物简单IoT物联网!!在这里插入图片描述

一、产品简介

通过CCS811传感器模块可以测量环境中TVOC(总挥发性有机物质)浓度和eCO2(二氧化碳)浓度,作为衡量空气质量(IAQ)的指标。
image.png
引脚定义

  • VCC:3.3V
  • GND:接地
  • SCL:I2C时钟
  • SDA:I2C数字
  • WAK:接地
  • INT:NC(阈值中断引脚)
  • RST:NC(复位引脚)
  • ADD:NC

二、技术参数

  • 供电电压:3.3V
  • 接口:I2C接口
  • 分辨率:14位
  • 工作电流:20mA
  • 睡眠模式的电流:3uA
  • 模块尺寸:15mm * 21mm

三、软件接口

CCS811(i2cObj) - 创建CCS811驱动对象

  • 函数原型:

ccs811Obj = CCS811(i2cObj)

  • 参数说明:
参数类型必选参数?说明
i2cObjI2C传入i2c对象
  • 返回值:
    CCS811对象创建成功,返回CCS811对象;CCS811对象创建失败,抛出Exception
  • 示例代码:
from machine import I2C,Pin          # 驱动库
import ccs811                        # CCS811空气质量传感器驱动库# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("ccs811 inited!")
ccs811Obj = ccs811.CCS811(i2cObj)
  • 输出:
ccs811 inited!

geteCO2 - 获取空气中二氧化碳浓度

  • 函数功能:
    获取空气中二氧化碳浓度
  • 函数原型:

CCS811.geteCO2()

  • 参数说明:

  • 返回值:
    | 返回值 | 类型 | 说明 |
    | — | — | — |
    | status | 整型 | 0-无效数值;
    1-有效数值 |
    | eco2 | 整型 | 单位:ppm,>=400 |

  • 示例:

from machine import I2C,Pin          # 驱动库
import ccs811                        # CCS811空气质量传感器驱动库
import utime# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("ccs811 inited!")
ccs811Obj = ccs811.CCS811(i2cObj)
while True:status,eco2 = ccs811Obj.geteCO2()if status == 1:print('eCO2: %d ppm' %(eco2))utime.sleep(1)
  • 输出:
ccs811 inited!
eCO2: 400 ppm
eCO2: 868 ppm
eCO2: 400 ppm
eCO2: 400 ppm

getTVOC - 获取空气中挥发有机物的浓度

  • 函数功能:
    获取空气中挥发有机物的浓度
  • 函数原型:

CCS811.getTVOC()

  • 参数说明:
  • 返回值:
返回值类型说明
status整型0 - 无效数值
1 - 有效数值
tvoc整型单位:ppb
  • 示例:
from machine import I2C,Pin          # 驱动库
import ccs811                        # CCS811空气质量传感器驱动库
import utime# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("ccs811 inited!")
ccs811Obj = ccs811.CCS811(i2cObj)
while True:status,tvoc = ccs811Obj.getTVOC()if status == 1:print('TVOC: %d ppb' %(tvoc))utime.sleep(1)
  • 输出:
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

geteCO2TVOC - 获取空气中二氧化碳以及挥发有机物的浓度

  • 函数功能:
    获取空气中二氧化碳以及挥发有机物的浓度
  • 函数原型:

CCS811.geteCO2TVOC()

  • 参数说明:
  • 返回值:
返回值类型说明
status整型0-无效数值
1-有效数值
eco2整型单位:ppm , >=400
tvoc整型单位:ppb
  • 示例:
from machine import I2C,Pin          # 驱动库
import ccs811                        # CCS811空气质量传感器驱动库
import utime# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("ccs811 inited!")
ccs811Obj = ccs811.CCS811(i2cObj)
while True:status,eco2,tvoc = ccs811Obj.geteCO2TVOC()if status == 1:print('eCO2: %d ppm, TVOC: %d ppb' % (eco2, tvoc))utime.sleep(1)
  • 输出:
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

四、接口案例

# Python代码
from machine import I2C,Pin          # 驱动库
import ccs811                        # CCS811空气质量传感器驱动库
import utime# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("ccs811 inited!")
ccs811Obj = ccs811.CCS811(i2cObj)
while True:status,eco2,tvoc = ccs811Obj.geteCO2TVOC()if status == 1:print('eCO2: %d ppm, TVOC: %d ppb' % (eco2, tvoc))utime.sleep(1)
  • 输出:
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

五、工作原理

INA219传感器寄存器描述如下表所示:

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

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

序号引脚名功能说明
1I2C_ADDR低电平 - I2C地址总线0x5A
高电平 - I2C地址总线0x5B
2nRESET复位引脚,低电平有效
3nINT阈值中断引脚
4PWM
5Sense
6VDD电源正
7nWAKE唤醒引脚,低电平有效
8AUX
9I2C_SDAI2C数据线
10I2C_SCKI2C时钟线

参考文献及购买链接

[1] CCS811传感器DATASHEET
[2] CCS811传感器模块购买

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/102950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊,速卖通,敦煌产品测评补单攻略:低成本、高安全实操指南

随着电商平台的发展和消费者对产品质量的要求提升,测评补单成为了商家们提升销售和用户口碑的关键环节。然而,如何在保持成本低廉的同时确保操作安全,一直是卖家们面临的挑战。今天林哥分享一些实用的技巧和策略,帮助卖家们产品的…

精品Python的美食推荐系统厨房点餐订餐

《[含文档PPT源码等]精品Python的美食推荐系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等! 软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术:JavaScript、VUE.…

Linux系统卡顿处理记录(Debian)

问题现象描述 现象linux操作系统卡顿(就是很慢),但是系统任然能够使用。 文章一步步的排查并且定位问题。 排查步骤 1. 使用top命令查看CPU是否占用过高。(未发现)排除问题 2. 使用df -h查看硬盘是否被占满。&#…

竞赛 深度学习 opencv python 实现中国交通标志识别

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 🔥 优质…

Kubernetes使用OkHttp客户端进行网络负载均衡

在一次内部Java服务审计中,我们发现一些请求没有在Kubernetes(K8s)网络上正确地实现负载均衡。导致我们深入研究的问题是HTTP 5xx错误率的急剧上升,由于CPU使用率非常高,垃圾收集事件的数量很多以及超时,但…

ctfshow-ssti

web361 名字就是考点,所以注入点就是name 先测试一下存不存在ssti漏洞 利用os模块,脚本 查看一下子类的集合 ?name{{.__class__.__base__.__subclasses__()}} 看看有没有os模块,查找os 利用这个类,用脚本跑他的位置 import …

LeetCode(力扣)416. 分割等和子集Python

LeetCode416. 分割等和子集 题目链接代码 题目链接 https://leetcode.cn/problems/partition-equal-subset-sum/ 代码 class Solution:def canPartition(self, nums: List[int]) -> bool:sum 0dp [0]*10001for num in nums:sum numif sum % 2 1:return Falsetarget …

arm实验

设置按键中断,按键1按下,LED亮,再次按下,灭 按键2按下,蜂鸣器叫,再次按下,停 按键3按下,风扇转,再次按下,停 头文件 #ifndef __CTRL_KEY_H__ #define __CT…

Learning Sample Relationship for Exposure Correction 论文阅读笔记

这是中科大发表在CVPR2023的一篇论文,提出了一个module和一个损失项,能够提高现有exposure correction网络的性能。这已经是最近第三次看到这种论文了,前两篇分别是CVPR2022的ENC(和这篇文章是同一个一作作者)和CVPR20…

cap分布式理论

cap 理论 cap是实现分布式系统的思想。 由3个元素组成。 Consistency(一致性) 在任何对等 server 上读取的数据都是最新版,不会读取出旧数据。比如 zookeeper 集群,从任何一台节点读取出来的数据是一致的。 Availability&…

Unity基于C#事件委托机制

事件委托是一种用于实现观察者模式的设计模式,它允许对象在发生特定事件时通知其他对象。在Unity中,事件委托机制为开发者提供了一种简单而有效的方式来处理游戏中的事件和交互。 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的…

解决方案 | 法大大电子签精准击破销售场景签约难题

新商业形态及新交易模式不断涌现,电子签已经成为现代商业活动中不可或缺的一部分。特别是在销售场景中,电子签的应用不仅可以提高销售效率,还可以降低成本,提高客户满意度。本文将详细分析电子签在销售场景中的应用价值能力&#…

快速解决“找不到msvcr120.dll无法执行代码”问题,总结5解决方法

计算机已经成为我们生活和工作中不可或缺的一部分。然而,在使用计算机的过程中,我们常常会遇到各种问题,其中之一就是找不到msvcr120.dll文件。这个问题可能会可能导致计算机程序软件,游戏无法正常运行,影响到我们的工…

(十四)VBA常用基础知识:当前excel文件所有sheet循环,获取sheet名,获取最大行数最大列数

获取当前excel的所有sheet以及sheet名 Sub test()Dim ws As WorksheetFor Each ws In Worksheetsws.ActivateDebug.Print ws.NameNext ws End Sub 输出结果: Sheet1 Sheet2 Sheet3 Sheet4 Sheet52.获取最大行数 首先要明白取最大行的方式,为什么这样取…

ceph 分布式存储与部署

目录 一、存储基础: 1.单机存储设备: 2. 单机存储的问题: 3. 商业存储解决方案: 4. 分布式存储: 5. 分布式存储的类型: 二、Ceph 简介: 三、Ceph 优势: 四、Ceph 架构&#xff1a…

01 时钟配置初始化,debug

1. 开启debug series,否则只能下载一次,再次下载要配置boot 2.f0外部时钟配置 h750 配置 实测可用

FPGA面试题(1)

一.FPGA内部结构 可编程I/OPLL锁相环(其作用为:分频,倍频,相位调节、占空比)逻辑阵列块LAB(每个LAB由16个逻辑器件LE组成,每个LE包括一个查找表LUT和一个RAM构成。Cyclone IV EP4CE6F17C8中包含…

【Spring AOP】统一异常处理

统一异常处理 统⼀异常处理使⽤的是 ControllerAdvice ExceptionHandler 来实现的, 类上面加上 ControllerAdvice 注解表示控制器通知类方法上面加上 ExceptionHandler 表示异常处理器,并添加异常返回的业务代码 两个结合表示当出现异常的时候执⾏某个…

Android终极大招之全面取代drawble文件实现View圆角背景样式的新方案

简介 最近一直忙于音视频SDK的开发,遇到很多问题,简单来说,就是怎么让别人接入SDK时越简单越好。相信大多数Android开发都会遇到一个场景,给TextView或Button添加背景颜色,修改圆角,描边等需求。一看到这样…

React 组件传 children 的各种方案

自定义组件的时候往往需要传 children,由于写法比较多样,我就总结了一下。 方案列表 1. 类组件1.1 类组件,不使用解构1.2 类组件,使用解构 2. 函数组件2.1 函数组件,不使用解构2.2 函数组件,外部解构2.3 函…