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