使用兩個(gè)簡(jiǎn)單的硬件設(shè)備和幾行代碼構(gòu)建一個(gè)空氣質(zhì)量探測(cè)器。
我們?cè)跂|南亞的學(xué)校定期測(cè)定空氣中的顆粒物。這里的測(cè)定值非常高,尤其是在二到五月之間,干燥炎熱、土地干旱等各種因素都對(duì)空氣質(zhì)量產(chǎn)生了不利的影響。我將會(huì)在這篇文章中展示如何使用樹莓派來測(cè)定顆粒物。
什么是顆粒物?
顆粒物就是粉塵或者空氣中的微小顆粒。其中 PM10 和 PM2.5 之間的差別就是 PM10 指的是粒徑小于 10 微米的顆粒,而 PM2.5 指的是粒徑小于 2.5 微米的顆粒。在粒徑小于 2.5 微米的的情況下,由于它們能被吸入肺泡中并且對(duì)呼吸系統(tǒng)造成影響,因此顆粒越小,對(duì)人的健康危害越大。
世界衛(wèi)生組織的建議 顆粒物濃度 是:
年均 PM10 不高于 20 μg/m3
年均 PM2.5 不高于 10 μg/m3
不允許超標(biāo)時(shí),日均 PM10 不高于 50 μg/m3
不允許超標(biāo)時(shí),日均 PM2.5 不高于 25 μg/m3
以上數(shù)值實(shí)際上是低于大多數(shù)國(guó)家的標(biāo)準(zhǔn)的,例如歐盟對(duì)于 PM10 所允許的年均值是不高于 40 μg/m3。
什么是 空氣質(zhì)量指數(shù) Air Quality Index (AQI)?
空氣質(zhì)量指數(shù)是按照顆粒物的測(cè)定值來評(píng)價(jià)空氣質(zhì)量的好壞,然而由于各國(guó)之間的計(jì)算方式有所不同,這個(gè)指數(shù)并沒有統(tǒng)一的標(biāo)準(zhǔn)。維基百科上關(guān)于 空氣質(zhì)量指數(shù) 的詞條對(duì)此給出了一個(gè)概述。我們學(xué)校則以 美國(guó)環(huán)境保護(hù)協(xié)會(huì) Environment Protection Agency (EPA)建立的分類法來作為依據(jù)。
空氣質(zhì)量指數(shù)
測(cè)定顆粒物需要哪些準(zhǔn)備?
測(cè)定顆粒物只需要以下兩種器材:
樹莓派(款式不限,最好帶有 WiFi)
SDS011 顆粒物傳感器
顆粒物傳感器
如果是只帶有 Micro USB 的樹莓派 Zero W,那還需要一根連接到標(biāo)準(zhǔn) USB 端口的適配線,只需要 20 美元,而傳感器則自帶適配串行接口的 USB 適配器。
安裝過程
對(duì)于樹莓派,只需要下載對(duì)應(yīng)的 Raspbian Lite 鏡像并且 寫入到 Micro SD 卡 上就可以了(網(wǎng)上很多教程都有介紹如何設(shè)置 WLAN 連接,我就不細(xì)說了)。
如果要使用 SSH,那還需要在啟動(dòng)分區(qū)建立一個(gè)名為 ssh 的空文件。樹莓派的 IP 通過路由器或者 DHCP 服務(wù)器獲取,隨后就可以通過 SSH 登錄到樹莓派了(默認(rèn)密碼是 raspberry):
$ ssh pi@192.168.1.5
首先我們需要在樹莓派上安裝一下這些包:
$ sudo apt install git-core python-serial python-enum lighttpd
在開始之前,我們可以用 dmesg 來獲取 USB 適配器連接的串行接口:
$ 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 。然后我們需要寫一個(gè) Python 腳本來讀取傳感器的數(shù)據(jù)并以 JSON 格式存儲(chǔ),在通過一個(gè) HTML 頁面就可以把數(shù)據(jù)展示出來了。
在樹莓派上讀取數(shù)據(jù)
首先創(chuàng)建一個(gè)傳感器實(shí)例,每 5 分鐘讀取一次傳感器的數(shù)據(jù),持續(xù) 30 秒,這些數(shù)值后續(xù)都可以調(diào)整。在每?jī)纱螠y(cè)定的間隔,我們把傳感器調(diào)到睡眠模式以延長(zhǎng)它的使用壽命(廠商認(rèn)為元件的壽命大約 8000 小時(shí))。
我們可以使用以下命令來下載 Python 腳本:
$ wget -O /home/pi/aqi.py https://raw.githubusercontent.com/zefanja/aqi/master/python/aqi.py
另外還需要執(zhí)行以下兩條命令來保證腳本正常運(yùn)行:
$ sudo chown pi:pi /var/www/html/
$ echo ‘[]’ 》 /var/www/html/aqi.json
下面就可以執(zhí)行腳本了:
$ chmod +x aqi.p
$ 。/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
…
自動(dòng)化執(zhí)行腳本
只需要使用諸如 crontab 的服務(wù),我們就不需要每次都手動(dòng)啟動(dòng)腳本了。按照以下命令打開 crontab 文件:
$ crontab -e
在文件末尾添加這一行:
@reboot cd /home/pi/ && 。/aqi.py
現(xiàn)在我們的腳本就會(huì)在樹莓派每次重啟后自動(dòng)執(zhí)行了。
展示顆粒物測(cè)定值和空氣質(zhì)量指數(shù)的 HTML 頁面
我們?cè)谇懊嬉呀?jīng)安裝了一個(gè)輕量級(jí)的 web 服務(wù)器 lighttpd ,所以我們需要把 HTML、JavaScript、CSS 文件放置在 /var/www/html 目錄中,這樣就能通過電腦和智能手機(jī)訪問到相關(guān)數(shù)據(jù)了。執(zhí)行下面的三條命令,可以下載到對(duì)應(yīng)的文件:
$ 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 文件中,實(shí)現(xiàn)了打開 JSON 文件、提取數(shù)據(jù)、計(jì)算空氣質(zhì)量指數(shù)的過程,隨后頁面的背景顏色將會(huì)根據(jù) EPA 的劃分標(biāo)準(zhǔn)而變化。
你只需要用瀏覽器訪問樹莓派的地址,就可以看到當(dāng)前顆粒物濃度值等數(shù)據(jù)了: http://192.168.1.5:
這個(gè)頁面比較簡(jiǎn)單而且可擴(kuò)展,比如可以添加一個(gè)展示過去數(shù)小時(shí)歷史數(shù)據(jù)的表格等等。
這是 Github上的完整源代碼 。
總結(jié)
在資金相對(duì)緊張的情況下,樹莓派是一種選擇。除此以外,還有很多可以用來測(cè)定顆粒物的應(yīng)用,包括室外固定裝置、移動(dòng)測(cè)定設(shè)備等等。我們學(xué)校則同時(shí)采用了這兩種:固定裝置在室外測(cè)定全天顆粒物濃度,而移動(dòng)測(cè)定設(shè)備在室內(nèi)檢測(cè)空調(diào)過濾器的效果。
Luftdaten.info 提供了一個(gè)如何設(shè)計(jì)類似的傳感器的介紹,其中的軟件效果出眾,而且因?yàn)樗鼪]有使用樹莓派,所以硬件更是小巧。
對(duì)于學(xué)生來說,設(shè)計(jì)一個(gè)顆粒物傳感器確實(shí)算得上是一個(gè)優(yōu)秀的課外項(xiàng)目。
你又打算如何使用你的 樹莓派 呢?
評(píng)論