如何使用樹莓派測定顆粒物(PM 2.5)

Stephan Tetzel發表於2018-05-08

使用兩個簡單的硬體裝置和幾行程式碼構建一個空氣質量探測器。

我們在東南亞的學校定期測定空氣中的顆粒物。這裡的測定值非常高,尤其是在二到五月之間,乾燥炎熱、土地乾旱等各種因素都對空氣質量產生了不利的影響。我將會在這篇文章中展示如何使用樹莓派來測定顆粒物。

什麼是顆粒物?

顆粒物就是粉塵或者空氣中的微小顆粒。其中 PM10 和 PM2.5 之間的差別就是 PM10 指的是粒徑小於 10 微米的顆粒,而 PM2.5 指的是粒徑小於 2.5 微米的顆粒。在粒徑小於 2.5 微米的的情況下,由於它們能被吸入肺泡中並且對呼吸系統造成影響,因此顆粒越小,對人的健康危害越大。

世界衛生組織的建議顆粒物濃度是:

  • 年均 PM10 不高於 20 µg/m³
  • 年均 PM2.5 不高於 10 µg/m³
  • 不允許超標時,日均 PM10 不高於 50 µg/m³
  • 不允許超標時,日均 PM2.5 不高於 25 µg/m³

以上數值實際上是低於大多數國家的標準的,例如歐盟對於 PM10 所允許的年均值是不高於 40 µg/m³。

什麼是空氣質量指數Air Quality Index(AQI)?

空氣質量指數是按照顆粒物的測定值來評價空氣質量的好壞,然而由於各國之間的計算方式有所不同,這個指數並沒有統一的標準。維基百科上關於空氣質量指數的詞條對此給出了一個概述。我們學校則以美國環境保護協會Environment Protection Agency(EPA)建立的分類法來作為依據。

空氣質量指數

空氣質量指數

測定顆粒物需要哪些準備?

測定顆粒物只需要以下兩種器材:

  • 樹莓派(款式不限,最好帶有 WiFi)
  • SDS011 顆粒物感測器

顆粒物感測器

顆粒物感測器

如果是隻帶有 Micro USB 的樹莓派 Zero W,那還需要一根連線到標準 USB 埠的適配線,只需要 20 美元,而感測器則自帶適配序列介面的 USB 介面卡。

安裝過程

對於樹莓派,只需要下載對應的 Raspbian Lite 映象並且寫入到 Micro SD 卡上就可以了(網上很多教程都有介紹如何設定 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上的完整原始碼

總結

在資金相對緊張的情況下,樹莓派是一種選擇。除此以外,還有很多可以用來測定顆粒物的應用,包括室外固定裝置、移動測定裝置等等。我們學校則同時採用了這兩種:固定裝置在室外測定全天顆粒物濃度,而移動測定裝置在室內檢測空調過濾器的效果。

Luftdaten.info 提供了一個如何設計類似的感測器的介紹,其中的軟體效果出眾,而且因為它沒有使用樹莓派,所以硬體更是小巧。

對於學生來說,設計一個顆粒物感測器確實算得上是一個優秀的課外專案。

你又打算如何使用你的樹莓派呢?


via: https://opensource.com/article/18/3/how-measure-particulate-matter-raspberry-pi

作者:Stephan Tetzel 譯者:HankChow 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章