孫國輝,李佳奇,李超民
(哈爾濱理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,黑龍江 哈爾濱 150000)
隨著無線通信技術(shù)、計(jì)算機(jī)技術(shù)、嵌入式技術(shù)、傳感器技術(shù)等不斷地發(fā)展,物聯(lián)網(wǎng)各方面的技術(shù)也在日趨成熟,目前已經(jīng)被廣泛地應(yīng)用在智能家居、智能交通、智慧農(nóng)業(yè)、智慧城市、物流倉儲(chǔ)、公共安防等諸多領(lǐng)域。物聯(lián)網(wǎng)正在以全面感知、互聯(lián)互通、智能處理等為特征,實(shí)現(xiàn)人與人、人與物和物與物之間的通信[1]。
目前,多協(xié)議網(wǎng)關(guān)產(chǎn)品在國內(nèi)各大公司已經(jīng)出現(xiàn)。2019 年9 月,小米公司推出了全新的米家智能多模網(wǎng)關(guān),相對(duì)于前期網(wǎng)關(guān)產(chǎn)品,這套網(wǎng)關(guān)加入了對(duì)藍(lán)牙協(xié)議的支持,成為新一代智能家庭控制中心。網(wǎng)關(guān)可以支持三種通信協(xié)議:ZigBee、WiFi、BLE&BLE。所在只需一個(gè)網(wǎng)關(guān),就能夠?qū)崿F(xiàn)小米智能設(shè)備如小愛同學(xué)、小米米家智能門鎖、米家LED 吸頂燈、米家空調(diào)伴侶2、米家無線開關(guān)、米家LED 吸頂燈等智能家居產(chǎn)品,打造強(qiáng)大的智能家庭系統(tǒng)實(shí)現(xiàn)定時(shí)開合窗簾、播放音樂、開門自動(dòng)亮燈或一鍵關(guān)閉家中指定燈與電器。深圳奧卓領(lǐng)航有限公司推出的AnyPi 多協(xié)議網(wǎng)關(guān)解決方案,是一種支持Python/Javascript 可編程網(wǎng)關(guān)解決方案。這種IoT網(wǎng)關(guān)為異構(gòu)連接、邊緣計(jì)算、低功耗無線設(shè)備而設(shè)計(jì),可用于大規(guī)模的低功耗無線設(shè)備的部署,實(shí)現(xiàn)Zigbee/BLE/WiFi/Lora 到互聯(lián)網(wǎng)云服務(wù)之間的橋接,網(wǎng)關(guān)將采集的數(shù)據(jù)最終傳輸至AnyPi 的云服務(wù)。
這些網(wǎng)關(guān)在應(yīng)用方式上分為兩種,一種只支持自己的物聯(lián)網(wǎng)產(chǎn)品族群。另一種是需要專業(yè)軟件開發(fā)人員進(jìn)行二次開發(fā)的可編程網(wǎng)關(guān),編程語言常見為Python 或Javascript。而對(duì)于某些需要快速設(shè)計(jì)、快速實(shí)施的應(yīng)用場景并不實(shí)用[2]。對(duì)于某些應(yīng)用場景,存在如物聯(lián)網(wǎng)產(chǎn)品設(shè)計(jì)開發(fā)過程中需要快速開發(fā)原型,物聯(lián)網(wǎng)技術(shù)教學(xué)過程中需要的數(shù)據(jù)傳輸服務(wù)支持,學(xué)生或電子技術(shù)愛好者自制智能終端需要快速組網(wǎng)并接入開放設(shè)備云平臺(tái)等此類需求。低成本可配置多協(xié)議網(wǎng)關(guān)系統(tǒng)是有應(yīng)用前景的。
此外,物聯(lián)網(wǎng)項(xiàng)目實(shí)施過程中,采用自行開發(fā)專用的網(wǎng)關(guān)技術(shù)進(jìn)行協(xié)議轉(zhuǎn)換存在大量的重復(fù)開發(fā),這種過程會(huì)對(duì)人力物力造成浪費(fèi),導(dǎo)致增加生產(chǎn)成本[3]。
針對(duì)以上分析,本項(xiàng)目設(shè)計(jì)一套開放的、可配置的、可視化的多協(xié)議網(wǎng)絡(luò)數(shù)據(jù)傳輸系統(tǒng),包括硬件和軟件設(shè)計(jì)方案。主要功能設(shè)計(jì)用于物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)中將不同通信協(xié)議所采集的數(shù)據(jù)匯聚、解析、上傳到服務(wù)器的網(wǎng)關(guān)與系統(tǒng)的應(yīng)用。同時(shí),為使用者提供靈活的配置方式,使用者可通過手機(jī)端APP 快速建立非加密數(shù)據(jù)解析配置文件,下載至網(wǎng)關(guān)進(jìn)行數(shù)據(jù)解析。同時(shí)可以根據(jù)需求在APP 端創(chuàng)建數(shù)據(jù)圖形化配置文件與數(shù)據(jù)上傳接口配置文件,用于數(shù)據(jù)的實(shí)時(shí)圖形化展示與上傳。使用者也可以對(duì)所監(jiān)控的數(shù)據(jù)設(shè)置閾值與報(bào)警。在界面設(shè)計(jì)過程中,使用者可根據(jù)自己需求進(jìn)行圖形組合,靈活地進(jìn)行自定義界面設(shè)計(jì),并可將界面配置文件傳輸給網(wǎng)關(guān)系統(tǒng)進(jìn)行實(shí)時(shí)展示。
可視化多協(xié)議數(shù)據(jù)傳輸系統(tǒng)由硬件網(wǎng)關(guān)、可視化多協(xié)議數(shù)據(jù)匯聚系統(tǒng)、網(wǎng)關(guān)輔助APP 三部分組成。系統(tǒng)架構(gòu)圖如圖1 所示。

