牟曉東
在進行科創(chuàng)實驗時,將傳感器數(shù)據(jù)進行可視化處理(折線圖、雷達圖等),既提高數(shù)據(jù)解析的可讀性又讓實驗效果更加美觀。通過Python 代碼編程實現(xiàn)數(shù)據(jù)可視化的難度相對較大,各種函數(shù)參數(shù)的設(shè)置需要根據(jù)所引用庫模塊的不同以及呈現(xiàn)要求來進行細致的調(diào)整。借助于Mind+ 圖形化編程中的SIoT(針對學(xué)校場景的開源免費MQTT 系統(tǒng)),可一鍵創(chuàng)建本地物聯(lián)網(wǎng)服務(wù)器。我們可以在掌控板上輕松實現(xiàn)物聯(lián)網(wǎng)數(shù)據(jù)可視化,在此以遠程監(jiān)測一個微型大棚系統(tǒng)的聲音、光線和溫濕度等數(shù)據(jù)為例。
掌控板主板(2.1.0 版)及擴展板各一塊,DH11 溫濕度傳感器一個,HCSR04超聲波傳感器一個,小型面包板一塊,各種顏色的杜邦線若干。
首先,連接掌控板和擴展板,通過紅色和白色杜邦線將擴展板的電源正負極接入面包板;然后,將溫濕度傳感器和超聲波傳感器的引腳插入面包板,通過兩組紅色和白色杜邦線將電源的正負極分別接至各自引腳的VCC 和GND端;接著,用一根黃色杜邦線將溫濕度傳感器中間的DAT 信號輸出端與擴展板的P0 引腳連接好,再分別用綠色和藍色杜邦線將超聲波傳感器的Trig 信號發(fā)射端、Echo 信號回聲端與擴展板的P1和P2 引腳連接好;最后,通過數(shù)據(jù)線將掌控板與電腦相連,通電待用(如圖1)。
在Mind+ 官網(wǎng)→教程→ 1.7 數(shù)據(jù)可視化→下載siot-win 壓縮包。解壓后運行其中的“start SIoT.bat”啟動服務(wù),然后到瀏覽器中輸入本機IP 及端口(比如http://192.168.1.101:8080)訪問,在彈出的對話窗口中填寫賬號(siot)和密碼(dfrobot)等信息進行登錄后,點擊“新建主題(Topic)”項,輸入“光線數(shù)據(jù)”“聲音數(shù)據(jù)”“溫度數(shù)據(jù)”“濕度數(shù)據(jù)”和“超聲波數(shù)據(jù)”,建立好五個主題,分別對應(yīng)掌控板自帶的光線傳感器、麥克風(fēng)、DH11 溫濕度傳感器以及HC-SR04 超聲波傳感器數(shù)據(jù)主題的訂閱(如圖2)。
使用Mind+(V1.8.0 RC1.0),新建“微型大棚遠程監(jiān)測”項目,開始圖形化編程:
在點擊左下角的“擴展”按鈕選擇“主控板”下的“掌控板”之后,再將“傳感器”中的“DHT11/22 溫濕度傳感器”和“超聲波測距傳感器”兩項加載,在“網(wǎng)絡(luò)服務(wù)”中將“MQTT”協(xié)議和“Wi-Fi”項加載;接著,在主界面中就會出現(xiàn)“ESP32 主程序”模塊,從左側(cè)“網(wǎng)絡(luò)服務(wù)”-“Wi-Fi”中選擇“Wi-Fi 連接到熱點:'' 密碼:‘'”模塊,將當(dāng)前所使用的Wi-Fi 名稱(zyyz108)和密碼(zyyz0108)填寫好;再將“Wi-Fi 連接成功?”模塊嵌入至“等待直到”模塊,并且通過“屏幕顯示文字‘ WiFi連接成功! ' 在第2 行”模塊,控制掌控板的OLED 顯示屏的文字信息提示;接著, 從“ 網(wǎng)絡(luò)服務(wù)”-“MQTT” 中選擇“MQTT 初始化參數(shù)”模塊,點擊右側(cè)的小齒輪圖標(biāo)進行各個參數(shù)的詳細設(shè)置——物聯(lián)網(wǎng)平臺:SIoT,服務(wù)器地址:192.168.1.101(與之前在瀏覽器中的訪問IP 地址相同),賬號和密碼與新建主題時相同(siot/dfrobot),點擊Topic 主題的加號直至出現(xiàn)0-4 共五個主題參數(shù),分別將“siot/ 光線數(shù)據(jù)”“siot/聲音數(shù)據(jù)”和“siot/ 超聲波數(shù)據(jù)”等依次設(shè)置好。
然后,選擇“MQTT 發(fā)起連接”模塊,同樣再通過“屏幕顯示文字' MQTT 連接成功! ' 在第3 行”模塊,控制掌控板OLED 顯示屏的文字信息提示;建立“循環(huán)執(zhí)行”結(jié)構(gòu),通過左側(cè)的“變量”-“新建字符串類型變量”建立“光線值”“聲音值”“溫度值”“濕度值”和“超聲波值”五個變量,并且分別將其值設(shè)置為:“讀取環(huán)境光強度”“讀取麥克風(fēng)聲音強度”“讀取引腳P0 DHT11 溫度(℃)”“讀取引腳P0 DHT11濕度(%rh)”和“讀取超聲波傳感器距離單位(厘米)trig 為P1 echo 為P2”; 等待1 秒鐘之后,執(zhí)行一組消息發(fā)送操作,均是通過MQTT 發(fā)送消息,分別將這五個變量所獲取的數(shù)據(jù)(字符串型)發(fā)送至Topic_0-Topic_4,并保存至數(shù)據(jù)庫。
保存好程序后,點擊左上角的“連接設(shè)備”項,再點擊右上角的“上傳至設(shè)備”項將程序上傳至掌控板(如圖3)。
此時,雖然掌控板已經(jīng)開始監(jiān)測產(chǎn)生并有數(shù)據(jù)發(fā)送,但還未進行可視化處理。點擊“可視化面板”項,在彈出的“Mind+ 數(shù)據(jù)可視化”窗口中進行基礎(chǔ)組件、顯示組件以及圖表組件等的設(shè)置:
選擇“文字”組件,將“組件標(biāo)題”設(shè)置為“微型大棚遠程監(jiān)測”,再將“內(nèi)容”設(shè)置為“光線數(shù)據(jù)、溫度數(shù)據(jù)、濕度數(shù)據(jù)、聲音數(shù)據(jù)、超聲波數(shù)據(jù)”,字號和顏色均可自定義;再選擇“進度儀表盤”,將“組件標(biāo)題”設(shè)置為“超聲波數(shù)據(jù)”,主題Topic 選擇對應(yīng)的“siot/ 超聲波數(shù)據(jù)”,“組件單位”設(shè)置為“厘米”;其余四個主題分別選擇設(shè)置為:濕度數(shù)據(jù)“水波圖”、溫度數(shù)據(jù)“等級儀表盤”、光線數(shù)據(jù)“迷你面積圖”、聲音數(shù)據(jù)“折線圖”,并且分別將對應(yīng)的主題Topic、數(shù)據(jù)單位、組件的寬度與高度以及當(dāng)前顯示數(shù)據(jù)的數(shù)量等設(shè)置好,展示出數(shù)據(jù)可視化的實時效果(如圖4)。
此時,不管是掌控板的板載光線與麥克風(fēng)傳感器,還是通過擴展板連接的溫濕度傳感器與超聲波傳感器,它們監(jiān)測獲取的數(shù)據(jù)通過綁定的對應(yīng)Topic 主題進行發(fā)送與接收,最終在Mind+ 的可視化面板上動態(tài)呈現(xiàn)出來。在掌控板的OLED 顯示屏有“Wi-Fi 連接成功!”“MQTT 連接成功!”的實時工作提示信息;同時在瀏覽器的“數(shù)據(jù)管理”頁面中,五個訂閱的主題也分別顯示有接收和發(fā)送的數(shù)據(jù)總數(shù)、最新數(shù)據(jù)以及對應(yīng)的時間,可根據(jù)情況點擊“查看詳情”“清空數(shù)據(jù)”或“刪除”項進行對應(yīng)的操作(如圖5)。