陳燕忠, 張永剛, 周小林
(復旦大學 信息科學與工程學院,上海 200433)
基于AllJoyn和微處理器FC-3180的智能網(wǎng)關控制系統(tǒng)設計
陳燕忠, 張永剛, 周小林
(復旦大學 信息科學與工程學院,上海 200433)
為簡化鄰近分布式家用設備的互聯(lián)互通,采用開源軟件框架AllJoyn,搭載嵌入式微處理器FC-3180,配合低功耗無線傳輸網(wǎng)絡ZigBee和移動應用平臺Android,設計了一套具有自發(fā)性、可移動、可動態(tài)配置的安全設備管理系統(tǒng).
AllJoyn; FC-3180; 智能網(wǎng)關; Android
智能家居是指運用信息通訊和傳感技術,采集、加工、分析并整合人們切身關心的各項重要信息[1],由此提高對包括舒適度、便捷性、安全性等在內的要求作出智能反應的準確性.“互聯(lián)網(wǎng)+”公式的影響深化加速了各行業(yè)的服務與用戶場景的相互結合[2].家庭場景是人們美好生活和保障工作效率不可或缺的物質基石,而家庭設備的智能化管理將成為現(xiàn)代化生活環(huán)境的重要體現(xiàn),所以,需要將智能中央設備管理器與家庭場景中其他設備子系統(tǒng)有機地組成一個具有安全性和正確性保證的系統(tǒng)[3].中央設備管理器與子系統(tǒng)之間必須建立一個可靠的連接,用于實時地傳遞用戶指令和設備反饋.其次,需要相應的硬件基礎和執(zhí)行條件來確保用戶意圖的真正實現(xiàn).同時,在部分條件下,還要實現(xiàn)家庭場景到其他場景的轉換,即需要與外界通訊的媒介平臺,滿足用戶遠程監(jiān)控和提前管理的需求.
1.1 系統(tǒng)設計關鍵性問題分析
首先要考慮物聯(lián)網(wǎng)設備屬性的多樣性,不同操作系統(tǒng)平臺、不同物理網(wǎng)絡和連接協(xié)議、不同開發(fā)語言等[4],同時,本課題的設計著眼于智能設備的管理,所以同時還要注重設備搜索的自發(fā)性、可移動、操作簡單和可動態(tài)配置等要求.另外,還要考慮物聯(lián)網(wǎng)嵌入式設備本身的資源受限以及應用場景的復雜性.
針對上述問題的分析,本課題采用近距離移動解決方案AllJoyn,其構建的分布式應用運行環(huán)境支持應用跨不同設備和操作系統(tǒng)實現(xiàn)可靠交互,可在不改變設備物理設計或者增加產(chǎn)品結構復雜性的情況下擴展使用性和提升用戶體驗,確保應用與設備的廣泛兼容性.同時,AllJoyn瘦客戶端支持超低內存的嵌入式物聯(lián)網(wǎng)設備,擁有通用的AllJoyn互聯(lián)協(xié)議和精簡功能集.主控制平臺采用嵌入式微處理器FC-3180,其功耗超低,且集成了Java虛擬機,非常符合整個系統(tǒng)的運行和應用開發(fā)的需要.為使系統(tǒng)原型更加完整和可操作,本設計還加入了已在物聯(lián)網(wǎng)領域廣泛運用的ZigBee技術和Android平臺[3],更好地展示本課題設計.
1.2 系統(tǒng)解決方案基本思路
設計一種基于開源軟件框架AllJoyn和嵌入式微處理器FC-3180的智能網(wǎng)關,承擔設備實時管理、動態(tài)配置、數(shù)據(jù)存儲和友好提示等功能.通過Android平臺的AllJoyn標準客戶端與智能網(wǎng)關的AllJoyn瘦客戶端間的互通,實現(xiàn)用戶對智能網(wǎng)關實時交互,以智能網(wǎng)關為橋梁進而對設備智能化管理.用戶也可以根據(jù)需求對Android應用進行個性化設置.智能網(wǎng)關以ZigBee作為與設備間的短距離用戶命令和設備反饋平臺,同時ZigBee網(wǎng)絡應用層的數(shù)據(jù)操作遵守變量安全操作協(xié)議.
2.1 AllJoyn標準客戶端整體工作流程
在基于AllJoyn近端應用中,每個設備運行一個AllJoyn路由.AllJoyn路由提供了一個抽象層,處理所有的傳輸機制、消息路由和命名空間管理.在每個設備上的AllJoyn路由與其他設備的路由進行通信,所以應用間不會直接交流,而是通過總線通信.總線本身是以點對點(Ad-Hoc)方式形成,總線的形成基于周邊設備的發(fā)現(xiàn),也就是說,AllJoyn功能是廣告名字和尋找廣告的名字.通信協(xié)議是獨立于傳輸,目前支持WiFi和藍牙等通訊方式.
圖1 AllJoyn客戶端向服務端調用方法
首先,以AllJoyn方法調用為例,如圖1所示,提供服務程序的主機B對應的是智能網(wǎng)關,提供客戶程序的主機A對應的是Android智能手機.
第一步,服務執(zhí)行廣告操作.主機B上的服務向本地的AllJoyn路由請求廣告,路由根據(jù)服務的請求,確定適合本地網(wǎng)絡的服務廣告機制,然后開始在鄰近區(qū)域廣告服務.
第二步,客戶端請求查詢名稱.當主機A上客戶組件請求發(fā)現(xiàn)服務,將發(fā)出“查找名稱”的要求,本地路由根據(jù)客戶端的輸入來確定最佳的方式探測廣告.一旦兩個設備接近,它們開始通過已啟用的媒體方式監(jiān)聽對方的廣告,發(fā)現(xiàn)請求.
第三步,守護進程報告發(fā)現(xiàn)名稱.服務端的路由發(fā)現(xiàn)請求并響應客戶端路由.
第四步,客戶端發(fā)現(xiàn)服務.主機A客戶端接收本地路由指示,表示該鄰近區(qū)域內存在擁有所需服務的路由.
第五步,客戶端調用遠端方法.參數(shù)使用主機A上的AllJoyn路由在本地總線段上的路由信息在源端封裝,通過網(wǎng)絡鏈接發(fā)送到主機B的AllJoyn路由,AllJoyn路由決定目標服務端,然后解封參數(shù)并調用服務.
2.2 智能網(wǎng)關Android應用的設計與實現(xiàn)
2.1.1 滑動側邊菜單欄設計
初次運行該 App,手機屏幕首先出現(xiàn)的只有初始界面,如果向右滑動屏幕,繼而就會出現(xiàn)隱藏的菜單欄.用戶用手指按住手機屏幕左右移動,App會根據(jù)檢測到的速度來向左或向右滾動界面,即可看到在左側或者右側隱藏的部分,實現(xiàn)兩個視圖的切換.
2.2.2 用戶登錄界面設計
點擊菜單欄“游客登錄”,即可進入用戶登錄界面,第一次登錄可輸入默認用戶名和密碼,點擊登錄按鈕.同時,會對信息填寫不完整或者錯誤的情況給予提醒.為了減少用戶登錄花費的時間,可勾選用戶界面的“記住我的密碼”和“自動登錄”選項,減少重復性操作.
2.2.3 設備登錄界面及二維碼掃描功能設計
在ZigBee設備加入ZigBee網(wǎng)絡并獲取網(wǎng)絡地址后,將網(wǎng)絡地址通過ZigBee無線傳感網(wǎng)絡發(fā)送給智能網(wǎng)關,即協(xié)調器.智能網(wǎng)關再通過鄰近區(qū)域內的AllJoyn網(wǎng)絡發(fā)送給客戶端App,客戶端App將自動更新設備登錄界面中“新設備ID”的參數(shù).用戶可以手動輸入或者添加該新設備的名稱和其他需要的備注.
2.2.4 設備間交互的氣泡聊天界面設計
設備交互界面,主要用于手機客戶端通過鄰近AllJoyn網(wǎng)絡與同樣支持AllJoyn的智能網(wǎng)關通訊,通過智能網(wǎng)關下達用戶指令并獲取設備信息反饋.本界面采用仿微信的氣泡聊天形式,力求使用戶與智能網(wǎng)關的交流就像跟微信好友聊天一樣,舒服快捷.
2.2.5 設置界面設計
設置界面作為一個應用程序必備的組成部分,主要是對客戶端的參數(shù)進行設置,使之更加符合用戶的使用習慣,甚至可以添加用戶個性化的元素.
3.1 AllJoyn在嵌入式處理器FC-3180平臺上的實現(xiàn)
3.1.1 AllJoyn 瘦客戶端在嵌入式環(huán)境中進行的具體優(yōu)化
AllJoyn瘦客戶端保留了標準客戶端的絕大多數(shù)的編程概念,但為適應嵌入式設備的開發(fā)環(huán)境,AllJoyn瘦客戶端在高層設計上做了一些變化,包括:API僅支持C語言,單線程、狀態(tài)機及消息循環(huán)方式的編程模型,AllJoyn瘦客戶端的API直接暴露AllJoyn消息,應用本身負責對調用進行相應回復,即實現(xiàn)需要做的操作.
而優(yōu)化的重點在于減少內存占用,這也是開發(fā)者必須注意的地方,包括表驅動,避免數(shù)據(jù)重復,盡可能在現(xiàn)場進行數(shù)據(jù)轉化,謹慎使用動態(tài)內存(僅為短生命周期的使用情況進行分配),通過同一塊緩沖的串行化實現(xiàn)發(fā)送和接收緩存共享,提供幫助的函數(shù)減少應用代碼尺寸.關鍵不同具體如下:
1) 將接口描述變?yōu)樽址A繑?shù)組,其首要目的是減低解析工作量,而不是增加可讀性.其中,數(shù)組的第一個字符串是總線接口名稱,后續(xù)字符串是接口成員描述,其暴露了底層D-Bus類型的簽名符號.
2) 對象采用指針數(shù)組進行定義,使用AppObjects數(shù)組定義本地應用對象Bus Object,使用PrxObjects數(shù)組定義遠端應用對象代理Proxy Bus Objects.數(shù)組單元采用{Name,Interfaces}元組.其中,
3) 消息標識是應用級概念,不存在于路由協(xié)議中,這是為了避免做太多的字符串對比,使用緊湊型符號描述對象類型、對象路徑、接口和成員.消息使用四元組{U,P,I,M}進行標識.
3.1.2 系統(tǒng)初始化及WiFi模塊的配置與連接
1) 系統(tǒng)初始化.嵌入式微處理器FC-3180使用嵌入式操作系統(tǒng)Rubus,在啟動系統(tǒng)前,需要配置直接存儲器存取通道、事件日志等,該事件日志可以在Imsys Developer中讀取,同時還要建立一個AllJoyn的線程,用于連接WiFi和處理AllJoyn信息.進入AllJoyn線程后,需要初始化文件系統(tǒng)、掛載Flash和RAM,初始化串口用于ZigBee芯片通信,配置并連接WiFi,然后進行AllJoyn總線的連接并處理AllJoyn消息.
2) WiFi模塊的配置與連接.WiFi模塊使用ESP8266芯片,可以配置成工作站、無線接入點和共存模式[5].在本課題設計中,智能網(wǎng)關AllJoyn瘦客戶端需要接入WiFi網(wǎng)絡,所以將ESP8266配置成工作站模式.嵌入式微處理器FC-3180通過串口向ESP8266發(fā)送Attention(AT)命令實現(xiàn)控制.AT指令可以理解為是一種modem命令語言,是以AT開頭、具體指令結尾的字符串.
3.2 變量安全操作協(xié)議的定義與實現(xiàn)
智能網(wǎng)關系統(tǒng)以變量操作的形式對設備進行控制,以ZigBee無線通訊網(wǎng)絡作為透傳,在應用層面自定義一個輕量級的變量安全操作協(xié)議,參考Modbus應用協(xié)議設計,規(guī)定設備變量讀寫以及操作者命令的認證方式,主要應用于開放系統(tǒng)中重要設備的監(jiān)控.設備對來自智能網(wǎng)關的數(shù)據(jù)進行解封裝,判斷并完成數(shù)據(jù)中的操作指令,然后進行反饋,若數(shù)據(jù)異常則反饋錯誤類型,反饋信息同樣需要進行封裝.
3.3 ZigBee無線傳感網(wǎng)絡設計
在本課題設計中,ZigBee網(wǎng)絡作為智能網(wǎng)關與設備之間交流信息的透傳,微處理器FC-3180通過串口將封裝好的用戶控制命令傳遞給ZigBee協(xié)調器,再發(fā)送至指定設備并得到反饋.該無線網(wǎng)絡ZigBee網(wǎng)絡采用2.4 GHz通信,其自動組網(wǎng)、網(wǎng)絡自愈和記憶性等優(yōu)點非常適用于應用在無規(guī)律放置、中間障礙物較多的室內設備中.本設計使用Zstack協(xié)議棧構建網(wǎng)絡.
本設計中不需要設備間的獨立通信,所以采用星型的網(wǎng)絡結構.協(xié)調器設備和終端設備的程序流程圖如圖2所示.設備間使用的網(wǎng)絡通訊可以通過路由算法獲得功耗最低的路徑[6],并且當數(shù)據(jù)發(fā)送設備確定目標設備之前,都會緩存信息包以減少無效的發(fā)送[7].
圖2 協(xié)調器設備和終端設備運行流程圖
3.4 智能網(wǎng)關硬件電路設計
3.4.1 嵌入式微處理器模塊原理圖設計
嵌入式微處理器模塊使用集成有FC-3180芯片和同步動態(tài)隨機存儲器(SDRAM)的VELOX模塊,其中SDRAM作為機器碼的存儲.使用通用異步收發(fā)傳輸器接口1(UART1)與ZigBee模塊連接,UART3與WiFi模塊連接.
3.4.2 ZigBee模塊原理圖設計
ZigBee模塊使用CC2530芯片,其內置了增強型8051[8],與微處理器FC-3180的串口UART1連接.模電信號和數(shù)字信號電源引腳連接+3.3V,對地連接濾波電容減少高頻干擾.使用32MHz晶振,晶振電路應靠近芯片引腳,并鋪銅來避免晶振信號對正常信號的干擾.
3.4.3 WiFi模塊原理圖設計
WiFi模塊使用的是ESP8266芯片,與微處理器FC-3180的UART3連接.模塊設置為從FLASH啟動,選擇AT指令模式,模塊的UTXD和URXD引腳分別連接WiFi接口的URX3和UTX3.
3.4.4 電源模塊原理圖設計
電源模塊使用LM1117-3.3芯片作為電壓轉換芯,使用MICRO-USB接口作為電源接口.LM1117-3.3將來自MICRO-USB接口的+5V電壓,降壓后固定輸出3.3 V.
4.1 智能網(wǎng)關與設備間通信測試
圖3 協(xié)調器設備在Cimsys Developer的Debug窗口打印輸出結果
智能網(wǎng)關首先上電運行建立ZigBee網(wǎng)絡,終端設備上電運行后請求入網(wǎng),智能網(wǎng)關允許設備入網(wǎng),設備組網(wǎng)成功后給地址為0x0000的智能網(wǎng)關發(fā)送分配的網(wǎng)絡地址,智能網(wǎng)關ZigBee模塊通過串口將終端設備發(fā)送過來的網(wǎng)絡地址發(fā)送給微處理器FC-3180模塊,微處理器FC-3180在Cimsys Developer的Debug窗口中打印數(shù)據(jù)信息.圖3為協(xié)調器設備調試運行后的打印輸出結果,包括設備系統(tǒng)啟動、網(wǎng)絡建立和終端設備網(wǎng)絡地址等信息.
同時,利用SmartRF Packet Sniffer軟件,選擇ZigBee 2007/PRO協(xié)議版本和2 405 MHz的監(jiān)聽信道,可以觀察到ZigBee網(wǎng)絡數(shù)據(jù)包發(fā)送的情況.圖4為協(xié)調器設備建立網(wǎng)絡時發(fā)送的數(shù)據(jù)幀,可以觀察到目標個域網(wǎng)、目標地址、數(shù)據(jù)幀長度等信息,如第一個數(shù)據(jù)包是在廣播10 byte的信標幀.
圖4 協(xié)調器建立網(wǎng)絡數(shù)據(jù)包
4.2 Android平臺客戶端運行測試
首先安裝應用的AndroidPackage(apk)文件,進入初始界面后向左滑動屏幕.進菜單欄后點擊“游客登錄”,輸入默認用戶名和密碼.如果獲得管理者身份,菜單欄顯示“已登錄”.在菜單欄中主要測試直接影響智能網(wǎng)關系統(tǒng)運行的用戶界面.點擊“上線”菜單,進入界面后再點擊“刷新”按鈕獲得新設備ID,即新入網(wǎng)的終端設備的網(wǎng)絡地址.輸入便于記憶的設備代號,其中設備代碼與設備的ZigBee網(wǎng)絡地址一一對應,對目標設備的真正尋址是通過設備的網(wǎng)絡地址.點擊“掃一掃”按鈕,掃描貼在設備上的二維碼,相對詳細的設備信息就會自動添加到界面中,然后再根據(jù)需要添加備注,最后保存.
4.3 智能網(wǎng)關和Android平臺間通信測試
上述操作全部完成后,點擊“列表”菜單,Android平臺上的AllJoyn標準客戶端會快速在近域網(wǎng)絡中尋找智能網(wǎng)關上AllJoyn瘦客戶端提供的服務.連接服務后,輸入用戶命令,即可查詢設備信息狀態(tài)、參數(shù)、數(shù)量等,同時還可以控制終端設備的開關狀態(tài)(用LED燈指示),也可以獲取用戶命令操作幫助.如圖5所示,右邊的是用戶admin輸入的命令,左邊的是智能網(wǎng)關的信息反饋,同時每條指令會顯示對應的時間.
圖5 用戶命令操作測試界面
1)圖5(a)中,AllJoyn標準客戶端會提醒用戶正在尋找近距離內可用的服務,正常情況下尋找過程非常迅速,用戶無需等待直接進入氣泡聊天界面;
2)圖5(b)中,根據(jù)界面最下端的輸入欄提示,輸入命令“man”,可以獲取關于所有基本命令及其功能的說明;
3.圖5(c)中,想了解某一命令(如boot)的具體用法,輸入命令“help boot”,即可獲得相關說明;輸入命令“l(fā)s”,即可以獲得已組網(wǎng)的設備代碼;
4.圖5(d)中,輸入命令“find”,可以了解當前組網(wǎng)設備數(shù)量為3;關閉其中的設備fan,輸入命令“shutdown fan”,設備fan的LED開關指示燈熄滅;
5.圖5(e)中,重新啟動設備fan,輸入命令“boot fan”,設備fan的LED開關指示燈重新點亮;再查詢設備fan的當前開關狀態(tài),輸入命令“status fan”,可獲得運行狀態(tài)的正確回復;
6.圖5(f),查看關于設備fan的詳細參數(shù)及其備注,輸入命令“uname fan”,可獲得設備在登錄時通過掃碼和手動輸入添加的信息;將設備fan從設備管理名單中刪除,輸入命令“rm fan”,將刪除保存在應用中的對應設備的ID、代碼、參數(shù)和備注等.
分析了物聯(lián)網(wǎng)的發(fā)展,以智能家居解決方案中設備管理為落腳點,考慮到設備平臺具有不同的特點、能力和行為的獨特性,為實現(xiàn)其互聯(lián)互通而設計了一個基于AllJoyn和FC-3180的智能網(wǎng)關系統(tǒng)原型,并實現(xiàn)驗證其可行性.主要工作包括以下幾個方面:
1)通過AllJoyn標準核心庫框架及其應用流程的理解,設計了基于Android平臺的標準客戶端,以此來發(fā)現(xiàn)鄰近AllJoyn網(wǎng)絡中智能網(wǎng)關提供的服務.
2)設計實用且易操作的Android應用來完善AllJoyn的標準客戶端,提供用戶登錄、設備上線、設備交互、應用設置等用戶界面,其中二維碼掃描功能方便了入網(wǎng)設備的信息添加,而仿微信的AllJoyn網(wǎng)絡聊天界面則提升了用戶體驗.
3)分析了AllJoyn瘦核心庫與標準核心庫的區(qū)別,以及在嵌入式開發(fā)環(huán)境下的優(yōu)化工作,然后在智能網(wǎng)關嵌入式微處理器FC-3180上實現(xiàn)了AllJoyn瘦客戶端,廣告服務建立會話,并通過自定義的變量安全操作協(xié)議對接收到的用戶命令進行封裝,然后發(fā)送給ZigBee模塊.
4)智能網(wǎng)關ZigBee模塊建立網(wǎng)絡,并允許智能設備入網(wǎng),然后傳遞用戶命令并反饋設備操作信息.
[1] 候冉冉,張亮.關于智能家居系統(tǒng)的探討 [J].智能建筑電氣技術,2010(2):3-7.
Hou R R,Zhang L.Discussion on smart home [J].Electrical Technology of Intelligent Buildings,2010(2):3-7.
[2] 張曉彤.無線傳感器網(wǎng)絡與人工生命 [M].北京:國防工業(yè)出版社.2008.
Zhang X T.Wireless sensor networks and artificial life [M].Beijing:National Defense Industry Press.2008
[3] Dae-Man H,Jae-Hyun L.Smart home energy management system using IEEE 802.15.4 and ZigBee [J].IEEE Consumer Electronics Society,2010,56:1403-1410.
[4] Wu G,Mizuno M,Havinga P J M.MIRAI architecture for heterogeneous network [J].IEEE Communications Magazine,2002,40(2):126-134.
[5] 張啟明,WiFi系統(tǒng)的應用 [J].計算機科學技術學報,2006 (21):40-41.
Zhang Q M.Application of WiFi system [J].Journal of Computer Science and Technology,2006(21):40-41.
[6] 王小強,歐陽駿,黃寧淋.ZigBee無線傳感器網(wǎng)絡設計與實現(xiàn) [M].北京:化學工業(yè)出版社.2013.
Wang X Q,Ou Y J,Huang N L.Design and realization of wireless sensor network [M].Beijing:Chemical Industry Press.2013
[7] Mancuso M,Bustaffa F.A wireless sensors network for monitoring environmental variables in atomato greenhouse [C]//IEEE.Proceeding of Factory Communication System,Torino:IEEE,2006:107-110.
[8] 張任,嚴海.基于ZigBee的無線傳感器網(wǎng)絡節(jié)點設計 [J].機電工程,2008,25(08):18-28.
Zhang R,Yan H.Design of wireless sensor networks nodes based on ZigBee [J].Mechanical & Electrical Engineer magazine,2008,25(08):18-28.
(責任編輯:包震宇,顧浩然)
Design of intelligent gateway control systembased on AllJoyn and FC-3180
Chen Yanzhong, Zhang Yonggang, Zhou Xiaolin
(School of Information Science and Technology,Fudan University,shanghai 200433,China)
To simplify interconnection of distributed household equipment,this design creates a spontaneous,movable,safe and configurable equipment management system and smart home layout with the open-source software framework AllJoyn,the embedded microprocessor FC-3180,the low power wireless transmission network ZigBee and mobile application platform Android.
AllJoyn; FC-3180; smart gateway; Android
10.3969/J.ISSN.1000-5137.2017.01.025
2016-11-27
國家科技支撐課題項目(2015BAD17B04)
陳燕忠(1993-),男,碩士研究生,主要從事網(wǎng)絡通信方面的研究.E-mail:14210720169@fudan.edu.cn
導師簡介: 周小林(1973-),男,副教授,主要從事無線通信、移動通信、信號處理等方面的研究.E-mail:zhouxiaolin@fudan.edu.cn(通信聯(lián)系人)
TN 929.5
A
1000-5137(2017)01-0149-07