• 物联网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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 输出:
    ccs811 inited!
    
    • 1

    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)
    
    • 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 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)
    
    • 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 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)
    
    • 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

    四、接口案例

    # 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)
    
    • 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传感器寄存器描述如下表所示:

    序号寄存器地址功能说明默认值
    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传感器模块购买

  • 相关阅读:
    如何使用VSCode来查看二进制文件
    如何将本地项目推送到gitee仓库
    【云原生】Docker-compose单机容器集群编排
    【网络安全】文件包含漏洞解析
    架构篇(五)可扩展架构
    有PEG-Biotin参与的(CAS:1778736-18-7)Biotin-PEG4-OH广泛用于分子靶点检测
    cocos 2.4*版本的基础使用笔记分享(一)
    julia 笔记:复合类型 struct
    如何让PowerShell invoke-restmethod 和 invoke-webrequest 忽略不工作的自签名证书
    C++_pen_静态与常量
  • 原文地址:https://blog.csdn.net/weixin_39363464/article/details/133796686