|

【Tutorial】公私有雲整合開發 - Mini AirBox遇上QNAP QIoT Suite Lite

   

作者:柯大

本文針對 QNAP QIoT Suite Lite 物聯網開發平台,利用 Mini AirBox 空氣盒子,將感測資料透過 WiFi 通訊以 MQTT 協定傳送到 QNAP NAP QIoT 平台,一次享盡公私有雲的所有好處!

QNAP 研發的 QIoT Suite Lite 多樣化實用模組,可以串聯起Mini AirBox 空氣盒子,讓你打造自己的 Mini AirBox 空氣盒子氣象觀測站,進而能將測到的溫濕度、PM 2.5Co2 等各種氣候指數,透過Wi-Fi通訊傳送到  QNAP TS-453B NAS ,將空氣盒子收集到的資料做長期的追蹤與分析。

組裝自己的氣象觀測站之前需要⋯⋯

這次組裝所採用的迷你空氣盒子開發套件:

WiFi 通訊模組:

QNAP NAS Server(內建 QIoT Suite Lite 物聯網開發平台):

認識QIoT Suite Lite

利用 QNAP 的Docker 架構 NAS,藉由 Container Station 安裝物聯網套件。為了讓大家更方便的建立應用,QNAP推出 QIoT Suite Lite ,包含 GatewayRules Engine 及視覺化資料的Dashboard。從裝置連結到 NAS 再到資料呈現,一次搞定。

QIoT Suite Lite 提供了三個重要元素來打造 IoT 應用環境:裝置閘道 (Device Gateway)、規則引擎 (Rules Engine) 與資料儀表板 (Dashboard),支援 MQTT/MQTTSHTTP/HTTPS CoAP 等多種通訊協定連接 IoT 物件,可將感應裝置所產生的資料傳輸到裝置閘道。

QIoT Suite Lite 採用 Node-RED 服務作為規則引擎,能夠直覺地定義數據資料的邏輯與判讀方式,其圖像化的可拖曳式工具,幾乎不需要額外的程式撰寫即可完成。QIoT 儀表板則內含多樣小工具,協助使用者以視覺化的儀表板遠端監控和管理物聯網應用。

QIoT Suite Lite 支援(但不限於)的開發板包括 Arduino YunRaspberry Pi  Intel Edison 三款;亦提供完整 API 可將儲存在 QNAP NAS 中的各項裝置數據介接至其他儀表板工具(如 Microsoft Power BI)去做進一步分析。

QIoT Suite Lite 更可應用於進階的物聯網情境,比如霧運算 (Fog Computing),可將多台 QNAP NAS 配置為霧運算分層次分區域運算處理架構的分散式節點,以更有效率的方式,在更接近於資料來源處的節點進行資料處理。

基於私有雲架構的 QIoT Suite Lite 亦彈性支援公有雲,帶來一次盡享公私有雲好處的優勢。使用者可將龐大的物聯網資料儲存在費用較低廉的 QNAP NAS 私有雲上,將篩選後的重要資料轉接或匯出至第三方付費公有雲後,再去做更深度的資料分析,以最經濟的方式享受高效益的物聯網服務。

QIoT Suite Lite 架構

QIoT Suite Lite 從建立物件到規則並以視覺式呈現介面方式建立及管理一個完整的物聯網應用系統。

並可結合 NAS 利用各種 QNAP 認證的 Container 建立 MQTT broker Node-RED Server MongoDB等服務,再以Dashboard 方式呈現感測物聯網資料。

QIoT Suite Lite +Mini Airbox建置教學

接著將介紹由迷你空氣盒子結合 QNAP QIoT Suite Lite,以最經濟的私有雲儲存方案,一次就能享盡公私有雲的所有好處!

QIoT Suite Lite 結合 QNAP NAS 安全、大容量的私有雲儲存技術,讓使用者能彈性調度數據資料的儲存空間。安全的私有雲不僅可支援傳統、無法連網的工廠設備,毋須連上公開網路,一樣能將數據資料透過 QIoT Suite Lite 傳送至 QNAP NAS 中,體驗到高效益的物聯網服務。

