赞
踩
本文章参考自 FlexLua 官网,涉及CCS811/ENS160/SGP30 这三款不同的 Tvoc 传感器。
注意:CCS811已于2022年初停产,该传感器厂家提供了ENS160作为CCS811的替代品。所以本教程在原来CCS811基础上增加了ENS160和SGP30这两种传感器相关内容,由于之前CCS811突然停产导致其价格大涨,虽然厂家提供了ENS160替代品,但为了开发者能有更多的选择,我们另外增加了Sensirion公司的SGP30传感器,这两种传感器开发者甚至无需关注其差别,只要将任意一种传感器和开发板的IIc接口(SCL,SDA)连接,代码会自动识别其种类并输出Tvoc和eCO2值。
通过CCS811/ENS160/SGP30传感器模块测量室内空气质量(IAQ),并将测量到的Tvoc(单位ppb)、eCO2(单位ppm)数据打印输出在电脑串口调试终端上面。
注意:推荐使用 SGP30,CCS811已被其芯片厂家停产。
Tvoc: 室内空气品质的研究人员通常把他们采样分析的所有室内有机气态物质称为TVOC,它是Volatile Organic Compound三个词第一个字母的缩写,各种被测量的VOC被总称为总挥发性有机物TVOC(Total Volatile Organic Compounds)。TVOC是三种影响室内空气品质污染中影响较为严重的一种。TVOC是指室温下饱和蒸气压超过了133.32pa的有机物,其沸点在50℃至250℃,在常温下可以蒸发的形式存在于空气中,它的毒性、刺激性、致癌性和特殊的气味性,会影响皮肤和黏膜,对人体产生急性损害。世界卫生组织(WHO)、美国国家科学院/国家研究理事会(NAS/NRC)等机构一直强调TVOC是一类重要的空气污染物。美国环境署(EPA)对VOC的定义是:除了一氧化碳,二氧化碳,碳酸,金属碳化物,碳酸盐以及碳酸铵外,任何参与大气中光化学反应的含碳化合物。
eCO2: CCS811传感器测量出的等效二氧化碳浓度。
PPb(part per billion),是一个无量纲量,在溶液中是用溶质质量占全部溶液质量的十亿分比来表示的浓度,也称十亿分比浓度(1/10,十亿分之一,10-9),经常用于浓度非常小的场合下。与之相似的还有ppm(part per million,百万分之一),ppb=1/1000ppm。
以上线路图同样适用于ENS160和SGP30模块,并且只用接VCC,GND,SDA,SCL这四个引脚即可
--配置USB以虚拟串口模式工作,这样调用print()函数就会在电脑串口终端打印输出
LIB_UsbConfig("CDC")
--配置CCS811气体传感器开始工作,占用IIC0接口,每1秒出一组测量结果
LIB_CCS811Config("IIC0", "1S")
--开始大循环
while(GC(1) == true)
do
--查询传感器是否出数
flag, tvoc, eCO2, raw_i, raw_u = LIB_CCS811GetResult()
if flag == 1 then
--打印Tvoc(单位ppb)和eCO2(单位ppm)的值以及rawdata数据i和u
print(string.format("Tvoc:%d, eCO2:%d, i=%d, u=%d", tvoc,eCO2,raw_i,raw_u))
end
end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。
以下代码不区分ENS160和SGP30,只要VCC,GND,SCL,SDA连上ShineBlink开发板之后,运行以下代码ShineBlink开发板会自动识别是ENS160还是SGP30。
--配置USB以虚拟串口模式工作,这样调用print()函数就会在电脑串口终端打印输出
LIB_UsbConfig("CDC")
--配置ENS160/SGP30气体传感器开始工作,占用IIC0接口,每1秒出一组测量结果
LIB_TVOCConfig("IIC0", "1S")
--开始大循环
while(GC(1) == true)
do
--查询传感器是否出数
flag, tvoc, eCO2, AQI, ValidityFlag = LIB_TVOCGetResult()
if flag == 1 then
--打印Tvoc(单位ppb)和eCO2(单位ppm)的值以及AQI空气质量等级
--如果接的传感器是SGP30,则AQI和ValidityFlag无用,它们将一直是固定的0值
print(string.format("Tvoc:%d, eCO2:%d, AQI=%d, ValFlag=%d", tvoc,eCO2,AQI,ValidityFlag))
end
end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。