圖1 系統(tǒng)架構(gòu)圖
網(wǎng)關(guān)系統(tǒng)分為軟件和硬件兩個(gè)部分,它的軟件部分主要分為應(yīng)用層、協(xié)議網(wǎng)關(guān)抽象層和操作系統(tǒng)層。層次性的劃分,使得每個(gè)層次均有其相應(yīng)要實(shí)現(xiàn)的功能。其中:
(1)操作系統(tǒng)層:這一層主要實(shí)現(xiàn)的是當(dāng)設(shè)備啟動(dòng)后執(zhí)行操作系統(tǒng),從而完成相關(guān)聯(lián)的硬件的驅(qū)動(dòng),這樣就可以隨時(shí)等待連接來執(zhí)行命令。
(2)應(yīng)用層:這一層主要實(shí)現(xiàn)的是為用戶提供交互平臺(tái),這里提供手動(dòng)開啟網(wǎng)關(guān),更改網(wǎng)關(guān)配置,更改數(shù)據(jù)顯示方式和數(shù)據(jù)封裝等面向用戶層面的功能。例如通過底層ZigBee 協(xié)議棧傳輸上來的數(shù)據(jù)包想要封裝成Http 包的形式傳輸出去,就需要去掉其各層添加的頭部或尾部信息,從而解析出真正傳輸?shù)挠杏脭?shù)據(jù),再在數(shù)據(jù)中添加Http 包頭信息,再封裝成MAC 層分組、物理層分組、請求行以及請求頭部等信息,最后通過WiFi 將數(shù)據(jù)傳輸出去。這一層是項(xiàng)目研究的重點(diǎn)方式,即如何實(shí)現(xiàn)有效的多種協(xié)議轉(zhuǎn)換。
(3)網(wǎng)關(guān)抽象層:這一層就是為網(wǎng)關(guān)提供各種協(xié)議和服務(wù)所需的各種構(gòu)件,同時(shí)為上層應(yīng)用提供服務(wù)。
系統(tǒng)的具體實(shí)現(xiàn)流程是傳感器通過ZigBee 或藍(lán)牙網(wǎng)絡(luò)向硬件網(wǎng)關(guān)傳輸數(shù)據(jù),硬件網(wǎng)關(guān)關(guān)聯(lián)的ZigBee協(xié)調(diào)器或藍(lán)牙模塊讀取到該數(shù)據(jù),并根據(jù)手機(jī)端APP所發(fā)送的配置文件解析該數(shù)據(jù),同時(shí)通過網(wǎng)關(guān)匯聚系統(tǒng)二次解析處理后實(shí)時(shí)顯示在網(wǎng)關(guān)配套的顯示屏幕上。其中,系統(tǒng)的可視化的展示可由使用者設(shè)置,網(wǎng)關(guān)屏幕所展示的圖形可通過APP 所生成的配置文件進(jìn)行設(shè)計(jì),如形狀、位置、顏色等。其中,采集到的傳感器數(shù)據(jù)也可根據(jù)網(wǎng)絡(luò)配置文件的設(shè)置,進(jìn)行封裝并定向傳輸至遠(yuǎn)程服務(wù)器,具體的數(shù)據(jù)交互流程如圖2 所示。

