我们定期测量东南亚学校的空气中的颗粒物。这里的数值非常高,尤其是在 2 月到 5 月之间,那时天气非常干燥炎热,并且许多田地都在燃烧。这些因素对空气质量产生负面影响。在本文中,我将向您展示如何使用 Raspberry Pi 测量颗粒物。
什么是颗粒物?
颗粒物是空气中细小的灰尘或非常小的颗粒。颗粒物分为 PM10 和 PM2.5:PM10 指的是小于 10µm 的颗粒;PM2.5 指的是小于 2.5µm 的颗粒。颗粒越小——即任何小于 2.5µm 的颗粒——对健康越危险,因为它们可以渗透到肺泡并影响呼吸系统。
世界卫生组织建议限制颗粒物到以下数值
- 年平均 PM10 20 微克/立方米
- 年平均 PM2.5 10 微克/立方米 每年
- 日平均 PM10 50 微克/立方米,不允许超标日。
- 日平均 PM2.5 25 微克/立方米,不允许超标日。
这些数值低于大多数国家设定的限值。在欧盟,PM10 的年平均值允许为 40 微克/立方米。
什么是空气质量指数 (AQI)?
空气质量指数表明空气基于其颗粒物测量结果的“好”或“坏”程度。不幸的是,AQI 没有统一的标准,因为并非所有国家都以相同的方式计算它。《维基百科》关于空气质量指数的文章提供了一个有用的概述。在我们的学校,我们以美国环境保护署制定的分类为指导。

空气质量指数
我们需要什么来测量颗粒物?
测量颗粒物只需要两样东西
- Raspberry Pi(所有型号均可;最好是带有 WiFi 的型号)
- 颗粒物传感器 SDS011

颗粒物传感器
如果您使用的是 Raspberry Pi Zero W,您还需要一个适配器电缆连接到标准 USB 端口,因为 Zero 只有 Micro USB。这些适配器电缆的价格约为 20 美元。传感器附带一个用于串行接口的 USB 适配器。
安装
对于我们的 Raspberry Pi,我们下载相应的 Raspbian Lite 镜像并将其写入 Micro SD 卡。(我不会详细介绍设置 WLAN 连接;网上有很多教程)。
如果您希望在启动后启用 SSH,您需要在启动分区中创建一个名为 ssh
的空文件。Raspberry Pi 的 IP 可以最好地通过您自己的路由器/DHCP 服务器获得。然后您可以通过 SSH 登录(默认密码是 raspberry)
$ ssh pi@192.168.1.5
首先我们需要在 Pi 上安装一些软件包
$ sudo apt install git-core python-serial python-enum lighttpd
在我们可以开始之前,我们需要知道 USB 适配器连接到哪个串口。dmesg
可以帮助我们
$ dmesg
[ 5.559802] usbcore: registered new interface driver usbserial
[ 5.559930] usbcore: registered new interface driver usbserial_generic
[ 5.560049] usbserial: USB Serial support registered for generic
[ 5.569938] usbcore: registered new interface driver ch341
[ 5.570079] usbserial: USB Serial support registered for ch341-uart
[ 5.570217] ch341 1–1.4:1.0: ch341-uart converter detected
[ 5.575686] usb 1–1.4: ch341-uart converter now attached to ttyUSB0
在最后一行,您可以看到我们的接口:ttyUSB0
。我们现在需要一个小型的 Python 脚本来读取数据并将其保存在 JSON 文件中,然后我们将创建一个小型 HTML 页面来读取和显示数据。
在 Raspberry Pi 上读取数据
我们首先创建一个传感器实例,然后每 5 分钟读取一次传感器,持续 30 秒。这些值当然可以调整。在测量间隔之间,我们将传感器置于睡眠模式,以延长其寿命(根据制造商的说法,寿命总计约为 8000 小时)。
我们可以使用此命令下载脚本
$ wget -O /home/pi/aqi.py https://raw.githubusercontent.com/zefanja/aqi/master/python/aqi.py
为了使脚本无错误运行,还需要做两件小事
$ sudo chown pi:pi /var/www/html/
$ echo [] > /var/www/html/aqi.json
现在您可以启动脚本了
$ chmod +x aqi.py
$ ./aqi.py
PM2.5:55.3, PM10:47.5
PM2.5:55.5, PM10:47.7
PM2.5:55.7, PM10:47.8
PM2.5:53.9, PM10:47.6
PM2.5:53.6, PM10:47.4
PM2.5:54.2, PM10:47.3
…
自动运行脚本
为了不必每次都手动启动脚本,我们可以让它在 cronjob 中启动,例如,在每次 Raspberry Pi 重启时启动。为此,打开 crontab 文件
$ crontab -e
并在末尾添加以下行
@reboot cd /home/pi/ && ./aqi.py
现在我们的脚本将在每次重启时自动启动。
用于显示测量值和 AQI 的 HTML 页面
我们已经安装了一个轻量级 Web 服务器 lighttpd
。因此,我们需要将我们的 HTML、JavaScript 和 CSS 文件保存在目录 /var/www/html/
中,以便我们可以从另一台计算机或智能手机访问数据。使用接下来的三个命令,我们只需下载相应的文件
$ wget -O /var/www/html/index.html https://raw.githubusercontent.com/zefanja/aqi/master/html/index.html
$ wget -O /var/www/html/aqi.js https://raw.githubusercontent.com/zefanja/aqi/master/html/aqi.js
$ wget -O /var/www/html/style.css https://raw.githubusercontent.com/zefanja/aqi/master/html/style.css
主要工作是在 JavaScript 文件中完成的,该文件打开我们的 JSON 文件,获取最后一个值,并基于该值计算 AQI。然后,背景颜色根据 EPA 的等级进行调整。
现在您只需在浏览器中打开 Raspberry Pi 的地址,即可查看当前的颗粒物值,例如,http://192.168.1.5:

该页面非常简单,可以扩展,例如,添加一个图表来显示过去几个小时的历史记录等等。欢迎提交 Pull Request。
完整的源代码可在 Github 上获得。
[参加我们的Raspberry Pi 周赠品活动,有机会获得这款街机游戏套件。]
总结
用相对较少的钱,我们可以使用 Raspberry Pi 测量颗粒物。有很多可能的应用,从永久性户外安装到移动测量设备。在我们的学校,我们两者都使用:有一个传感器日夜测量室外值,还有一个移动传感器检查我们教室中空调过滤器的有效性。
Luftdaten.info 提供了构建类似传感器的指南。该软件已交付即可使用,并且测量设备更加紧凑,因为它不使用 Raspberry Pi。很棒的项目!
创建一个颗粒物传感器是一个非常适合在计算机科学课程或研讨会中与学生一起完成的项目。
您使用Raspberry Pi做什么?
6 条评论