Mini AirBox 空氣盒子可以偵測室內外空氣品質,包含溫溼度、PM 2.5Co2…等,而且內建鋰電池,還可以用行動電源充電、攜帶方便。對內對外都可為自己的小孩家人朋友們把關空氣品質,並可透過藍牙傳送數值至手機 APP 記錄資料及查看統計曲線。

只要具有基礎 Arduino 開發經驗,就能打造出屬於自己的氣象觀測站!

Mini AirBox使用的材料表:

Mini AirBox 內定組裝完成之通訊介面為藍牙,再利用手機APP讀取感測值記錄。

可下載不同APP來使用:

Mini AirBox專用的開發板底板MiniDuino 專利設計 8Pin 多功能擴充界面提供藍牙、WiFiLoRa 等不同通訊傳輸模組。

8Pin 多功能擴充界面可直接插入藍牙模組,即可成為藍牙裝置,若想將Mini AirBox 改為連網裝置,只要將原藍牙模組改換成 WiFi 模組即可連上雲端。

接下來介紹如何將 Mini AirBox 運用 ESP8266 WiFi 模組,利用 MQTT 傳輸協定,將迷你空氣盒子感測值連線上傳至 QNAP NAS QIoT Suite Lite 平台。

一、更換為 ESP8266 WiFi 模式

1. 將原MiniDuino 8Pin多功能介面中的 3Pin 連接至 ESP8266 模組:MiniDuino 8Pin 上面 D1 接腳接到 ESP8266 RX 接腳,5V VCCGND GND,程式碼則可與用原來 Bluetooth 用同一支,再加一條跳線將 D13 接到 5V 即可完成,原 Arduino Code 不用更動。

2.程式利用跳線自動判斷是否為藍牙模組或 ESP8266 WiFi 模組,即可利用 ESP8266 連網上傳空氣感測資料至 QIoT Suite Lite 上。

3. ESP8266 模組燒入 NodeMCU firmware,並用 ESPloer 寫入三支 LUA 程式,做為接收 Mini AirBox 感測數值的程式,並連網以 MQTT 上傳資料給 NAS QIoT Suite Lite 更換好模組,置入 Mini AirBox 內盒即成。

開機畫面:

顯示畫面:

二、燒錄 NodeMCU 方式:

1.下載 NodeMCU bin 檔:https://github.com/nodemcu/nodemcu-firmware/releases

2.下載 ESP8266 專用燒錄程式:https://github.com/nodemcu/nodemcu-flasher

3.ESP8266 接腳圖

4.使用 USB to RS232(TTL 電壓準位) 線材連接電腦

►接線方式

(1) USB to TTL TX 要接 ESP8266 WiFi 模組的RX

(2) USB to TTL RX 要接 ESP8266 WiFi 模組的TX

(3) USB to TTL 5V 要接 ESP8266 WiFi 模組的VCC

(4) USB to TTL GND 要接 ESP8266 WiFi 模組的GND

5.須將 ESP8266 模組之 IO0 GND 後進入燒錄模式,並於開始燒錄系統時將 RST 接腳接觸 GND 進行 Reset,燒錄程式即可將 NodeMCU bin 檔燒錄至 ESP8266 中。

6.執行燒錄系統程式步驟:

(1)選擇COM Port

(2)Config Tab選擇所下載的 NodeMCU bin 檔。

(4)可切到 Log Tab 確認 USB 線是否與 ESP8266 模組正確連線且 Ready

(5) Operation Tab ,按 Flash(F) 鍵即開始燒錄 NodeMCU 系統。(記得須先將 ESP8266模組之 IO0 GND 進入燒錄模式,並於開始燒錄系統時將 RST 接腳接觸 GND 進行Reset,才會開始燒錄)

(6)燒錄完成畫面如下:

(7)可切到 Log Tab 確認是否燒錄成功,若成功將出現下列畫面,即可將 USB 拔除。

三、利用ESPLORER工具寫入LUA程式

1.下載 ESPLORER 軟體:https://github.com/4refr0nt/ESPlorer

在下載頁面http://esp8266.ru/esplorer-latest/?f=ESPlorer.zip,再將ESPlorer.zip解壓縮至一個目錄中。

2執行 EsPlorer.bat(須將 USB ESP8266 的連插回 PCIO0 RST 接腳移除)

3.進入 LUA 程式編輯畫面:

4. 選擇 COM Port

