Espruino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8825|回复: 1

基于DSM501A的空气质量指数(AQI)计算装置

[复制链接]
发表于 2014-4-3 14:06:38 | 显示全部楼层 |阅读模式
基于DSM501A的空气质量指数(AQI)计算装置
作者:Espruino中文社区 lawrencedon

使用的模块:DSM501A
接线方法:
DSM501A     Espruino
pin1 -------- 不用接
pin2 -------- A1
pin3 -------- Bat
pin4 -------- A0
pin5 -------- GND

这里用A0,A1其实是有点不妥的,因为这两个针脚是3.3v tolerant,而DSM501的输出高电平可以达到4.7v。
可以使用5v tolerant的针脚来做该实验。在下面链接里的PINOUT图中没有标注3.3v的针脚都是5v tolerant的。
http://www.espruino.com/ReferenceESPRUINOBOARD

计算颗粒浓度和AQI的公式来自https://github.com/alexjx/AqiMon
Snapshot_20140403_1.JPG

WebIDE.jpg

相关资料都在百度云盘资料共享里:模块资料>DSM501
3-1 Specification DSM501.pdf                           --- 最新版的英文说明书。  
AqiMon空气质量指数监测DSM501 DS1307.zip  --- GitHub上的一个项目,里面有颗粒浓度和AQI算法。
PM2.5灰尘颗粒传感器DSM501A.pdf                   --- 中文版说明书。
AQI_Mon.js --- 本例的源代码
(百度云盘资料共享: http://pan.baidu.com/s/1ntqMLst   密码:jgw8)

[mw_shl_code=javascript,true]//基于DSM501A的空气质量指数(AQI)计算装置
//使用的模块:DSM501A
//接线方法:
// DSM501A       Espruino
// pin1 -------- 不用接
// pin2 -------- A1
// pin3 -------- Bat
// pin4 -------- A0
// pin5 -------- GND
//计算颗粒浓度和AQI的公式来自https://github.com/alexjx/AqiMon
//作者:Espruino中文社区 lawrencedon

var pm10 = 0;
var pm25 = 0;
var pm10_weight = 0;
var pm25_weight = 0;
var aqi = 0;
var P25Weight = 0;
setWatch(function(e){
  var lowtime0=(e.time-e.lastTime)*1000;
  if(lowtime0>=10 && lowtime0<=90)
  {
    //console.log("pm10: " + lowtime0);
    pm10+=lowtime0;
  }
},A1,{repeat:true,edge:"rising"});
setWatch(function(e){
  var lowtime1=(e.time-e.lastTime)*1000;
  if(lowtime1>=10 && lowtime1<=90)
  {
    //console.log("pm25: " + lowtime1);
    pm25+=lowtime1;
  }
},A0,{repeat:true,edge:"rising"});
setInterval(function(e){
  pm10_weight = 0.30473 * Math.pow((pm10/30000)*100, 3) - 2.63943 * Math.pow((pm10/30000)*100, 2) + 102.60291 * (pm10/30000)*100 - 3.49616;

  pm25_weight = 0.30473 * Math.pow((pm25/30000)*100, 3) - 2.63943 * Math.pow((pm25/30000)*100, 2) + 102.60291 * (pm25/30000)*100 - 3.49616;

    P25Weight = pm10_weight - pm25_weight;

   if (P25Weight>= 0 && P25Weight <= 15.4) {
  aqi = 0 +(50.0 / 15.5 * P25Weight);
} else if (P25Weight > 15.5 && P25Weight <= 40.5) {
  aqi = 50 + (50.0 / 25.0 * (P25Weight - 15.5));
} else if (P25Weight > 40.5 && P25Weight <= 65.5) {
  aqi = 100 + (50.0 / 25.0 * (P25Weight - 40.5));
} else if (P25Weight > 65.5 && P25Weight <= 150.5) {
  aqi = 150 + (50.0 / 85.0 * (P25Weight - 65.5));
} else if (P25Weight > 150.5 && P25Weight <= 250.5) {
  aqi = 200 + (100.0 / 100.0 * (P25Weight - 150.5));
} else if (P25Weight > 250.5 && P25Weight <= 350.5) {
  aqi = 300 + (100.0 / 100.0 * (P25Weight - 250.5));
} else if (P25Weight > 350.5 && P25Weight <= 500.0) {
  aqi = 400 + (100.0 / 150.0 * (P25Weight - 350.5));
} else if (P25Weight > 500.0) {
  aqi = 500 + (500.0 / 500.0 * (P25Weight - 500.0));
} else {
  aqi = 0;
}
  console.log("__________AQI:" + aqi + "__________");
    pm10=0;pm25=0;
},30000);[/mw_shl_code]



0

主题

3

帖子

28

积分

新手上路

Rank: 1

积分
28
发表于 2014-4-3 14:32:47 | 显示全部楼层
漂亮,学习了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|Espruino中文社区 ( 苏14007051 )

GMT+8, 2019-10-22 14:04 , Processed in 0.190898 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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