楊振 張珣
摘 要:目前物聯(lián)網(wǎng)智能設(shè)備種類繁多,但設(shè)備性能缺乏統(tǒng)一標(biāo)準(zhǔn),對(duì)多物聯(lián)網(wǎng)終端互聯(lián)與控制造成了一定困難。因此提出MCMI與雙路徑并發(fā)的自動(dòng)跳頻Mesh組網(wǎng)方案,結(jié)合用戶控制端,設(shè)計(jì)基于雙向Sub-G的無(wú)線MESH智能家居控制系統(tǒng)。Mesh結(jié)構(gòu)為3層終端間通信,第一層與第二層構(gòu)成星形拓?fù)?,第二層與第三層構(gòu)成多連接樹(shù)形,較之一般Mesh結(jié)構(gòu),更加簡(jiǎn)潔且降低了硬件要求。通過(guò)MCMI與雙路徑并發(fā)的信號(hào)傳輸方式,消除了無(wú)線網(wǎng)絡(luò)信道干擾,信號(hào)穩(wěn)定性提高50%。為應(yīng)對(duì)各廠商協(xié)議不統(tǒng)一難以成為一個(gè)完整系統(tǒng)的問(wèn)題,設(shè)計(jì)上層專有協(xié)議以克服技術(shù)差異化。該系統(tǒng)經(jīng)過(guò)測(cè)試,運(yùn)行穩(wěn)定、性能優(yōu)秀、可信賴度高,并且協(xié)議還預(yù)留自定義接口,擁有一定的拓展能力。
關(guān)鍵詞:Sub-G頻段;智能照明;Mesh組網(wǎng);網(wǎng)狀拓?fù)?自動(dòng)跳頻;差分加密
DOI:10. 11907/rjdk. 201176
中圖分類號(hào):TP319文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2020)010-0209-05
Abstract:There are many types of IoT smart devices on the market today, and there is no certain uniform standard, which has caused some difficulties in the interconnection and control of IoT terminals. This system proposes a scheme of MCMI and dual-path concurrent automatic frequency hopping Mesh networking. Combined with the user control end, a wireless MESH smart home control system based on two-way Sub-G is designed. The Mesh structure in this paper is communication between three layers of terminals. The first layer and the second layer form a star topology, and the second layer and the third layer form a multi-connection tree. Compared with the general Mesh structure, it is more concise and reduces the hardware requirements. MCMI and dual-path concurrent signal transmission methods eliminate channel interference in wireless networks and increase signal stability by 50%。 In order to cope with the inconsistency of the protocols of various manufacturers and become a complete system, a proprietary protocol at the upper layer was designed to solve the technical difference. This system has been tested and runs stably, with excellent performance and high reliability, and the protocol also reserves custom interfaces, which has certain expansion capabilities.
Key Words:Sub-G frequency band; intelligent lighting; Mesh networking; Mesh topology; automatic frequency hopping; differential encryption
0 引言
近年來(lái),隨著無(wú)線通信技術(shù)的快速發(fā)展,模塊成本大幅降低,物聯(lián)網(wǎng)和智能家居產(chǎn)業(yè)蓬勃興起,用戶對(duì)控制系統(tǒng)的品質(zhì)要求越來(lái)越高。建立將智能家居終端連接起來(lái)的智能設(shè)備組網(wǎng)控制系統(tǒng),可實(shí)現(xiàn)設(shè)備點(diǎn)對(duì)點(diǎn)或集群控制[1],提高設(shè)備性能。便捷、高效且成本合理的無(wú)線組網(wǎng)系統(tǒng)應(yīng)用價(jià)值較大。
在已有研究的基礎(chǔ)上,考慮到家庭結(jié)構(gòu)中智能家具設(shè)備分布情況,選用穿墻能力和功耗更有優(yōu)勢(shì)的Sub-G頻段。薛文艷[2]分析無(wú)線自組織網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)現(xiàn),可根據(jù)路徑長(zhǎng)度、穩(wěn)定性、狀態(tài)尋找一條最優(yōu)路徑,因此將各智能設(shè)備以一定的拓?fù)渚W(wǎng)絡(luò)進(jìn)行組網(wǎng),使設(shè)備間通信更有結(jié)構(gòu)性;胡雷等[3]對(duì)Mesh控制性能進(jìn)行了研究,通過(guò)三級(jí)拓?fù)涞腗esh網(wǎng)絡(luò)技術(shù),加強(qiáng)了信號(hào)數(shù)據(jù)傳遞準(zhǔn)確性,為確保整個(gè)組網(wǎng)系統(tǒng)準(zhǔn)確性、動(dòng)態(tài)性可靠性和安全性,引入MCMI與雙路徑并發(fā)的信號(hào)傳遞方式,以保證信號(hào)高效性穩(wěn)定性。因此組網(wǎng)結(jié)構(gòu)由投放節(jié)點(diǎn)、運(yùn)輸節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)三節(jié)Mesh結(jié)構(gòu)組成,并加入MCMI與雙路徑并發(fā),消除信道干擾,避免通信延時(shí)與無(wú)線鏈路不穩(wěn)定帶來(lái)的問(wèn)題。根據(jù)李明明[4]對(duì)差分分析的研究,出于安全考慮使用Manchester差分加密算法,且計(jì)算儲(chǔ)存資源開(kāi)銷小,可以安全高效地進(jìn)行無(wú)線數(shù)據(jù)傳輸。
家庭智能家居設(shè)備種類繁多,難以統(tǒng)一控制不同品牌的產(chǎn)品。為實(shí)現(xiàn)便捷化控制,本文提出基于雙向Sub-G芯片的無(wú)線MESH軟件系統(tǒng),解決不同品牌智能設(shè)備控制方式差異化問(wèn)題,提高用戶便捷性與設(shè)備高效性。
1 系統(tǒng)結(jié)構(gòu)概況
本文系統(tǒng)采用MESH組網(wǎng)系統(tǒng),該通信網(wǎng)絡(luò)基于Sub-G頻段,在網(wǎng)關(guān)與終端之間可自動(dòng)組網(wǎng)形成網(wǎng)狀拓?fù)渚W(wǎng)絡(luò),通過(guò)移動(dòng)端或PC端頁(yè)面進(jìn)行交互,使用戶端與設(shè)備通信,以實(shí)現(xiàn)對(duì)智能家居、開(kāi)關(guān)系統(tǒng)等的控制??刂屏鞒倘鐖D1所示。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 系統(tǒng)主控電路
本文對(duì)照市場(chǎng)上不同的射頻芯片,搭建控制系統(tǒng),考慮到實(shí)際使用時(shí)設(shè)備數(shù)量與精確度對(duì)成本的影響,系統(tǒng)以低成本、計(jì)算效率高的BQ3905作為系統(tǒng)主芯片。BQ3905是一款低功耗的寬頻帶FSK 單芯片無(wú)線收發(fā)器,主要針對(duì)304-316、430-440、470-510、860-880和900-930MHz的Sub-G頻段。BQ3905使用時(shí)分雙工收發(fā)器,進(jìn)行設(shè)備交替發(fā)送和接收數(shù)據(jù),并支持?jǐn)?shù)據(jù)流模式或數(shù)據(jù)包模式。該芯片具有高集成度的特點(diǎn),芯片工作電壓范圍在1.9~3.6之間,其低電流的特點(diǎn)使芯片非常適應(yīng)于便攜式應(yīng)用。本文系統(tǒng)選用BQ3905的433MHz頻段進(jìn)行無(wú)線組網(wǎng)通訊,BQ3905無(wú)線模塊電路設(shè)計(jì)如圖2所示。
2.2 節(jié)點(diǎn)控制模塊
該模塊利用UTF87001芯片,獲取輸入信號(hào),并輸出狀態(tài)數(shù)據(jù)反饋給控制器。電路如圖3所示。
2.3 網(wǎng)關(guān)控制模塊
系統(tǒng)采用松翰公司的BQ3905芯片,該芯片擁有強(qiáng)大的性能與數(shù)據(jù)處理能力,因?yàn)樾柽B接Wi-Fi網(wǎng)絡(luò),所以網(wǎng)關(guān)控制模塊選擇USR-C322芯片,該芯片作為Wi-Fi控制芯片,除可轉(zhuǎn)化串口電平使其符合Wi-Fi無(wú)線網(wǎng)絡(luò)通信標(biāo)準(zhǔn),還連接運(yùn)營(yíng)商網(wǎng)絡(luò)??刂菩酒捎肧N8F5708,用于串口通信。
2.4 燈控測(cè)試模塊
本文系統(tǒng)選用LM78Wi-Fi燈控模組用于測(cè)試,該模組相比于其它產(chǎn)品封裝尺寸更佳,同時(shí)帶有PWM 調(diào)制技術(shù)。該智能燈模組在LED燈屏、燈珠控制、數(shù)字顯示網(wǎng)屏上有較多應(yīng)用,并擁有豐富的語(yǔ)音控制接口。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 軟件控制流程
打開(kāi)開(kāi)關(guān)后,各節(jié)點(diǎn)設(shè)備初始化進(jìn)行故障自檢,等待接收客戶端控制信號(hào)。在接收到控制信號(hào)后,通過(guò)本文系統(tǒng)采用的通信協(xié)議,讀取信號(hào)報(bào)文信息[5],判斷該信號(hào)是否為有效信號(hào)。若為有效信號(hào),則尋找一級(jí)運(yùn)輸節(jié)點(diǎn),即投放節(jié)點(diǎn),此時(shí)設(shè)置廣播數(shù)據(jù)包延時(shí)為20ms,并設(shè)置接收模式的延時(shí)為2s,開(kāi)始持續(xù)接收返回的應(yīng)答信號(hào);若未接收到應(yīng)答包,則持續(xù)等待應(yīng)答數(shù)據(jù)[3]。軟件主要控制流程如圖4所示。
3.2 組網(wǎng)構(gòu)建
將組網(wǎng)各個(gè)節(jié)點(diǎn)分為3級(jí),即第一級(jí)投放節(jié)點(diǎn)、第二級(jí)運(yùn)輸節(jié)點(diǎn)、第三級(jí)目標(biāo)節(jié)點(diǎn)。三級(jí)組網(wǎng)結(jié)構(gòu)如圖5所示。
組網(wǎng)結(jié)構(gòu)為樹(shù)形拓?fù)浣Y(jié)構(gòu),第二層(運(yùn)輸層)各節(jié)點(diǎn)之間又構(gòu)成星形拓?fù)浣Y(jié)構(gòu)[5],星形結(jié)構(gòu)由中心節(jié)點(diǎn)進(jìn)行信息支配,使終端設(shè)置適應(yīng)性更強(qiáng)且更加靈活;而第三層(目標(biāo)層)采用多連接樹(shù)形結(jié)構(gòu),該結(jié)構(gòu)擁有完整的普通樹(shù)形結(jié)構(gòu)的父子層級(jí)管理,又兼具星形拓?fù)鋸V度,在實(shí)際路由過(guò)程中可減少進(jìn)行三級(jí)路由的最佳路徑算法運(yùn)算量,在各設(shè)備具有強(qiáng)鏈接節(jié)點(diǎn)且集中執(zhí)行的情況下[6],兼顧成本與傳輸性能。
為了使通信結(jié)構(gòu)簡(jiǎn)潔、穩(wěn)定、靈活度高[7],因此3層深度的組網(wǎng)協(xié)議每層節(jié)點(diǎn)等級(jí)不同,按照等級(jí)高低,嚴(yán)格控制當(dāng)前層級(jí)功能。第一層節(jié)點(diǎn)通過(guò)接收到的客戶端控制信號(hào),下達(dá)組網(wǎng)建立消息,并收集子節(jié)點(diǎn)反饋信息;第二層節(jié)點(diǎn)負(fù)責(zé)轉(zhuǎn)發(fā)控制信號(hào),其中包括投放節(jié)點(diǎn)、同級(jí)節(jié)點(diǎn)信號(hào)的傳遞,本級(jí)節(jié)點(diǎn)狀態(tài)對(duì)上級(jí)節(jié)點(diǎn)的回饋以及向目標(biāo)節(jié)點(diǎn)下發(fā)信號(hào),屬于組網(wǎng)協(xié)議中最核心的信息中轉(zhuǎn)傳遞層;最底層目標(biāo)節(jié)點(diǎn)只有信息接收處理、同級(jí)信號(hào)傳遞與向上級(jí)發(fā)送反饋信息3種轉(zhuǎn)發(fā)方式。
3.3 專有協(xié)議設(shè)計(jì)
本文根據(jù)物聯(lián)網(wǎng)設(shè)備無(wú)線通信的數(shù)據(jù)模式,結(jié)合已有協(xié)議,設(shè)計(jì)一套嚴(yán)格的管控標(biāo)準(zhǔn)[8]協(xié)議。協(xié)議包括語(yǔ)法(數(shù)據(jù)包結(jié)構(gòu)與格式)、語(yǔ)義(通訊時(shí)約定應(yīng)答編碼)、時(shí)序(解析順序)3要素。
數(shù)據(jù)包由包頭和數(shù)據(jù)負(fù)載構(gòu)成。數(shù)據(jù)包包頭和負(fù)載結(jié)構(gòu)均為4字節(jié),每個(gè)字節(jié)長(zhǎng)度8位,結(jié)構(gòu)如圖6所示,4個(gè)字節(jié)分別存放不同信息。在包頭部分規(guī)定數(shù)據(jù)包驗(yàn)證信息,作為節(jié)點(diǎn)數(shù)據(jù)通信時(shí)校驗(yàn)規(guī)則,以此防止接收方與發(fā)送方因不同步而導(dǎo)致丟包;數(shù)據(jù)負(fù)載則依次是用戶在發(fā)送端的控制指令編碼,接收設(shè)備反饋信息或終端傳感器狀態(tài)編碼。
系統(tǒng)協(xié)議中的頭尾序列與大部分協(xié)議在一幀報(bào)文中的一致,均用于報(bào)文同步;設(shè)置上一跳、下一跳的地址,用于當(dāng)前節(jié)點(diǎn)與其它節(jié)點(diǎn)之間的報(bào)文傳遞;報(bào)文攜帶源地址和目標(biāo)地址信息,用于定位來(lái)源與傳遞的目的地;通過(guò)數(shù)據(jù)申明與描述符,判斷數(shù)據(jù)類型。
除此之外,協(xié)議中加入了對(duì)同一報(bào)文轉(zhuǎn)發(fā)次數(shù)的限制,以此限制報(bào)文轉(zhuǎn)發(fā)次數(shù)上限,避免“三角轉(zhuǎn)發(fā)”。若轉(zhuǎn)發(fā)次數(shù)達(dá)到上限,則將該報(bào)文丟棄[5],視作不可達(dá)。
3.4 Floyd最佳傳送距離算法
本文系統(tǒng)通過(guò)用戶端發(fā)送信息,通過(guò)投放節(jié)點(diǎn)、運(yùn)輸節(jié)點(diǎn)逐級(jí)傳遞到目標(biāo)節(jié)點(diǎn),由于系統(tǒng)采用網(wǎng)狀拓?fù)?,所以可根?jù)信息傳遞路徑規(guī)劃,獲取最佳傳遞方案,增加控制效率。
因?yàn)橛脩羲幬恢貌煌载?fù)責(zé)信息傳遞的一級(jí)節(jié)點(diǎn)也不一定相同。將系統(tǒng)投放節(jié)點(diǎn)視為彼此不同源。傳統(tǒng)Dijkstra算法[9]僅針對(duì)點(diǎn)對(duì)點(diǎn)的單源最短路徑規(guī)劃,非同源出發(fā)的路徑規(guī)劃無(wú)法采用該算法,因此本文采用針對(duì)多源路徑進(jìn)行動(dòng)態(tài)規(guī)劃的Floyd算法。Floyd可以看做多次從不同源分別進(jìn)行一次Dijkstra路徑規(guī)劃。
Floyd算法需求出某點(diǎn)到達(dá)任意一點(diǎn)的最短距離,將其視為通過(guò)變換得到的最優(yōu)協(xié)調(diào)路徑[10]。首先根據(jù)節(jié)點(diǎn)分布情況,利用鄰接矩陣建圖,如圖7所示[11]。
map[i][j]表示點(diǎn)i到點(diǎn)j的距離,將map[i][i]設(shè)為0,倘若有i無(wú)法到達(dá)的點(diǎn),則將距離設(shè)置為∞(無(wú)窮大),若要令圖上任意一個(gè)頂點(diǎn)(如a頂點(diǎn))到另一個(gè)頂點(diǎn)(如b頂點(diǎn))的路程更短,需引入第3個(gè)頂點(diǎn)k,再經(jīng)過(guò)所引入的節(jié)點(diǎn)k進(jìn)行中轉(zhuǎn),即a->k->b,便可縮短從頂點(diǎn)a到頂點(diǎn)b所需的路程。在a頂點(diǎn)和引入的k節(jié)點(diǎn)之間與引入的k節(jié)點(diǎn)與b頂點(diǎn)之間,如果還存在可使路程更短的中轉(zhuǎn)點(diǎn)時(shí),即可以此遞歸,引入多個(gè)節(jié)點(diǎn),即a->k1->k2->b或a->k1->k2…->ki…->b。如圖4號(hào)頂點(diǎn)到3號(hào)頂點(diǎn)(4->3)的路程map[4][3]原為24。若經(jīng)過(guò)1號(hào)頂點(diǎn)中轉(zhuǎn)(4->1->3),路程將縮短為23(e[4][1]+e[1][3]=11+12=23)。與此同時(shí),1號(hào)到3號(hào)頂點(diǎn)經(jīng)過(guò)2號(hào)頂點(diǎn)中轉(zhuǎn)后,也使得1號(hào)到3號(hào)頂點(diǎn)的路程縮短至11(e[1][2]+e[2][3]=4+7=11)。因此在通過(guò)1號(hào)和2號(hào)兩個(gè)頂點(diǎn)中轉(zhuǎn)之后,從4號(hào)頂點(diǎn)到3號(hào)頂點(diǎn)的路程會(huì)進(jìn)一步縮短為22。由此可以推測(cè),每個(gè)節(jié)點(diǎn)均有可能使另外兩個(gè)頂點(diǎn)的距離變短。假設(shè)先以1號(hào)頂點(diǎn)為例,只有一個(gè)中轉(zhuǎn)點(diǎn)。將建好的圖用表格表示,如圖8所示。
此時(shí),兩點(diǎn)間最短距離的路程發(fā)生變化。因此,只需判斷:
map[i][1]+map[1][j]