请选择 进入手机版 | 继续访问电脑版
查看: 87|回复: 0

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

[复制链接]

该用户从未签到

13

主题

17

帖子

0

蝴蝶豆

中级会员

最后登录
2019-5-25
发表于 2019-5-16 15:36:15 | 显示全部楼层 |阅读模式
本帖最后由 roc2 于 2019-5-16 15:43 编辑

在本篇文章中,将主要介绍如何使用零知开发板和CCS811空气质量传感器进行CO2和VOC的测量。此外,您将学习如何将CSS811与零知开发板进行连接。
1、说明
MCU:零知开发板-标准板


模块:CCS811空气质量传感器模块

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


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


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


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


选择正确串口,编译上传程序,打开调试窗口即可看到室内CO2和VOC的含量了。
3、测量结果

4、核心代码
  1. #include "SparkFunCCS811.h"

  2. //#define CCS811_ADDR 0x5B //Default I2C Address
  3. #define CCS811_ADDR 0x5A //Alternate I2C Address

  4. CCS811 mySensor(CCS811_ADDR);

  5. void setup()
  6. {
  7.   Serial.begin(9600);
  8.   Serial.println("CCS811 Basic Example");

  9.   //It is recommended to check return status on .begin(), but it is not
  10.   //required.
  11.   CCS811Core::status returnCode = mySensor.begin();
  12.   if (returnCode != CCS811Core::SENSOR_SUCCESS)
  13.   {
  14.     Serial.println(".begin() returned with an error.");
  15.     while (1) //Hang if there was a problem.
  16.         {
  17.                 Serial.println("sensor begin error");
  18.                 delay(200);
  19.         }
  20.   }
  21. }

  22. void loop()
  23. {
  24.   //Check to see if data is ready with .dataAvailable()
  25.   if (mySensor.dataAvailable())
  26.   {
  27.     //If so, have the sensor read and calculate the results.
  28.     //Get them later
  29.     mySensor.readAlgorithmResults();

  30.     Serial.print("CO2[");
  31.     //Returns calculated CO2 reading
  32.     Serial.print(mySensor.getCO2());
  33.     Serial.print("] tVOC[");
  34.     //Returns calculated TVOC reading
  35.     Serial.print(mySensor.getTVOC());
  36.     Serial.print("] millis[");
  37.     //Simply the time since program start
  38.     Serial.print(millis());
  39.     Serial.print("]");
  40.     Serial.println();
  41.   }

  42.   delay(10); //Don't spam the I2C bus
  43. }
复制代码
完整工程可到零知实验室官网获取。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2019-5-27 12:28 , Processed in 0.108907 second(s), 12 queries , MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表