Arduino DSM501练成记


        冬天来了,PM2.5也随之飙升。想想arduino板买回来也有一段时间了,一直没动手搞点小东东。OK,刚好有DSM501A传感器,就搞了室内空气质量检测表,玩玩。

1. 目标:

        做个小设备监测空气质量定时采集数据传到服务器(yeelink),先简单点搞个温度、湿度、PM2.5,后续增加其它传感器。

2. 主要材料:

  • arduino leonardo 1块
  • W5100网络板 1块
  • 220V转5V电源适配器 1个
  • 小面包板 1个
  • 传感器LM35、DHT11、DSM501A各1个
  • 线若干及其他小件

3. 难点:DSM501A数据采集

笔者查找了不少资料:

  • 自制Arduino检测器,随时关注空气质量,翻译内容很专业,扩展示例参考性很好,可惜给的代码没有DSM501库,理解起来比较麻烦。
  • github上有个AqiMon,代码写得很不错,可惜直接用出不来结果,数据处理用了滑动平均,单片机处理起来有点压力,特别是yeelink的arduino库太大,再加上数据处理代码无法直接使用,放弃。

总之,DSM501资料不太多,调试使用着实费了一番功夫。

4. DSM501A分析调试

        测试原理简述:DSM501A弄清楚之后,发现其实也很简单,除电源和地管脚外,使得管脚1悬空,则管脚2检测“空气颗粒>1μm的浓度PM10”和管脚4检测“空气颗粒>2.5μm的浓度PM25”,检测方法是通过PWM低脉冲的占空比来计算。而PM2.5是指空气颗粒<2.5μm的浓度,通过采用μg/m3为单位或者将此换算为中国标准的AQI或者美国标准的AQI。因此DSM501测试的PM2.5的浓度用PM10-PM25来提供。笔者的Arduino DSM501 lib及示例
        调试难点:调试过程中,发现数据大得异常,搞得对此传感器感到心灰意冷,但结果对比验证,最后,确认了问题,得到了很好的效果。
        DSM501采集的异常数据主要原因是:
1、LED灯照射到DSM501上,比如我调试时,开了欧普吸顶灯,结果数据异常难看;
2、电源问题,使用PC USB口给Arduino和DSM501供电时,数据也很大,改为手机电源适配器则一切正常,哈哈哈;
3、另外太阳直射DSM501也会出现LED灯照射的情况。
        最后,我想说DSM501很容易受到干扰,但排除问题后,效果感觉还是很不错的,要是在进行下数据处理,比如滑动平均或低通滤波,效果肯定不错。

上2张图:

数据异常 这个是受到干扰的数据,变化超大

数据正常 排除干扰的数据,比较好看

5. 结果

        DSM501调试OK,LM35定然不在话下,DHT11也是简单,但由于W5100的yeelink固件太大,只得去掉DHT11。这个小设备目前只能测试温度、PM2.5,项目代码。下一步在搞个WIFI芯片扩展一下,呵呵。
成果数据欢迎参考交流。


上篇: 养鱼心得 下篇: ubuntu 14.04下dokuwiki的搭建与配置