圖2 可視化多協(xié)議數(shù)據(jù)傳輸系統(tǒng)數(shù)據(jù)交互圖
物聯(lián)網(wǎng)是將標(biāo)準(zhǔn)工業(yè)設(shè)備、射頻識(shí)別(RFID)、外圍硬件系統(tǒng)等按約定協(xié)議進(jìn)行通信,以實(shí)現(xiàn)智能識(shí)別、數(shù)據(jù)采集、定位、跟蹤、監(jiān)控和管理的一種網(wǎng)絡(luò)技術(shù)。而構(gòu)建物聯(lián)網(wǎng)的核心就是物聯(lián)網(wǎng)軟網(wǎng)關(guān),網(wǎng)關(guān)主要實(shí)現(xiàn)異構(gòu)網(wǎng)絡(luò)的通信,轉(zhuǎn)發(fā)等功能,即按特定需求設(shè)計(jì)的網(wǎng)絡(luò)協(xié)議的轉(zhuǎn)換器[4]。
網(wǎng)關(guān)對(duì)數(shù)據(jù)的操作可以分為三類:數(shù)據(jù)接收、數(shù)據(jù)發(fā)送和數(shù)據(jù)顯示。數(shù)據(jù)接收根據(jù)技術(shù)人員對(duì)網(wǎng)關(guān)啟動(dòng)前的人工配置,對(duì)各種協(xié)議傳來的數(shù)據(jù)進(jìn)行接收和解析。數(shù)據(jù)發(fā)送部分根據(jù)前期設(shè)定,將解析完成的數(shù)據(jù)重新封裝,傳送給對(duì)應(yīng)的上位機(jī)。數(shù)據(jù)顯示將解析好的數(shù)據(jù)用文本和圖形兩種方式實(shí)時(shí)地在屏幕上顯示出來。網(wǎng)關(guān)系統(tǒng)功能實(shí)現(xiàn)劃分如圖3 所示。

圖3 系統(tǒng)功能框圖
針對(duì)網(wǎng)關(guān)需求的分析,對(duì)系統(tǒng)具體功能描述如下:
硬件網(wǎng)關(guān)主要是硬件解決方案,實(shí)現(xiàn)多協(xié)議數(shù)據(jù)的匯聚、轉(zhuǎn)換和顯示等功能,其構(gòu)成包含微型電腦、觸摸屏、ZigBee 模塊、藍(lán)牙模塊、WiFi 模塊、組網(wǎng)開關(guān)等。硬件網(wǎng)關(guān)的主體設(shè)計(jì)如圖4 所示。

圖4 硬件網(wǎng)關(guān)設(shè)計(jì)圖
網(wǎng)關(guān)匯聚系統(tǒng)主要是軟件解決方案,包括硬件控制與APP 進(jìn)行交互。具體實(shí)現(xiàn)配置、控制、報(bào)警等信息的交互,實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和遠(yuǎn)程配置。具體功能實(shí)現(xiàn)TCP/IP、Http、串口通信功能,數(shù)據(jù)格式配置文件管理,UI 配置文件管理,數(shù)據(jù)解析與實(shí)時(shí)數(shù)據(jù)圖形化,數(shù)據(jù)封裝與上傳,報(bào)警管理。服務(wù)器端預(yù)期效果圖如圖5 所示。

圖5 網(wǎng)關(guān)設(shè)置與運(yùn)行圖
創(chuàng)建數(shù)據(jù)解析配置文件,創(chuàng)建數(shù)據(jù)二次封裝傳輸配置文件,創(chuàng)建圖形顯示配置文件,傳輸配置文件。
手機(jī)APP 預(yù)期效果圖如圖6 所示。