5. 選擇傳輸率,ESP8266 NodeMCU 燒錄完預設為 115200bps,再按 Open

6. 在左半邊 CODE 頁面視窗寫一下簡單測試程式,再按看一下結果。

print(‘hello world’);

7. 分別開啟 init.luaWiFi.luamqtt.lua三支程式,並寫入 ESP8266 NodeMCU 之檔案系統。

(1)init.lua 程式於 ESP8266 NodeMCU 啟動後會自動執行。

(2)Lua 程式中 dofile(‘ ‘); 指令是執行 NodeMCU 檔案系統內的 .Lua 程式,例如:dofile(‘filename.lua’);

(3)可按查看 NodeMCU 檔案系統內的已儲存的檔案:

8. “init.luamqtt.luawifi.lua”分別寫入到 NodeMCU 檔案系統

(1)init.lua 設定 ESP8266 UART baud rate 9600

(2) mqtt.lua 是主要傳送MQTT訊息的程式(包含host,port,usernsme,password,topic都要在此設定)

(3)wifi.lua 是設定ESP8266 WiFi

9.程式碼如下:

(1)wifi.lua

ssid = “WiFi-AP”

passwd = “WiFi-password”

print(“set up wifi mode”)

wifi.setmode(wifi.STATION)

wifi.sta.config(ssid,passwd)

–here SSID and PassWord should be modified according your wireless router

wifi.sta.connect()

tmr.alarm(1, 1000, 1, function()

    if wifi.sta.getip()== nil then

        print(“Waiting…”)

    else

        tmr.stop(1)

        print(“OK”)

        –print(“Config done, IP is “..wifi.sta.getip())

        –dofile(“yourfile.lua”)

    end

end)

(2)mqtt.lua

host = “x.x.x.x”     //MQTT Broker Server

port = 1883

clientId = “AirBox_1500742900”  // QIoT建立時產生的Client Id

user = “9e4a6881-7255-471c-9a71-a66d212458b5”  // QIoT產生的user

pwss = “r:622218ee6e42ae77100e237d402942bc” // QIoT產生的pwss

topic = “qiot/things/admin/AirBox/air”   // QIoT產生的MQTT topic

m = mqtt.Client(clientId, 120, user, pwss)

m:lwt(“/lwt”, “offline”, 0, 0)

m:on(“connect”, function(client) print (“OK”) end)

–m:on(“offline”, function(client) print (“offline”) end)

