10241|1

85

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

零知开源分享-使用SGP30模块进行空气质量监测 [复制链接]

本篇文章中将使用SGP30模块对空气中的VOC和CO2进行监测,获取空气质量状况。
1、说明
MCU:零知-标准板


模块:SGP30多像素气体传感器模块(盛思锐)

注意:模块的供电标准为1.8V,所以使用时需要接电平转换才可以接到开发板中。本篇文章中将使用SGP30模块对空气中的VOC和CO2进行监测,获取空气质量状况。
1、说明
MCU:零知-标准板


模块:SGP30多像素气体传感器模块(盛思锐)

注意:模块的供电标准为1.8V,所以使用时需要接电平转换才可以接到开发板中。
本篇文章中将使用SGP30模块对空气中的VOC和CO2进行监测,获取空气质量状况。
1、说明
MCU:零知-标准板


模块:SGP30多像素气体传感器模块(盛思锐)

注意:模块的供电标准为1.8V,所以使用时需要接电平转换才可以接到开发板中。
2、测试demo
  1. /*
  2. *        空气质量:VOC,CO2测量
  3. *         零知开源-[url]www.lingzhilab.com[/url]
  4. */
  5.   
  6. #include "Adafruit_SGP30.h"
  7.   
  8. Adafruit_SGP30 sgp;
  9.   
  10. /* return absolute humidity [mg/m^3] with approximation formula
  11. * @param temperature [°C]
  12. * @param humidity [%RH]
  13. */
  14. uint32_t getAbsoluteHumidity(float temperature, float humidity) {
  15.     // approximation formula from Sensirion SGP30 Driver Integration chapter 3.15
  16.     const float absoluteHumidity = 216.7f * ((humidity / 100.0f) * 6.112f * exp((17.62f * temperature) / (243.12f + temperature)) / (273.15f + temperature)); // [g/m^3]
  17.     const uint32_t absoluteHumidityScaled = static_cast<uint32_t>(1000.0f * absoluteHumidity); // [mg/m^3]
  18.     return absoluteHumidityScaled;
  19. }
  20.   
  21. void setup() {
  22.   Serial.begin(9600);
  23.   Serial.println("SGP30 test");
  24.   
  25.   if (! sgp.begin()){
  26.     Serial.println("Sensor not found :(");
  27.     while (1);
  28.   }
  29.   Serial.print("Found SGP30 serial #");
  30.   Serial.print(sgp.serialnumber[0], HEX);
  31.   Serial.print(sgp.serialnumber[1], HEX);
  32.   Serial.println(sgp.serialnumber[2], HEX);
  33.   
  34.   // If you have a baseline measurement from before you can assign it to start, to 'self-calibrate'
  35.   //sgp.setIAQBaseline(0x8E68, 0x8F41);  // Will vary for each sensor!
  36. }
  37.   
  38. int counter = 0;
  39. void loop() {
  40.   // If you have a temperature / humidity sensor, you can set the absolute humidity to enable the humditiy compensation for the air quality signals
  41.   //float temperature = 22.1; // [°C]
  42.   //float humidity = 45.2; // [%RH]
  43.   //sgp.setHumidity(getAbsoluteHumidity(temperature, humidity));
  44.   
  45.   if (! sgp.IAQmeasure()) {
  46.     Serial.println("Measurement failed");
  47.     return;
  48.   }
  49.   Serial.print("TVOC "); Serial.print(sgp.TVOC); Serial.print(" ppb\t");
  50.   Serial.print("eCO2 "); Serial.print(sgp.eCO2); Serial.println(" ppm");
  51.   delay(1000);
  52.   
  53.   counter++;
  54.   if (counter == 30) {
  55.     counter = 0;
  56.   
  57.     uint16_t TVOC_base, eCO2_base;
  58.     if (! sgp.getIAQBaseline(&eCO2_base, &TVOC_base)) {
  59.       Serial.println("Failed to get baseline readings");
  60.       return;
  61.     }
  62.     Serial.print("****Baseline values: eCO2: 0x"); Serial.print(eCO2_base, HEX);
  63.     Serial.print(" & TVOC: 0x"); Serial.println(TVOC_base, HEX);
  64.   }
  65. }
复制代码

把上述完整工程放进零知开源开发工具的库里即可使用,完整工程可到零知实验室官网免费获取。
工程界面如下:


3、测试结果


如果要使SGP30模块获取更精准的数据,可以加入温湿度传感器进行湿度补偿,然后再进行相关数据的采集。详情可到零知实验室官网免费查询。
此内容由EEWORLD论坛网友roc2原创,如需转载或用于商业用途需征得作者同意并注明出处


此帖出自信息发布论坛

最新回复

guanzhu ,,,,,,  详情 回复 发表于 2019-5-23 09:23
点赞 关注
 
 

回复
举报

22

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
guanzhu ,,,,,,
此帖出自信息发布论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表