作者:柯大
本文針對 QNAP QIoT Suite Lite 物聯網開發平台,利用 Mini AirBox 空氣盒子,將感測資料透過 WiFi 通訊以MQTT 協定傳送到 QNAP NAP QIoT 平台,一次享盡公私有雲的所有好處!。
QNAP 研發的 QIoT Suite Lite 多樣化實用模組,可以串聯起Mini AirBox 空氣盒子,讓你打造自己的 Mini AirBox 空氣盒子氣象觀測站,進而能將測到的溫濕度、PM 2.5、Co2 等各種氣候指數,透過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 ,包含 Gateway、Rules Engine 及視覺化資料的Dashboard。從裝置連結到 NAS 再到資料呈現,一次搞定。
QIoT Suite Lite 提供了三個重要元素來打造 IoT 應用環境:裝置閘道 (Device Gateway)、規則引擎 (Rules Engine) 與資料儀表板 (Dashboard),支援 MQTT/MQTTS、HTTP/HTTPS 和 CoAP 等多種通訊協定連接 IoT 物件,可將感應裝置所產生的資料傳輸到裝置閘道。
QIoT Suite Lite 採用 Node-RED 服務作為規則引擎,能夠直覺地定義數據資料的邏輯與判讀方式,其圖像化的可拖曳式工具,幾乎不需要額外的程式撰寫即可完成。QIoT 儀表板則內含多樣小工具,協助使用者以視覺化的儀表板遠端監控和管理物聯網應用。
QIoT Suite Lite 支援(但不限於)的開發板包括 Arduino Yun、Raspberry Pi 和 Intel Edison 三款;亦提供完整 API 可將儲存在 QNAP NAS 中的各項裝置數據介接至其他儀表板工具(如 Microsoft Power BI)去做進一步分析。
QIoT Suite Lite 更可應用於進階的物聯網情境,比如霧運算 (Fog Computing),可將多台 QNAP NAS 配置為霧運算分層次分區域運算處理架構的分散式節點,以更有效率的方式,在更接近於資料來源處的節點進行資料處理。
基於私有雲架構的 QIoT Suite Lite 亦彈性支援公有雲,帶來一次盡享公私有雲好處的優勢。使用者可將龐大的物聯網資料儲存在費用較低廉的 QNAP NAS 私有雲上,將篩選後的重要資料轉接或匯出至第三方付費公有雲後,再去做更深度的資料分析,以最經濟的方式享受高效益的物聯網服務。
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.5、Co2…等,而且內建鋰電池,還可以用行動電源充電、攜帶方便。對內對外都可為自己的小孩家人朋友們把關空氣品質,並可透過藍牙傳送數值至手機 APP 記錄資料及查看統計曲線。
Mini AirBox使用的材料表:
Mini AirBox 內定組裝完成之通訊介面為藍牙,再利用手機APP讀取感測值記錄。
可下載不同APP來使用:
Mini AirBox專用的開發板底板MiniDuino 專利設計 8Pin 多功能擴充界面提供藍牙、WiFi、LoRa 等不同通訊傳輸模組。
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 接 VCC,GND 接 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 方式:
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程式
2執行 EsPlorer.bat(須將 USB 連 ESP8266 的連插回 PC,IO0 及 RST 接腳移除)
3.進入 LUA 程式編輯畫面:
4. 選擇 COM Port。
5. 選擇傳輸率,ESP8266 NodeMCU 燒錄完預設為 115200bps,再按 Open。
6. 在左半邊 CODE 頁面視窗寫一下簡單測試程式,再按看一下結果。
print(‘hello world’);
7. 分別開啟 init.lua、WiFi.lua、mqtt.lua三支程式,並寫入 ESP8266 NodeMCU 之檔案系統。
(1)init.lua 程式於 ESP8266 NodeMCU 啟動後會自動執行。
(2)Lua 程式中 dofile(‘ ‘); 指令是執行 NodeMCU 檔案系統內的 .Lua 程式,例如:dofile(‘filename.lua’);
(3)可按查看 NodeMCU 檔案系統內的已儲存的檔案:
8. 將“init.lua、mqtt.lua、wifi.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 routerwifi.sta.connect()tmr.alarm(1, 1000, 1, function()if wifi.sta.getip()== nil thenprint(“Waiting…”)elsetmr.stop(1)print(“OK”)–print(“Config done, IP is “..wifi.sta.getip())–dofile(“yourfile.lua”)endend)
(2)mqtt.lua
host = “x.x.x.x” //MQTT Broker Serverport = 1883clientId = “AirBox_1500742900” // QIoT建立時產生的Client Iduser = “9e4a6881-7255-471c-9a71-a66d212458b5” // QIoT產生的userpwss = “r:622218ee6e42ae77100e237d402942bc” // QIoT產生的pwsstopic = “qiot/things/admin/AirBox/air” // QIoT產生的MQTT topicm = 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) //配合原藍牙傳輸率設定為9600print(“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 連線參數:clientId、username 、password、host、port 等資訊。
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 平台,打造自己的隨身氣象觀測站,氣象觀測達人就是你!
沒有留言:
張貼留言