风筝
发表于: 2018-4-18 22:31:10 | 显示全部楼层

TVOC-and-CO2-Measurement-using-Arduino-and-CCS811-Air-Quality-Sensor.jpg


“可悲的是,我们以进步的名义,污染了空气、水、土壤和我们吃的食物”。因此,由于各种污染,现在监测空气质量至关重要。为设计空气质量监测系统,我们需要一些耐用可靠的空气质量传感器。虽然有许多空气质量的参数,但最重要的参数是二氧化碳和TVOC。因此,为了测量CO2和TVOC,我们使用了CCS811空气质量传感器。


在本篇文章中,我们将主要介绍如何使用Arduino开发板和CCS811空气质量传感器进行TVOC和CO2的测量。此外,您将学习如何将CSS811与Arduino进行连接。


所需的材料

●     Arduino UNO开发板

●     CCS811空气质量传感器

●     电位器(10k)

●     LCD液晶模块1602

●     面包板

●     连接导线


电路原理图

Circuit-diagram-for-TVOC-and-CO2-Measurement-using-Arduino-and-CCS811-Air-Qualit.png


CCS811空气质量传感器

CCS811空气质量传感器是一款超低功耗数字气体传感器,集成了MOX(金属氧化物)气体传感器,可通过集成的MCU(微控制器单元)检测各种VOC(挥发性有机化合物),用于室内空气质量监测。 MCU由ADC(模数转换器)和I2C接口组成。它基于ams独特的微型热板技术,为低功耗的气体传感器提供高度可靠的解决方案。

CCS811-Air-Quality-Sensor.jpg

在我们的电路中,我们使用该传感器来感测环境中TVOC和CO2的含量,并在LCD模块1602上显示数据。


引脚配置说明

CCS811空气质量传感器的引脚配置说明如下表所示:

序号
引脚名称
描述
1
VIN 输入电源(3.3v至5v)
2
3V3 3.3V输出引脚供外部使用
3
GND 电源地
4
SDA I2C时钟引脚
5
SCL I2C数据引脚
6
WAKE 传感器的唤醒引脚,应接地以便与传感器通信
7
RST 复位引脚:当接地时,传感器自行复位
8
INT 这是中断输出引脚,用于检测新的读数何时准备好或读数变得过高或过低

应用环境

●     智能手机

●     可穿戴式设备

●     家庭和楼宇自动化

●     配饰品


代码和说明

在本文的末尾处给出了使用Arduino开发板和CCS811空气质量传感器进行TVOC和CO2测量的完整代码。


在下面的代码中,我们定义了用于1602 LCD和CCS811空气质量传感器的库。要下载CCS811的“Adafruit_CCS811.h”库,请点击此链接

  1. #include <LiquidCrystal.h>
  2. #include "Adafruit_CCS811.h"
复制代码

下面的代码中我们定义了与Arduino连接的LCD模块1602的引脚。

  1. LiquidCrystal lcd(12, 13, 8, 9, 10, 11); /// REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN
  2. Adafruit_CCS811 ccs;
复制代码

以下的代码中,我们对LCD和CCS811空气质量传感器进行了设置,并对其进行校准以显示正确的温度,如下所示

  1. void setup() {
  2.   lcd.begin(16, 2);
  3.   ccs.begin();
  4.   //calibrate temperature sensor
  5.   while(!ccs.available());
  6.   float temp = ccs.calculateTemperature();
  7.   ccs.setTempOffset(temp - 25.0);
  8. }
复制代码

在下面的代码中,我们使用函数“ccs.available()”(函数已经在库中定义)来检查是否有一些数据传入。当我们获得数据时,我们可以计算温度并在LCD模块1602上显示。

此外,如果CCS可用并且ccs.readData()返回false,那么我们使用ccs.geteCO2()ccs.getTVOC()的TVOC值获得CO2值,如下面的代码所示。因此,我们可以使用CCS811空气质量传感器获得了空气质量参数的值。

  1. void loop() {
  2.   if(ccs.available()){
  3.     float temp = ccs.calculateTemperature();

  4.     if(!ccs.readData()){
  5.       int co2 = ccs.geteCO2();
  6.       int tvoc = ccs.getTVOC();
  7.       lcd.setCursor(0, 0);
  8.       lcd.print(String ("CO2:")+ String (co2)+String(" PPM"));
  9.       lcd.setCursor(0, 1);
  10.       lcd.print(String ("TVOC:")+ String (tvoc)+String(" PPB "));
  11.       lcd.print(String("T:"+String (int(temp)))+String("C"));
  12.       delay(3000);
  13.       lcd.clear();     
  14.     }

  15.     else{
  16.       lcd.print("ERROR");
  17.       while(1);
  18.     }
  19.   }
  20. }
复制代码

文章末尾给出了完整的Arduino代码。代码很简单,所有的工作都由其库本身完成,我们使用CCS库中定义的函数来获取CO2和TOVC的值。


代码

本文使用的完整代码如下: main.rar (529 Bytes, 下载次数: 306)

跳转到指定楼层
Rush
发表于: 2018-10-19 19:44:29 | 显示全部楼层

我连接了传感器烧了例子代码 但是传感器显示Failed to start sensor! Please check your wiring.
回复

使用道具 举报

风筝
发表于: 2018-10-19 20:43:00 | 显示全部楼层

Rush 发表于 2018-10-19 19:44
我连接了传感器烧了例子代码 但是传感器显示Failed to start sensor! Please check your wiring.
...

提示是接线错误 是否按照原理图方式接线 使用的模块是一样的么
回复

使用道具 举报

Rush
发表于: 2018-10-19 20:58:44 | 显示全部楼层

我没有接1602和电位器 我直接用了库文件里面的例子代码 使用的模块是ccs811 但是厂商不同 可以qq交流吗 我qq343638680 谢谢楼主
回复

使用道具 举报

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

本版积分规则

主题 700 | 回复: 1479



手机版|

GMT+8, 2024-3-29 19:50 , Processed in 0.096600 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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