作者 | Stephan Tetzel
譯者 | Hank Chow (HankChow) ? ? 共計翻譯:4 篇 貢獻時間:118 天
使用兩個簡單的硬體裝置和幾行程式碼構建一個空氣質量探測器。
我們在東南亞的學校定期測定空氣中的顆粒物。這裡的測定值非常高,尤其是在二到五月之間,乾燥炎熱、土地乾旱等各種因素都對空氣質量產生了不利的影響。我將會在這篇文章中展示如何使用樹莓派來測定顆粒物。
什麼是顆粒物?
顆粒物就是粉塵或者空氣中的微小顆粒。其中 PM10 和 PM2.5 之間的差別就是 PM10 指的是粒徑小於 10 微米的顆粒,而 PM2.5 指的是粒徑小於 2.5 微米的顆粒。在粒徑小於 2.5 微米的的情況下,由於它們能被吸入肺泡中並且對呼吸系統造成影響,因此顆粒越小,對人的健康危害越大。
世界衛生組織的建議顆粒物濃度[1]是:
以上數值實際上是低於大多數國家的標準的,例如歐盟對於 PM10 所允許的年均值是不高於 40 µg/m³。
什麼是空氣質量指數(AQI)?
空氣質量指數是按照顆粒物的測定值來評價空氣質量的好壞,然而由於各國之間的計算方式有所不同,這個指數並沒有統一的標準。維基百科上關於空氣質量指數[2]的詞條對此給出了一個概述。我們學校則以美國環境保護協會[3](EPA)建立的分類法來作為依據。
空氣質量指數
測定顆粒物需要哪些準備?
測定顆粒物只需要以下兩種器材:
顆粒物感測器
如果是隻帶有 Micro USB 的樹莓派 Zero W,那還需要一根連線到標準 USB 埠的適配線,只需要 20 美元,而感測器則自帶適配序列介面的 USB 配接器。
安裝過程
對於樹莓派,只需要下載對應的 Raspbian Lite 映象並且寫入到 Micro SD 卡[4]上就可以了(網上很多教程都有介紹如何設定 WLAN 連線,我就不細說了)。
如果要使用 SSH,那還需要在啟動分割槽建立一個名為 ssh
的空檔案。樹莓派的 IP 透過路由器或者 DHCP 伺服器獲取,隨後就可以透過 SSH 登入到樹莓派了(預設密碼是 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 指令碼來讀取感測器的資料並以 JSON 格式儲存,在透過一個 HTML 頁面就可以把資料展示出來了。
在樹莓派上讀取資料
首先建立一個感測器實體,每 5 分鐘讀取一次感測器的資料,持續 30 秒,這些數值後續都可以調整。在每兩次測定的間隔,我們把感測器調到睡眠樣式以延長它的使用壽命(廠商認為元件的壽命大約 8000 小時)。
我們可以使用以下命令來下載 Python 指令碼:
$ 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.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
…
自動化執行指令碼
只需要使用諸如 crontab 的服務,我們就不需要每次都手動啟動指令碼了。按照以下命令開啟 crontab 檔案:
$ crontab -e
在檔案末尾新增這一行:
@reboot cd /home/pi/ && ./aqi.py
現在我們的指令碼就會在樹莓派每次重啟後自動執行了。
展示顆粒物測定值和空氣質量指數的 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 檔案、提取資料、計算空氣質量指數的過程,隨後頁面的背景顏色將會根據 EPA 的劃分標準而變化。
你只需要用瀏覽器訪問樹莓派的地址,就可以看到當前顆粒物濃度值等資料了: http://192.168.1.5:
這個頁面比較簡單而且可擴充套件,比如可以新增一個展示過去數小時歷史資料的表格等等。
這是Github上的完整原始碼[6]。
總結
在資金相對緊張的情況下,樹莓派是一種選擇。除此以外,還有很多可以用來測定顆粒物的應用,包括室外固定裝置、移動測定裝置等等。我們學校則同時採用了這兩種:固定裝置在室外測定全天顆粒物濃度,而移動測定裝置在室內檢測空調過濾器的效果。
Luftdaten.info[7] 提供了一個如何設計類似的感測器的介紹,其中的軟體效果出眾,而且因為它沒有使用樹莓派,所以硬體更是小巧。
對於學生來說,設計一個顆粒物感測器確實算得上是一個優秀的課外專案。
你又打算如何使用你的樹莓派[8]呢?
via: https://opensource.com/article/18/3/how-measure-particulate-matter-raspberry-pi
作者:Stephan Tetzel[10] 譯者:HankChow 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出