查看: 117|回复: 0

零知开源分享-空气质量传感器CCS811获取CO2和VOC数据

[复制链接]
  • TA的每日心情
    奋斗
    2019-5-16 14:47
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2019-5-16 14:46 | 显示全部楼层 |阅读模式
    在本篇文章中,将主要介绍如何使用零知开发板和CCS811空气质量传感器进行CO2和VOC的测量。此外,您将学习如何将CSS811与零知开发板进行连接。
    1、说明
    MCU:零知开发板-标准板

    好看的标准板 (2).jpg

    模块:CCS811空气质量传感器模块
    CCS811模块_副本.jpg
    CCS811空气质量传感器是一款超低功耗数字气体传感器,集成了MOX(金属氧化物)气体传感器,可通过集成的MCU(微控制器单元)检测各种VOC(挥发性有机化合物),用于室内空气质量监测。 我们使用该传感器来感测环境中VOC和CO2的含量。
    开发工具:零知开源开发工具

    开发工具界面.png
    2、操作步骤
    (1)连接
    通过查看模块的数据手册,可以发现以下表格:

    引脚说明.png
    一般需要用到的引脚有:SDA、SCL、ADR、INT、WAK、VCC、GND。这里需要说明一下,SDA和SCL大家比较熟悉,但是INT和WAK就比较少见,在这款模块中,INT相当于复位引脚,CCS811芯片内部集成的单片机程序跑飞之后可以将该引脚接地复位,同时需要WAK为低电平的时候SDA、SCL才能正常通信。
    所以硬件连接需要把WAK引脚接低电平,如下所示:

    接线.png
    (2)上传程序
    硬件连接好后就可以打开我们的零知开源开发工具,找到以下示例:

    气体传感器界面.png
    选择正确串口,编译上传程序,打开调试窗口即可看到室内CO2和VOC的含量了。
    3、测量结果
    结果 (2).png
    4、核心代码

    kittenblock中小学创客名师推荐的图形化编程软件

    #include "SparkFunCCS811.h"
    
    //#define CCS811_ADDR 0x5B //Default I2C Address
    #define CCS811_ADDR 0x5A //Alternate I2C Address
    
    CCS811 mySensor(CCS811_ADDR);
    
    void setup()
    {
      Serial.begin(9600);
      Serial.println("CCS811 Basic Example");
    
      //It is recommended to check return status on .begin(), but it is not
      //required.
      CCS811Core::status returnCode = mySensor.begin();
      if (returnCode != CCS811Core::SENSOR_SUCCESS)
      {
        Serial.println(".begin() returned with an error.");
        while (1) //Hang if there was a problem.
            {
                    Serial.println("sensor begin error");
                    delay(200);
            }
      }
    }
    
    void loop()
    {
      //Check to see if data is ready with .dataAvailable()
      if (mySensor.dataAvailable())
      {
        //If so, have the sensor read and calculate the results.
        //Get them later
        mySensor.readAlgorithmResults();
    
        Serial.print("CO2[");
        //Returns calculated CO2 reading
        Serial.print(mySensor.getCO2());
        Serial.print("] tVOC[");
        //Returns calculated TVOC reading
        Serial.print(mySensor.getTVOC());
        Serial.print("] millis[");
        //Simply the time since program start
        Serial.print(millis());
        Serial.print("]");
        Serial.println();
      }
    
      delay(10); //Don't spam the I2C bus
    }

    完整工程可到零知实验室官网免费获取。
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    体验OneNET4.0,一起来拼开发板
    体验OneNET4.0,一起来拼
    一、 活动时间2019年04月09日-2019年6月30日 二、活动链接1.登录Arduino中文社区账
    用电阻式压力传感器(SEN0294)做一个简单的杯垫
    用电阻式压力传感器(SEN0
    “多喝开水”这句话在目前似乎已经成了一种戏谑的玩笑话,可是多喝水还是很有好处
    Arduino接欧姆龙编码器
    Arduino接欧姆龙编码器
    请问各位该欧姆龙的编码器如何接到arduino上,我需要接收此编码器脉冲计算电机走的
    教你如何自制一款遥控器,让你的项目变成遥控的!!!
    教你如何自制一款遥控器,
    自从上次制作了一块集成了电机驱动的最小板之后,我就发现现在市场上一块便宜且功能又
    新人有偿求助。。关于DS18B20温度传感器代码烧录时的错误
    新人有偿求助。。关于DS18
    我在学习DS18B20温度传感器时由于使用的是wifiduino出现了以下错误,求大佬指教[/bac
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表