圖6 手機(jī)APP 端設(shè)置圖
系統(tǒng)擬采用的技術(shù)方案及可行性分析如下:
APP 采用Android 平臺(tái)原生開發(fā),配置文件的文件格式為XML,移動(dòng)端可通過藍(lán)牙或WiFi 與網(wǎng)關(guān)進(jìn)行連接并傳輸已生成的配置文件。
基于 Android Things 平臺(tái)開發(fā),Android Things 支持物聯(lián)網(wǎng)通信協(xié)議 Weave。Weave 是一個(gè)不依賴底層的通信協(xié)議,可以運(yùn)行在任何常見的物聯(lián)網(wǎng)通信協(xié)議之上,如WiFi、Zigbee 等。串口通信基于9326 芯片及其官方庫,該方案的優(yōu)點(diǎn)是傳輸穩(wěn)定,可進(jìn)行數(shù)據(jù)加密傳輸。藍(lán)牙與WiFi 數(shù)據(jù)傳輸使用Android6.0 以上版本系統(tǒng)原生庫實(shí)現(xiàn)。網(wǎng)絡(luò)傳輸采用Okhttp 第三方庫實(shí)現(xiàn)。數(shù)據(jù)可視化生成方面,在Processing 第三方圖形庫的基礎(chǔ)上對(duì)其方法進(jìn)行二次封裝,這種方式的優(yōu)勢是運(yùn)行速度快,圖形構(gòu)建更靈活。
網(wǎng)關(guān)的智能處理系統(tǒng)采用樹莓派3B,外接微雪ARPI600 網(wǎng)絡(luò)模塊擴(kuò)展板,ZigBee 模塊使用Xbee S2B Pro,藍(lán)牙、WiFi、以太網(wǎng)模塊已由樹莓派集成,顯示屏使用樹莓派官方7 寸顯示屏,串口通信接口外接9326芯片進(jìn)行數(shù)據(jù)加密封裝,開關(guān)與其他傳感器使用相應(yīng)的模塊接入。
從硬件設(shè)計(jì)和實(shí)現(xiàn)層面,主要選擇Android Things進(jìn)行開發(fā),所有整體架構(gòu)是依據(jù)Android 的MVP 設(shè)計(jì)模式,配合View Model 而構(gòu)成MVVM 模式的設(shè)計(jì)方案。其中,界面設(shè)計(jì)由Layout 編程包的xml 完成設(shè)置,顯示視圖。用戶交互是用Activity 實(shí)現(xiàn),后臺(tái)運(yùn)行的耗時(shí)和復(fù)雜的算法處理用Service 實(shí)現(xiàn),同時(shí)采用圖形轉(zhuǎn)換類和硬件驅(qū)動(dòng)類等進(jìn)行配合以實(shí)現(xiàn)對(duì)于參數(shù)的可配置,數(shù)據(jù)的實(shí)時(shí)接收。在互不干擾的前提之下保持接收數(shù)據(jù),解析數(shù)據(jù),發(fā)送數(shù)據(jù)三條工作線程各自執(zhí)行,互不影響。
解析數(shù)據(jù)工作分為兩部分,一是根據(jù)設(shè)置對(duì)相應(yīng)協(xié)議進(jìn)行解析,將解析數(shù)據(jù)存入到線程安全的數(shù)組中;二是應(yīng)根據(jù)數(shù)組中的數(shù)據(jù)以及相應(yīng)配置封裝成相應(yīng)圖形,根據(jù)當(dāng)前已有的圖形個(gè)數(shù)等信息設(shè)定出當(dāng)前圖形的位置和大小。并在實(shí)例化后將其加入圖形列表中以便后續(xù)的繪制操作。
項(xiàng)目主要?jiǎng)?chuàng)新處是開發(fā)一套開放的,靈活可配置的多協(xié)議網(wǎng)絡(luò)傳輸系統(tǒng),為物聯(lián)網(wǎng)項(xiàng)目架構(gòu)提出低成本的、開放式的解決方案,主要的創(chuàng)新點(diǎn)有,設(shè)計(jì)并實(shí)現(xiàn)開放式的多協(xié)議網(wǎng)關(guān),可用于Zigbee、藍(lán)牙、WiFi、以太網(wǎng)、串口之間的協(xié)議轉(zhuǎn)換及數(shù)據(jù)傳遞;設(shè)計(jì)并實(shí)現(xiàn)可配置且易用的圖形化、可視化的數(shù)據(jù)展示平臺(tái);網(wǎng)關(guān)的多協(xié)議數(shù)據(jù)傳輸可通過手機(jī)APP 進(jìn)行遠(yuǎn)程配置。
項(xiàng)目設(shè)計(jì)構(gòu)建網(wǎng)關(guān)硬件,設(shè)計(jì)數(shù)據(jù)傳輸協(xié)議,構(gòu)建物聯(lián)網(wǎng)多模網(wǎng)關(guān),設(shè)計(jì)并實(shí)現(xiàn)可配置圖形生成程序,設(shè)計(jì)數(shù)據(jù)分析、封裝配置文件。設(shè)計(jì)兼容性較好,易于操作的手機(jī)端輔助APP。實(shí)現(xiàn)以易于操作、兼容性好、可快速配置、圖形設(shè)計(jì)自由的多模網(wǎng)關(guān)及系統(tǒng)。