前言

在 利用 Arduino 與 PMS3003 自製太陽能 PM2.5 偵測器 一文的最後,我們提到除了利用 LED 液晶顯示器來顯示偵測到的 PM2.5 數值外,還可以將資料丟到雲端 (如 ThingSpeak) 加以記錄與分析。在這篇文章中,我們將選擇另外一種方式來替之前所建置的太陽能 PM2.5 偵測器加上物聯網功能。在範例中,程式一旦讀取到 PMS3003 所送出來的數值,除了將其顯示在 LCD1602 液晶顯示器外,還會將這些數值 (包含 PM1.0、PM2.5、PM10 ) 使用 Json 格式丟到事先定義好的 MQTT 主題。而 Node-RED 則訂閱此一 MQTT 主題,並於收到通知後將所接受到的數值顯示在儀表板 (Dashboard) 的圖表上。

所需硬體

  • 控制板
    • LinkIT 7697 * 1
    • Raspberry Pi 3 Model B * 1
  • 電子元件
    • Plantower PMS3003 * 1
    • 3W 太陽能板 138X160mm * 1 (或 2)
    • 5100 mAh 鋰離子聚合物電池 * 1
    • MUART0-S-1-1 * 1
    • I2C LCD1602 * 1
    • 無線分享器 * 1
    • 具備 WiFi 連線功能的手機 * 1

架構圖

太陽能 PM2.5 偵測器架構示意圖 (IoT 版本)

太陽能 PM2.5 偵測器架構示意圖 (IoT 版本)

從硬體的角度來看,這個架構與之前太陽能 PM2.5 偵測器的架構類似,主要的差別與說明如下:

  1. 使用 LinkIT 7697 取代 Arduino。原因有二,第一個原因是 LinkIT 7697 的體積比 Arduino 小上許多,整體組裝完成後看起來清爽多了。第二個則是 LinkIT 7697 內建 WiFi 功能,所以跟 Arduino 必須額外加上 WiFi 模組相較,更加省事與清爽。
  2. 架構中需要使用 Mosquitto (MQTT 服務) 與 Node-RED,在此我選用 Raspberry Pi 搭配 Raspbian。其實這部分並沒有使用到 Raspberry Pi 的 GPIO 功能,所以改用一般的電腦也是可行的。
  3. 因為 Raspberry Pi 本身就具備 GPIO 的功能,所以可以取代 LinkIT 7697,也就是將 MUART0-S-1-1 的接受器與 LCD1602 直接接到 Raspberry Pi。雖然這樣做可以省下一個 LinkIT 7697,但是我選擇這樣的組成來表達物聯網應用的可能架構,將不同功能的服務透過網路串接在一起。
  4. Mosquitto 與 Node-RED 不需要裝在同一個 Raspberry Pi 上,兩個服務之間一樣只要可以透過網路進行溝通即可。
  5. LinkIT 7697、Raspberry Pi、手機這三者其實不需要連接到同一個無線分享器,但是接在同一個無線分享器時可以避免跨網段存取的設定與可能發生的問題。
  6. 在這個範例中,Node-RED 僅用來顯示 PMS3003 所讀取到的數值,感覺上似乎跟 ThingSpeak 的功能有些類似。但是 Node-RED 其實是一個開發平台,除了可用來顯示資料,還可以進行雙向互動,以達到控制的目的。有機會我們再來對 Node-RED 進行更詳細的介紹。

程式範例

本範例包含兩個程式,一個是 Arduino IDE 的 LinkIT 7697 的程式,另外一個則是 Node-RED 的 flow 程式。程式並沒有特別複雜的地方,但是因為有些攏長,所以在此就不一一解釋了,有興趣的人請自行下載並修改使用:

  1. Arduino IDE 的 LinkIT 7697 程式必須修改 ssid、password、mqtt_server 這三個參數。
  2. Node-RED 的 flow 程式則必須修改 linkit-7697-pms 積木的 server 設定。
  3. 除此之外,因為 LinkIT 7697 所附的 LiquidCrystal_I2C 與 PMS 函式庫有所衝突,所以必須把 LiquidCrystal_I2C 函式庫中的變數宣告 DATA 都改為 LCD_DATA 才可正常編譯。

如果整個系統成功運行,我們用手機連上 Node-RED 的 Dashboard 後應可看到類似下列的畫面:

Node-RED dashboard for PMS 3003

Node-RED dashboard for PMS 3003

此即表示 Node-RED 已經正確取得 PMS3003 所讀取到的數值。如果我們想要進一步把資料丟到公共雲上,一樣可以利用 Node-RED 來達成,不過在此就先略過了。

Facebook 留言
Print Friendly, PDF & Email
Summary
自製具備物聯網功能的太陽能 PM2.5 偵測器
Article Name
自製具備物聯網功能的太陽能 PM2.5 偵測器
Description
這篇文章中,我們將替之前所建置的太陽能 PM2.5 偵測器加上物聯網功能。在範例中,程式一旦讀取到 PMS3003 所送出來的數值,除了將其顯示在 LCD1602 液晶顯示器外,還會將這些數值 (包含 PM1.0、PM2.5、PM10 ) 使用 Json 格式丟到事先定義好的 MQTT 主題。而 Node-RED 則訂閱此一 MQTT 主題,並於收到通知後將所接受到的數值顯示在儀表板 (Dashboard) 的圖表上。
Author
Publisher Name
Everlearn Studio
Publisher Logo