本文將介紹基于米爾電子MYD-LT536開發(fā)板(米爾基于全志T536開發(fā)板)的多協(xié)議物聯(lián)網(wǎng)關(guān)方案的開發(fā)測試。
米爾基于全志T536開發(fā)板
為了充分的應(yīng)用該開發(fā)板,結(jié)合T536處理器的特點,這里進(jìn)一步的進(jìn)行軟件開發(fā),充分利用開發(fā)板的硬件資源,完成業(yè)務(wù)產(chǎn)品的需求。這里以物聯(lián)網(wǎng)多協(xié)議網(wǎng)關(guān)應(yīng)用為研究為目的,首先建立基礎(chǔ)的從各個硬件設(shè)讀取硬件端口的數(shù)據(jù),并且通過SOCKET由網(wǎng)絡(luò)收發(fā)的過程。在一般開發(fā)物聯(lián)網(wǎng)網(wǎng)關(guān)時可以采用MQTT,MODBUS等協(xié)議庫,作為標(biāo)準(zhǔn)的通訊,來解決硬件型號采集和對TCP/IP網(wǎng)絡(luò)發(fā)送的過程。但有些業(yè)務(wù)則需要專有的通信協(xié)議來進(jìn)行通訊,比如TCP、IP或者UDP的方式進(jìn)行網(wǎng)絡(luò)收發(fā)。
在米爾的官方資料中已經(jīng)提供了全套的開發(fā)資料,可以參考開發(fā)板的資料,來搭建所需要的開發(fā)環(huán)境。開發(fā)資料中提供了系統(tǒng)固化鏡像、Bootloader源碼、內(nèi)核驅(qū)動源碼,以及豐富的Demo程序,閱讀資料有助于快速的構(gòu)建開發(fā)環(huán)境。這里將在此開發(fā)板上進(jìn)行驗證和測試。
1.主機硬件端口讀取
米爾在T536開發(fā)板上支持了豐富的端口并且開發(fā)板上做了型號的隔離,非常適合工業(yè)物聯(lián)網(wǎng)型號采集和控制。首先查看一下開發(fā)板的端口硬件資源:
開發(fā)板的物聯(lián)網(wǎng)接口資源豐富,它引出2路RS485、1路RS232、2路CAN、3路Ethernet、5路USB、Local Bus等通信接口,同時引出LVDS,HP OUT/MIC IN等音視頻多媒體接口,內(nèi)置2TOPS NPU、8M@30fps ISP,并支持4K@25fps H.264視頻編碼。
這里首先進(jìn)行讀取RS232和485端口數(shù)據(jù),這里設(shè)計可配置的數(shù)據(jù)參數(shù)讀物方式,端口配置保存在板子用戶目錄下。
2.端口配置文件
通過使用端口配置,可以方便的在實施時配置與業(yè)務(wù)對應(yīng)的參數(shù),符合應(yīng)用場景。這樣不必修改程序即可投入使用,這里配置端口文件如下
3.進(jìn)程間通訊程序RPC
為了使讀取的數(shù)據(jù),能多重的使用,這里使用多線程的方式,其中一個線程負(fù)責(zé)讀取線程,并把讀取的數(shù)據(jù)壓入系統(tǒng)的隊列中。另外一個線程則可以檢查和處理數(shù),比如對數(shù)據(jù)做異常值檢查,對數(shù)據(jù)做平滑,抽稀,均值等處理,通信線程則把需要的數(shù)據(jù)向另外的進(jìn)程通過進(jìn)程通訊的方式進(jìn)行發(fā)送,RPC線程程序設(shè)計如下:
4.交叉編譯環(huán)境腳本編寫
編寫好編譯腳本,即完成整體工程的創(chuàng)建,并傳輸?shù)骄幾g環(huán)境主機中進(jìn)行編譯。把工程項目傳到主機交叉編譯環(huán)境中:
然后直接make 進(jìn)行編譯:
很順利的編譯成功。
5. 開發(fā)http服務(wù)程序
在物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)備中,通常采用web的管理界面,用戶監(jiān)控系統(tǒng)應(yīng)用的工作狀態(tài),以及進(jìn)行的必要的配置和設(shè)置等工作。這里設(shè)計一個嵌入式的http服務(wù)程序,考慮服務(wù)程序和硬件緊密結(jié)合,這里不使用nginx等這樣的獨立的web服務(wù)程序,而是使用httpd開源的小型http服務(wù)工程,進(jìn)行二次開發(fā),好處是可以方便的加入對硬件的訪問以及特別的應(yīng)用功能,不如獲取端口的數(shù)據(jù),并做處理,通過web網(wǎng)關(guān)傳到頁面前端,通過動態(tài)html腳本,完成靈活的頁面和底層訪問的功能。這里使用httpd開源工程進(jìn)行二次開發(fā):
工程主代碼如下:
工程目錄如下:
其中需要創(chuàng)建幾個運行目錄,tmpl是前端頁面模板目錄,里面可以放入html模板,供http服務(wù)器程序渲染輸出最終的html頁面。
www目錄則放置靜態(tài)資源文件,如圖片,樣式表文件,js前端腳本文件等。
這幾個目錄也需要在開發(fā)板上創(chuàng)建。
對工程進(jìn)行編譯,編譯如下:
可見成功的編譯出httpd板上執(zhí)行程序。
6.設(shè)計并開發(fā)前端頁面
為了使這個物聯(lián)網(wǎng)網(wǎng)關(guān)根直觀可用,這里還需要設(shè)計一組前端頁面,方便觀察網(wǎng)關(guān)的運行裝填,以及對響應(yīng)的配置文件等進(jìn)行配置。因為前端頁面不是開發(fā)板主要的開發(fā)目標(biāo),這里我們使用AI輔助設(shè)計前端頁面,順便也看一下AI前端頁面設(shè)計的能力。這里使用字節(jié)跳動的coze spzce智能體來設(shè)計物聯(lián)網(wǎng)網(wǎng)關(guān)的前端頁面,首先打開扣子空間頁面:
在提示詞中詳細(xì)描述我們的頁面設(shè)計內(nèi)容,提示詞內(nèi)容如下:
再點擊生成,經(jīng)過大約5分鐘的時間,生成了頁面代碼和樣式表文件以及相關(guān)js代碼,生成內(nèi)容如下:
輸出的頁面內(nèi)容如下:
7.手動調(diào)整修改HTML前端頁面
由智能體生成的頁面,通過檢查,發(fā)現(xiàn)頁面中有不少錯誤和缺失,首先對頁面進(jìn)行人工檢查錯誤和修改,對頁面中的實例數(shù)據(jù)進(jìn)行刪除,并修改為全局模板變量,對訪問的靜態(tài)資源文件位置進(jìn)行修改,對訪問數(shù)據(jù)的XRH方式進(jìn)行jquery方式進(jìn)行修改。
8.服務(wù)程序和前端頁面模板部署
把端口數(shù)據(jù)服務(wù)程序以及WEB后臺服務(wù)程序httpd都傳輸?shù)介_發(fā)板上,并且把頁面模板也傳輸?shù)介_發(fā)板httpd的同級目錄下:
前端頁面的部署:
9.服務(wù)啟動運行
部署好服務(wù)程序后,即可開始啟動相關(guān)服務(wù)程序,首先啟動
multi-serial-monitor
打開瀏覽器,輸入開發(fā)板的IP,訪問WEB頁面,顯示出來:
總結(jié)
通過初步的通訊多端口數(shù)據(jù)的采集與收發(fā),和使用多線程的的工作方式,以及多進(jìn)程的任務(wù)服務(wù)方式,實現(xiàn)了T536數(shù)據(jù)采集與收發(fā)的程序測試。并且開發(fā)了嵌入式的http服務(wù),提供一個簡單明了的客戶端管理界面,整個開發(fā)過程整體非常順暢。很容易建立好開發(fā)板的使用環(huán)境。同時通過開發(fā)板的多協(xié)議網(wǎng)關(guān)程序,也可以進(jìn)一步將該數(shù)據(jù)網(wǎng)關(guān)用戶智能生產(chǎn)控制領(lǐng)域,如智慧樓宇,智慧工廠等。通過開板的完備的功能以及各個子系統(tǒng)的緊湊聯(lián)系,使得面向物聯(lián)數(shù)據(jù)開發(fā)過程游刃有余,對進(jìn)一步開發(fā)復(fù)雜的業(yè)務(wù)邏輯和定制化業(yè)務(wù)流程也很有幫助。