看图说话测量PM2,5-Arduino中文社区 - Powered by Discuz! Archiver

ardypro 发表于 2013-6-23 16:51

看图说话测量PM2,5

本帖最后由 ardypro 于 2013-6-23 16:51 编辑

乐联老刘送俺一块DSM501A,可以像美帝那样测量pm2.5污染程度{:soso_e144:},还可以发表到物联网服务器,随时随地都可以看到空气清洁程度的变化。

所需要的硬件:

序 号 硬 件 数 量 备 注
1 Arduino 1

2 DSM501A 1
3W5100网络模块1
4 DHT11 1 非必须
5 TPLink 703N 1 非必须


物联网服务器:
乐联或者yeelink,这里选择的是乐联。

考虑到要监测的地点可能要变动,所以方案中用到TPLink703N无线路由器,这样可以端着到处跑,变成移动监测站{:soso_e113:},当然,如果你只是要监测路由器旁边的空气质量,那就扯一根网线就行,703N就省了,顺便省了不少银子。

一、连接硬件
硬件连接拓扑图:



注意,DSM501A传感器有两个数据输出引脚,4号脚是可以调节采样精度的,这个我们不用,接2号脚,另外一端接入Arduino,程序中用的是D8,也可以是其它可用IO脚。

二、注册/设置乐联帐户
如果你已经注册成功乐联帐户,并且已经添加网关和设备,那可以跳过这一步。

2.1 添加网关
乐联网的网关概念跟pachube里的设备概念差不多,就是可以管理传感器的设备。

标识是服务器自动给出的,类型可以根据自己的设备选择,我这里选择的是Arduino,名称取一个自己好记的有含义的词语就行。

是否可控不用勾选,目前用不到这个属性。

如果你准备在你的乐联门户页面公开你的传感器数据,则可以勾选是否公开,这样以后不用登录就可以通过互联网查看传感器数据,当然其他人也可以随便查看。

2.2 添加设备
这里的设备就是传感器。


注意类型要选择颗粒物3;是否公开跟网关对应选项一样。


三、设置TPLink703N工作模式
在这个应用中,TPLink703N工作方式类似于无线网卡,负责将W5100网络模块的网络请求发给主路由器,或者将路由器接收到的服务器反馈转发给W5100,因此需要将TPLink703N设置成client模式。

3.1 设置模式
选择无线AP模式


选择client模式


3.2 设置IP地址
按理讲设置成动态IP也应该可以,但是遇到过麻烦,而且不方便以后对它的管理,所以这里选择设置成固定IP


3.3 无线设置
因为主路由器采用WPA2安全措施,所以TPLink703N要连接到主路由器的话,需要设置SSID和密码才能成功接入。这里的设置跟主路由器的设置密切相关,不清楚的话要打开主路由器的设置界面查看选项。下面图示仅供参考。




设置完之后,重启TPLink703N,就可以以client模式接入主路由器。

四、Arduino程序
所有的硬件接线正确之后,就可以upload程序到Arduino,从而采集颗粒物数据。

为了简化程序,方便维护,我将DSM501传感器的采集过程单独封装成一个library,需要的可以从这里下载。

另外,还需要一个最新版的leweiclient库,注意不要下载那个带TCP字样的library。

主程序:

#include <DHT11.h>
#include <dsm501.h>
#include <LeweiClient.h>
#include <SPI.h>
#include <Ethernet.h>


#define LW_USERKEY "你自己的USERKEY"
#define LW_GATEWAY "01"

char my_addr="http://192.168.16.221/api";
int port =8889;

LeWeiClient *lwc;
dsm501 DSM501A;
DHT11 dht11(2);

void setup()
{
Serial.begin(9600);

DSM501A.setDatapin(8);
DSM501A.enableFilter();

connectRouter();
lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY);
}

void loop()
{
if (lwc)
{
    unsigned long op,fp; //origin particles, filtered particles
    DSM501A.getParticles(op,fp);
    lwc->append("p1",double(op));
    lwc->append("p2",double(fp));

    Serial.print(">>>>>>>>>>>>>>>>>>>>>p1.particles: ");
    Serial.println(op);
    Serial.print(">>>>>>>>>>>>>>>>>>>>>p2.particles: ");
    Serial.println(fp);

    int err;
    float t,h;
    if ((err=dht11.read(h,t))==0)
    {
      char* sensor;
      sensor="t1";
      lwc->append(sensor, t);
      sensor="h1";
   lwc->append("h1", h);
    }

    lwc->send();
}
}


void connectRouter()
{
String stringOne;
uint8_t mac[] = {
    0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED                        };
#if 0
IPAddressmyip(192, 168, 16, 133);
IPAddressdnsip(202,103,225,68); //get this ip from local isp
IPAddressgateway(192, 168, 16, 105);
Ethernet.begin(mac, myip, dnsip, gateway);
#else
Serial.println("DHCP in process !");
if (Ethernet.begin(mac) == 0)
{
    Serial.print(F("Failed to configure Ethernet using DHCP\n"));
}
else
{
    Serial.print("My IP address: ");
    for (byte thisByte = 0; thisByte < 4; thisByte++) {
      // print the value of each byte of the IP address:
      Serial.print(Ethernet.localIP(), DEC);
      Serial.print(".");
    }
    Serial.println();
    Serial.println(F("Ethernet configuration OK\n"));
    stringOne="http://";
    stringOne+=Ethernet.localIP();
    stringOne+=".";
    stringOne+=Ethernet.localIP();
    stringOne+=".";
    stringOne+=Ethernet.localIP();
    stringOne+=".";
    stringOne+=Ethernet.localIP();
    stringOne+=":";
    stringOne+=port;
    stringOne+="/api";   
    Serial.println(stringOne);
    stringOne.toCharArray(my_addr, 50);
}
#endif

}



正常上传之后,便可以查看数据曲线


所有的硬件装在一个快餐盒里的,接线太难看,先不上图。{:soso_e106:}

ardypro 发表于 2013-6-23 16:53

注意DSM501传感器安装的时候,必须跟地面垂直,因为它底下有个电阻加热空气,要是偏的话,热空气从孔里直接排到空气中了,影响数据准确性。

奈何col 发表于 2013-6-23 19:29

图画的真好~

ardypro 发表于 2013-6-24 12:26

奈何col 发表于 2013-6-23 19:29 static/image/common/back.gif
图画的真好~

:lol 哈哈

yangnan221 发表于 2013-11-11 18:10

楼主你好,请问你图中PM2.5的单位是什么?

清水汤圆 发表于 2013-11-15 17:43

楼主,有空加我QQ:18333856
有DSM501A的问题请教,谢谢。

jainghui 发表于 2014-3-10 10:29

DSM501传感器的采集过程单独封装成一个library这个我没法下载,你可以发一个给我嘛,楼主,我的邮箱:
312797290@qq.com

372308269 发表于 2015-5-11 17:57

楼主,求DSM501A的library邮箱372308269@qq.com感激不尽!!
页: [1]
查看完整版本: 看图说话测量PM2,5