raspberry pi
我们在东南亚的学校定期测量空气中的颗粒物。 这里的值非常高,尤其是在2月到5月之间,那时天气非常干燥和炎热,许多田野都燃烧着。 这些因素会对空气质量产生负面影响。 在本文中,我将向您展示如何使用Raspberry Pi测量颗粒物。
什么是颗粒物?
世界卫生组织建议将颗粒物限制在以下值:
- 年平均PM10 20 µg /m³
- 年平均PM2,5每年10 µg /m³
- 每日平均PM10 50 µg /m³,不允许超过允许的天数。
- 每日平均PM2,5 25 µg /m³,不允许超过允许的天数。
这些值低于大多数国家/地区设置的限制。 在欧盟,PM10的年平均浓度为40 µg /m³。
什么是空气质量指数(AQI)?
空气质量指数根据其颗粒测量值指示空气的好坏程度。 不幸的是,没有统一的AQI标准,因为并非所有国家/地区都以相同的方式进行计算。 空气质量指数上的Wikipedia文章提供了有用的概述。 在我们学校,我们以美国环境保护署(EPA)建立的分类为指导。
我们需要什么来测量颗粒物?
测量颗粒物仅需要两件事:
- Raspberry Pi(适用于所有型号;带WiFi的型号最好)
- 微粒传感器SDS011
如果您使用的是Raspberry Pi Zero W,则还需要使用适配器电缆连接到标准USB端口,因为Zero仅有Micro USB。 这些售价约20美元。 传感器带有用于串行接口的USB适配器。
安装
对于我们的Raspberry Pi,我们下载了相应的Raspbian Lite映像并将其写入Micro SD卡 。 (我不会详细介绍如何设置WLAN连接;许多教程可以在线获得)。
如果要在引导后启用SSH,则需要在引导分区中创建一个名为ssh
的空文件。 最好通过您自己的路由器/ DHCP服务器获得Raspberry Pi的IP。 然后,您可以通过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
现在,我们的脚本会在每次重新启动时自动启动。
用于显示测量值和AQIHTML页面
我们已经安装了轻量级的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:
该页面非常简单,并且可以扩展,例如,带有显示最近几个小时的历史记录的图表,等等。欢迎请求拉取。
完整的源代码可在Github上找到 。
[输入我们的Raspberry Pi周赠品 ,有机会在这款街机游戏套件中获得机会。]
结语
我们只需花很少的钱就可以用Raspberry Pi测量颗粒物。 从永久性的室外安装到移动测量设备,都有许多可能的应用。 在我们的学校中,我们同时使用:有一个传感器可以昼夜测量户外价值,还有一个移动传感器可以检查教室中空调过滤器的有效性。
Luftdaten.info提供了构建类似传感器的指南。 该软件已交付使用,并且由于不使用Raspberry Pi,因此测量设备更加紧凑。 很棒的项目!
创建颗粒传感器是与计算机科学班或讲习班的学生一起做的一项出色的项目。
您将Raspberry Pi用于什么用途?
翻译自: https://opensource.com/article/18/3/how-measure-particulate-matter-raspberry-pi
raspberry pi