当前位置:   article > 正文

如何通过颗粒物传感器SDS011监测空气质量

sds011
空气污染

我们周围的空气是由气体和其他几种我们肉眼看不见的元素组成的。其中就存在很多悬浮在空气中的固体或液体物质的微观颗粒,它们非常小,尺寸都在微米的范围内,所以你不能看到它们,但这些微粒可以被人们吸入,这就可能会导致许多健康问题。在全球范围内,导致过早死亡的第六大风险因素就是暴露于高浓度的颗粒物中,引发心脏病、中风、肺癌、慢性肺部疾病和其他呼吸道感染。

 空气中的颗粒物

颗粒物

颗粒物本身根据其大小被分为两类:

  1. 直径在2.5到10微米之间的被称为粗颗粒,用PM10表示;
  2. 直径小于或等于2.5微米的颗粒称为超细颗粒,用PM2.5表示。

如将这些颗粒的直径与我们的头发直径进行比较,头发的直径大约是50-70微米。

SDS011颗粒物传感器

了解以上的基础信息后,我们就可以尝试通过SDS011颗粒物传感器来监测空气中颗粒的浓度。SDS011本身配置有一个小风扇,用于模块进气口的空气循环,当风扇打开时,空气会从进气口吸入,吸入的空气经过传感器后排出,这样就实现空气采样和检测。因为配置风扇的原因,所以传感器在工作时会发出轻微的风扇噪音。

SDS011颗粒物传感器

 SDS011参数

  • 测量种类:PM2.5、PM10
  • 测量范围:
  •   PM2.5: 0.0-999.9微克/立方米
  • PM10: 0.0-1999.9微克/立方米
  • 额定电压:5V
  • 额定电流:70mA±10mA
  • 温度范围:
  • 储存环境:-20~+60℃
  • 工作环境:-10~+50℃
  • 湿度范围:
  • 储存环境:MAX 90%
  • 工作环境:MAX 70%
  • 工作压力:86KPa~110KPa
  • 响应时间:1s
  • 刷新频率:1Hz
  • 最小粒径:0.3μm
  • 相对误差:±15% and ±10μg/m3 maximum -25 degrees, 50%RH
  • 产品尺寸:71x70x23mm

供电要求

  •  电源电压:4.7~5V
  • 电源:大于1W(电流大于200mA)
  • 电源电压纹波小于20mV

SDS011传感器的工作原理:

SDS011工作原理

 传感器内部集成了激光器和检测二极管,由于模块完全封闭,激光器和检测二极管就不会受到环境光线的影响。工作时通过风扇从进气口吸进空气,空气流过激光器和二极管,然后从排出,此时检测二极管就可以通过利用散射原理判断激光器照射到二极管上的光量变化,来检测空气中存在的微粒浓度。这个信号经过传感器内部的放大处理后,最终进行输出。

Arduino读取颗粒物传感器SDS011的值

Arduino要实现简单快速读取SDS011的输出值,需要加载SDS011相应的库文件。

 加载库文件可以通过Arduino IDE的Library Manager实现,搜索sds011后安装即可。

Arduino与SDS011传感器的硬件连接

 颗粒物传感器SDS011 Arduino示例代码

  1. #include "SdsDustSensor.h"
  2. int rxPin = 0;
  3. int txPin = 1;
  4. SdsDustSensor sds(rxPin, txPin);
  5. void setup() {
  6. Serial.begin(9600);
  7. sds.begin();
  8. Serial.println(sds.queryFirmwareVersion().toString()); // prints firmware version
  9. Serial.println(sds.setActiveReportingMode().toString()); // ensures sensor is in 'active' reporting mode
  10. Serial.println(sds.setContinuousWorkingPeriod().toString()); // ensures sensor has continuous working period - default but not recommended
  11. }
  12. void loop() {
  13. PmResult pm = sds.readPm();
  14. if (pm.isOk()) {
  15. Serial.print("PM2.5 = ");
  16. Serial.print(pm.pm25);
  17. Serial.print(", PM10 = ");
  18. Serial.println(pm.pm10);
  19. // if you want to just print the measured values, you can use toString() method as well
  20. Serial.println(pm.toString());
  21. } else {
  22. // notice that loop delay is set to 0.5s and some reads are not available
  23. Serial.print("Could not read values from sensor, reason: ");
  24. Serial.println(pm.statusToString());
  25. }
  26. delay(500);
  27. }

最终通过串口监视器可以得到输出:

通过得到的输出值,就可以简单判断当前环境的空气质量了。

需要注意的是,当我恩需要重新上传代码时,最好断开传感器与Arduino的连接,否则,很可能在Arduino IDE中得到一个错误提示。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/226016
推荐阅读
相关标签
  

闽ICP备14008679号