m:connect(host, port, 0, function(client)

  print(“OK”)

(3)init.lua

dofile(“wifi.lua”)

uart.setup(0, 9600, 8, uart.PARITY_NONE, uart.STOPBITS_1, 1)  //配合原藍牙傳輸率設定為9600

print(“OK”)

10.分別載入及執行測試 3 .lua 程式

四、Mini AirBox程式修改

1. Mini Airbox SendBT.ino 部分修改為:

  Serial.write(“val=\””);

  Serial.print(F(“E”));

  Serial.print(pm25);

  Serial.print(F(“,”));

  Serial.print(t);

  Serial.print(F(“,”));

  Serial.print(h);

  Serial.print(F(“,”));

  Serial.print(CO2);

  Serial.write(“\”;dofile(‘mqtt.lua’)\r\n”);

2.Mini Airbox主要是把原來送給 BT 的,改成送給 ESP8266 資料串及執行指令給 ESP8266執行

五、QIoT 環境建立

1.啟動 QIoT Suite Lite

2.建立 IoT Application

3.增加感測裝置

4.建立連線方式:

5.取得 MQTT 連線參數:clientIdusername passwordhostport 等資訊。

6.取得 MQTT 連線 topic 參數:

7.連線後利用 MQTTBox 測試接收 topic 資料:

8.使用 Node-RED 接收 MQTT 資料並利用 Dashboard 顯示:

9.Node-RED Dashboard source Code

(可利用Node-RED import clipboard 匯入)

[{“id”:”a0c69b59.1a67f8″,”type”:”ui_gauge”,”z”:”120555ad.f91cca”,”name”:””,”group”:”658b4bb2.9a50c4″,”order”:0,”width”:0,”height”:0,”gtype”:”gage”,”title”:”CO2″,”label”:”PPM”,”format”:”{{value}}”,”min”:0,”max”:”5000″,”colors”:[“#00b500″,”#e6e600″,”#ca3838″],”seg1″:”1500″,”seg2″:”2500″,”x”:721.7656784057617,”y”:635.7501153945923,”wires”:[]},{“id”:”8e6b714a.ae61a”,”type”:”change”,”z”:”120555ad.f91cca”,”name”:””,”rules”:[{“t”:”move”,”p”:”payload.value”,”pt”:”msg”,”to”:”payload”,”tot”:”msg”}],”action”:””,”property”:””,”from”:””,”to”:””,”reg”:false,”x”:502.5000915527344,”y”:631.0001382827759,”wires”:[[“cdd991e2.314b4″,”a0c69b59.1a67f8”]]},{“id”:”cdd991e2.314b4″,”type”:”ui_chart”,”z”:”120555ad.f91cca”,”name”:””,”group”:”658b4bb2.9a50c4″,”order”:0,”width”:0,”height”:0,”label”:”CO2(PPM)”,”chartType”:”line”,”legend”:”false”,”xformat”:”HH:mm:ss”,”interpolate”:”linear”,”nodata”:””,”ymin”:”100″,”ymax”:”3000″,”removeOlder”:”30″,”removeOlderPoints”:””,”removeOlderUnit”:”60″,”cutout”:0,”colors”:[“#1f77b4″,”#aec7e8″,”#ff7f0e”,”#2ca02c”,”#98df8a”,”#d62728″,”#ff9896″,”#9467bd”,”#c5b0d5″],”x”:741.5000686645508,”y”:567.9999523162842,”wires”:[[],[]]},{“id”:”90f4fdaf.eff3c”,”type”:”change”,”z”:”120555ad.f91cca”,”name”:””,”rules”:[{“t”:”move”,”p”:”payload.col4″,”pt”:”msg”,”to”:”payload.value”,”tot”:”msg”}],”action”:””,”property”:””,”from”:””,”to”:””,”reg”:false,”x”:497.7657012939453,”y”:566.7500228881836,”wires”:[[“8e6b714a.ae61a”]]},{“id”:”c338e157.c9566″,”type”:”csv”,”z”:”120555ad.f91cca”,”name”:””,”sep”:”,”,”hdrin”:””,”hdrout”:””,”multi”:”one”,”ret”:”\\n”,”temp”:””,”x”:149.50000762939453,”y”:321.00002098083496,”wires”:[[“2bdd4726.cb0fe8″,”640b2f28.c4026″,”90f4fdaf.eff3c”,”8301e6a4.295b28″]]},{“id”:”993377b6.e7fca8″,”type”:”change”,”z”:”120555ad.f91cca”,”name”:””,”rules”:[{“t”:”move”,”p”:”payload.value”,”pt”:”msg”,”to”:”payload”,”tot”:”msg”}],”action”:””,”property”:””,”from”:””,”to”:””,”reg”:false,”x”:192.76564025878906,”y”:125.75001239776611,”wires”:[[“c338e157.c9566”]]},{“id”:”2bdd4726.cb0fe8″,”type”:”change”,”z”:”120555ad.f91cca”,”name”:””,”rules”:[{“t”:”move”,”p”:”payload.col2″,”pt”:”msg”,”to”:”payload.value”,”tot”:”msg”}],”action”:””,”property”:””,”from”:””,”to”:””,”reg”:false,”x”:485.76564025878906,”y”:290.75001430511475,”wires”:[[“737662fa.72e72c”]]},{“id”:”640b2f28.c4026″,”type”:”change”,”z”:”120555ad.f91cca”,”name”:””,”rules”:[{“t”:”move”,”p”:”payload.col3″,”pt”:”msg”,”to”:”payload.value”,”tot”:”msg”}],”action”:””,”property”:””,”from”:””,”to”:””,”reg”:false,”x”:491.76563262939453,”y”:430.75009059906006,”wires”:[[“58c50f34.43071”]]},{“id”:”8301e6a4.295b28″,”type”:”function”,”z”:”120555ad.f91cca”,”name”:”get_PM25″,”func”:”msg.payload = msg.payload.col1.substring(1)\nreturn msg;”,”outputs”:1,”noerr”:0,”x”:471.3908500671387,”y”:195.02734184265137,”wires”:[[“8fd44775.be11a8″,”c3bb17ae.434ef8”]]},{“id”:”130b393b.7717c7″,”type”:”json”,”z”:”120555ad.f91cca”,”name”:”input”,”x”:288.3828125,”y”:53.59765625,”wires”:[[“993377b6.e7fca8”]]},{“id”:”737662fa.72e72c”,”type”:”change”,”z”:”120555ad.f91cca”,”name”:””,”rules”:[{“t”:”move”,”p”:”payload.value”,”pt”:”msg”,”to”:”payload”,”tot”:”msg”}],”action”:””,”property”:””,”from”:””,”to”:””,”reg”:false,”x”:494.50006103515625,”y”:354,”wires”:[[“767706a5.089868″,”e920f594.4dd108”]]},{“id”:”58c50f34.43071″,”type”:”change”,”z”:”120555ad.f91cca”,”name”:””,”rules”:[{“t”:”move”,”p”:”payload.value”,”pt”:”msg”,”to”:”payload”,”tot”:”msg”}],”action”:””,”property”:””,”from”:””,”to”:””,”reg”:false,”x”:502.5001220703125,”y”:500.00006198883057,”wires”:[[“634ccf4c.b43e4″,”3463c266.bef8ae”]]},{“id”:”8fd44775.be11a8″,”type”:”ui_chart”,”z”:”120555ad.f91cca”,”name”:””,”group”:”ec6ebb08.209478″,”order”:0,”width”:0,”height”:0,”label”:”PM2.5(ug/m3)”,”chartType”:”line”,”legend”:”false”,”xformat”:”HH:mm:ss”,”interpolate”:”linear”,”nodata”:””,”ymin”:”0″,”ymax”:”100″,”removeOlder”:”30″,”removeOlderPoints”:””,”removeOlderUnit”:”60″,”cutout”:0,”colors”:[“#1f77b4″,”#aec7e8″,”#ff7f0e”,”#2ca02c”,”#98df8a”,”#fd0600″,”#ff9896″,”#9467bd”,”#c5b0d5″],”x”:717.5000839233398,”y”:133.00003576278687,”wires”:[[],[]]},{“id”:”c3bb17ae.434ef8″,”type”:”ui_gauge”,”z”:”120555ad.f91cca”,”name”:””,”group”:”ec6ebb08.209478″,”order”:0,”width”:0,”height”:0,”gtype”:”gage”,”title”:”PM2.5″,”label”:”ug/m3″,”format”:”{{value}}”,”min”:0,”max”:”100″,”colors”:[“#00b500″,”#e6e600″,”#ca3838″],”seg1″:”30″,”seg2″:”50″,”x”:701.382942199707,”y”:201.21101570129395,”wires”:[]},{“id”:”8dfde0cf.ab26c”,”type”:”mqtt in”,”z”:”120555ad.f91cca”,”name”:”AirBox-air”,”topic”:”qiot/things/admin/AirBox/air”,”qos”:”0″,”broker”:”cb8b7f67.8092″,”x”:122,”y”:38,”wires”:[[“130b393b.7717c7”]]},{“id”:”767706a5.089868″,”type”:”ui_chart”,”z”:”120555ad.f91cca”,”name”:””,”group”:”a34f86b4.ad7138″,”order”:0,”width”:0,”height”:0,”label”:”溫度(℃)”,”chartType”:”line”,”legend”:”false”,”xformat”:”HH:mm:ss”,”interpolate”:”linear”,”nodata”:””,”ymin”:”0″,”ymax”:”100″,”removeOlder”:”30″,”removeOlderPoints”:””,”removeOlderUnit”:”60″,”cutout”:0,”colors”:[“#1f77b4″,”#aec7e8″,”#ff7f0e”,”#2ca02c”,”#98df8a”,”#d62728″,”#ff9896″,”#9467bd”,”#c5b0d5″],”x”:717.5001907348633,”y”:283.00007152557373,”wires”:[[],[]]},{“id”:”e920f594.4dd108″,”type”:”ui_gauge”,”z”:”120555ad.f91cca”,”name”:””,”group”:”a34f86b4.ad7138″,”order”:0,”width”:0,”height”:0,”gtype”:”gage”,”title”:”溫度“,”label”:”℃”,”format”:”{{value}}”,”min”:0,”max”:”100″,”colors”:[“#00b500″,”#e6e600″,”#ca3838″],”seg1″:”30″,”seg2″:”50″,”x”:705.7656173706055,”y”:353.7500047683716,”wires”:[]},{“id”:”634ccf4c.b43e4″,”type”:”ui_chart”,”z”:”120555ad.f91cca”,”name”:””,”group”:”d410888.400eb78″,”order”:0,”width”:0,”height”:0,”label”:”溼度(%)”,”chartType”:”line”,”legend”:”false”,”xformat”:”HH:mm:ss”,”interpolate”:”linear”,”nodata”:””,”ymin”:”0″,”ymax”:”100″,”removeOlder”:”30″,”removeOlderPoints”:””,”removeOlderUnit”:”60″,”cutout”:0,”colors”:[“#1f77b4″,”#aec7e8″,”#ff7f0e”,”#2ca02c”,”#98df8a”,”#d62728″,”#ff9896″,”#9467bd”,”#c5b0d5″],”x”:730.5000534057617,”y”:435.0000686645508,”wires”:[[],[]]},{“id”:”3463c266.bef8ae”,”type”:”ui_gauge”,”z”:”120555ad.f91cca”,”name”:””,”group”:”d410888.400eb78″,”order”:0,”width”:0,”height”:0,”gtype”:”gage”,”title”:”溼度“,”label”:”RH(%)”,”format”:”{{value}}”,”min”:0,”max”:”100″,”colors”:[“#00b500″,”#e6e600″,”#ca3838″],”seg1″:”30″,”seg2″:”50″,”x”:715.7656631469727,”y”:506.75001525878906,”wires”:[]},{“id”:”658b4bb2.9a50c4″,”type”:”ui_group”,”z”:””,”name”:”QIoT_CO2″,”tab”:”3615d9b9.f2f096″,”disp”:true,”width”:”6″},{“id”:”ec6ebb08.209478″,”type”:”ui_group”,”z”:””,”name”:”QIoT_PM25″,”tab”:”3615d9b9.f2f096″,”disp”:true,”width”:”6″},{“id”:”cb8b7f67.8092″,”type”:”mqtt-broker”,”z”:””,”broker”:”220.134.193.170″,”port”:”1883″,”clientid”:””,”usetls”:false,”compatmode”:true,”keepalive”:”60″,”cleansession”:true,”willTopic”:””,”willQos”:”0″,”willPayload”:””,”birthTopic”:””,”birthQos”:”0″,”birthPayload”:””},{“id”:”a34f86b4.ad7138″,”type”:”ui_group”,”z”:””,”name”:”QIOT_Temp”,”tab”:”3615d9b9.f2f096″,”disp”:true,”width”:”6″},{“id”:”d410888.400eb78″,”type”:”ui_group”,”z”:””,”name”:”QIoT_Humi”,”tab”:”3615d9b9.f2f096″,”disp”:true,”width”:”6″},{“id”:”3615d9b9.f2f096″,”type”:”ui_tab”,”z”:””,”name”:”QIoT_MiniAirBox”,”icon”:”dashboard”}]

結語

從硬體到軟體超詳細的手把手教學,你是否也學會了呢?一起來運用 Mini AirBox 空氣盒子和 QNAP NAP QIoT 平台,打造自己的隨身氣象觀測站,氣象觀測達人就是你!

(責任編輯:林佳盈)


◎加入我們的Line,獲得更多及時文章更新&活動資訊→

加入好友

ChingChang Ko
ChingChang Ko

Author: ChingChang Ko

MakerPRO社群技術顧問 柯大創客屋社群創辦人,柯大有近30年資訊電子產業研發經驗,關心最新技術,並投入不綴並於社群分享技術經驗文。亦熱心指導新興團隊參與技術創意競賽,獲獎無數。專長包括物聯網軟硬體整合、整體服務平台規劃設計;熟悉各種物聯網開發板及藍芽、WiFi、NFC、Zigbee、LoRa等通訊技術並熟悉各種物聯網開發板:Arduino、Edison、Linkit one 、Ameba、Raspberry,精通物聯網低功耗通訊技術LPWAN:LoRa、Sigfox、NBIoT。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *