洪嵐 王佳斌
【摘要】 隨著物聯網技術突飛猛進的發展,智能控制和無線傳感領域正在發生著一場重大的技術變革,智能家居系統的出現就是物聯網技術的典型應用。而智能網關作為整個智能家居系統的核心,實現了無線傳感網絡和互聯網、移動網絡的融合,完成不同類型的網絡協議的轉換,為遠程監控和管理提供了橋梁。本文先介紹了目前通用的智能家居系統及其智能網關的硬件結構,隨后著重介紹了智能網關的軟件設計方案,使得網關可以實現與協調器的串口通信,以及網關和用戶手持終端的通信。由于嵌入式Linux的可靠性較高且穩定性較好,因此網關的軟件設計采用嵌入式Linux來實現。
【關鍵詞】 智能網關 嵌入式Linux Zigbee
引言:近年來,隨著科技的不斷發展,信息化建設越來越廣泛地應用在日常生活中。智能家居系統的出現,滿足了人們對現代生活更簡便更快捷的要求。通用的智能家居系統的主要功能是能夠實現用戶能遠程地控制家中的家電設備并監控家里環境等,智能網關則是人和家中設備通信的一個橋梁,是智能家居系統中最重要的控制單元。一方面,智能網關通過zigbee與系統中的所有設備進行無線通信,讀取數據,并發送指令。另一方面,智能網關通過TCP/IP等網絡協議連接到網絡中,方便人們對其進行訪問和讀取。由于接口的不同,通信方式存在差異,因此智能網關要完成不同設備之間的信息和數據交換的任務。智能網關的實現主要有電腦和嵌入式系統兩種方式,其中嵌入式系統具有體積小巧,成本低廉,可靠性高,穩定性好、功耗小等優點,更能符合智能家居系統中智能網關的性能要求,因此,本文采用嵌入式的Linux來進行智能網關的軟件設計。
一、智能家居系統的主要結構組成
在一個通用的智能家居系統中,主要是根據用戶的需求來設置智能節點,通常包含門禁系統,視頻監控,家用電器,數據采集等。智能家居系統主要包括終端節點、智能網關和上機位系統等三個部分,智能網關是統一管理終端節點的控制設備。如圖1所示。
智能家居系統中終端節點主要有家用電器,水表電表,門禁節點,視頻監控,防盜報警等等,這些設備通過Zigbee網絡與智能網關進行通信,并把數據轉輸到網關中進行解析,智能網關把解析后的數據通過以太網傳輸到用戶的手中,從而實現用戶對末端節點的監測和控制。
二、網關的硬件結構
智能網關主要板載嵌入式處理器,Zigbee網關協調器,天線,串口,以太網接口等模塊。
1、網關采用三星公司主流Cortex-A8嵌入式處理器,該處理器是采用的芯片是Samsung S5PV210,S5PV210采用了ARM CortexTM-A8內核,ARM V7指令集,主頻可達1GHZ,64/32位內部總線結構,32/32KB的數據/指令一級緩存,512KB的二級緩存,可以實現2000DMIPS(每秒運算20億條指令集)的高性能運算能力。其該處理器支持TCP/ IP協議,安卓軟件和Zigbee等應用。。
2、Zigbee網關協調器是采用德州儀器設備公司主流CC2530無線收發芯片組成智能網關協調器,它作為ZigBee網絡的協調器,負責家庭內網絡的建立,對各個終端節點的入網加以驗證。Zigbee發收模塊部分,是將接收到的無線Zigbee信號通過串行通信的方式傳送到處理器芯片,另一個面,處理器發送數據的時候,也是通過串行通信的方式,將數據傳送到Zigbee收發模塊,然后模塊將數據以Zigbee協議進行發送。其采用的無線協議是zigbee2007。
3、網關通過外擴LAN9220網卡芯片和RJ-45的水晶頭來實現聯網功能。LAN9220集成了以太網的MAC和PHY,符合IEEE802.3/802.3u標準,支持全雙工和半雙工的模式,能夠自動生成并檢查32位的CRC,其引腳數少且體積小巧,適用于小型系統設計。
三、嵌入式Linux網關的軟件設計
由于智能網關要處理的數據量比較大,不同設備之間的協議轉換復雜,因此軟件設計考慮采用多線程的編程技術。多線程的編程技術優點在它可以把上行數據和下行數據分開處理,且兩個線程可同時運行,節省了運行時間。這樣既充分發揮嵌入式Linux網關的網絡性能,又能獲得最大的通訊效率和穩定性[1]。網關的網絡編程是通過Socket接口來實現的,系統在網關和上機之間建立了一個面向連接的服務,使網關用無線或者有線的方式和上位機進行通信。在系統工作的主程序中,網關服務器不斷地檢測來自設備終端和來自用戶終端的連接請求,當從任一端收到請求命令時,服務器被激活并創建一個子進程與發送請求端通信,直到通信結束服務器方才結束該進程,而主程序返回繼續檢測來自其他終端的連接請求。智能網關軟件設計主流程圖如下圖所示:
3.1 網關數據庫的選擇
嵌入式系統可用的數據庫是很多種,本文選用SQLite數據庫, SQLite是一種開源數據庫,免費使用,功能完善,體積小巧,具有可自由授權,可移植且有多種API接口等特點[2]。首先把SQLite源碼移植到網關平臺上,然后在SQLite中創建一個用戶終端信息表和一個設備終端信息表。用戶終端信息表主要存儲用戶終端的信息,包括用戶名和密碼等。設備終端信息表主要記錄設備終端的狀態,從ZigBee 協調器發來的數據經解析后存在這張表中。
3.2 創建網關的多線程
在嵌入式Linux系統中,創建一個進程必須分配給它獨立的地址空間,同時還要建立從多的數據表,而創建一個線程,可以共享相同的地址空間和很多數據,節約了運行時間。但時在創建線程時必須考慮到其執行的先后順序,這樣線程運行時才不會沖突[3]。在Lunux中,線程的創建要遵循POSIX線程接口,稱為pthread。在編寫程序時要先要調用pthread.h做為頭文件,然后使用函數pthread_create來創建一個線程。在線程結束時,通過函數pthread_ exit來結束一個線程,并返回相關參數。
3.3 與串口RS-232的通信
RS-232是工業設備中常用的一種串口,由于其通訊簡單,連線少而被定義為標準接口。嵌入式 Linux網關調用串口進行通信的基本流程為打開串口,初始化串口,讀寫串口,關閉串口。串口初始化包括串口選擇、波特率設置、數據位數選擇、校驗碼選擇、停止位設置等。
3.4 網關服務器的socket編程
Socket(套接字)是兩組網絡數據實現雙向通信并進行數據交換的一個端口,主要是描述IP地址和端口。Socket可看成是在網絡應用層和傳輸層之間的一個虛擬層,當成一個接口以供不同程序的調用,以實現網絡進程之間的雙向通信。網絡的Socket數據傳輸是一種特殊的I/O,因此Socket也是一種文件描述符,常用的有以下三種類型:流式Socket、數據報Socket和原始Socket[4]。本文所采用的是流式Socket編程技術,對客戶端而言,智能網關相當于Socket的服務器。
四、結語
本系統的中軟件設計,可以實現智能網關的功能,一方面可以讀取終端節點的數據,另一方面可以通過Internet與電腦或手機通信,使人們可以方便地通過手機、平板電腦等設備與智能家居系統進行通信,遠程讀取信息,遠程控制系統中的終端設備。但是智能家居系統是非常復雜且龐大的,涉及到的技術領域廣泛,在設計網關的過程中,發現網關還有許多地方需要改善,比如網關的功能還比較單一,接口較少,在未來的研究工作中,還應多拓展網關的功能接口。另外,網關的系統安全性能還有完善,提高網關的安全性會使大大增加用戶的滿意度。
參 考 文 獻
[1]吳晟,蘇慶堂,羅斌等,基于Soctet和多線程技術的并發服務器的研究[J].昆明理工大學學報(理工版),2006,4:6-9.
[2]王京謙,萬蒞新,開源嵌入式數據庫Berkeley DBt SQLlite的比較[J]。單片機與嵌入式系統應用.2005(2):5-7
[3] StevensW.R, Rago S A, Advanced Programming in the UNIX Environment(Second Edition),[M].London: Pearson Education, 2013.154-155
[4]文全剛,嵌入式Linux操作系統原理與應用[M]。北京:北京航空航天大學出版社,2011(3). 79-83