張 毅,馬子超,葉天翔
(重慶郵電大學 移動互聯(lián)網(wǎng)技術研究所,重慶 400065)
目前,感知化、互聯(lián)化、物聯(lián)化的大趨勢正在發(fā)生。國內(nèi)外已將物聯(lián)網(wǎng)解決方案廣泛應用于環(huán)保、反恐、醫(yī)療、監(jiān)控等眾多領域,由于物聯(lián)網(wǎng)感知層中無線傳感技術種類繁多(如藍牙、ZigBee、RFID、NFC等),協(xié)議不一,適用的場所也各不相同,使得無線傳感器網(wǎng)絡的異構性十分突出。
3G移動通信網(wǎng)絡在國內(nèi)已基本完成覆蓋,范圍觸及社會生活的方方面面,與2G移動通信網(wǎng)絡相比,具備更豐富的功能和更出色的靈活性,將3G移動通信網(wǎng)絡與傳感器網(wǎng)絡融合起來,可以為物聯(lián)網(wǎng)中多種不同速率、不同業(yè)務類型的應用提供更適合的網(wǎng)絡傳輸平臺[1]。
基于以上考慮,本文設計一種面向物聯(lián)網(wǎng)的3G網(wǎng)關,將傳感系統(tǒng)和3G網(wǎng)絡結合起來,用以解決異構傳感器網(wǎng)絡的數(shù)據(jù)匯聚和傳感信息的3G傳輸[2],實現(xiàn)協(xié)同感知,廣域傳輸,對于推動物聯(lián)網(wǎng)發(fā)展和豐富3G應用具有一定的現(xiàn)實意義。
網(wǎng)關是在傳輸層以上實現(xiàn)異構網(wǎng)絡間的通信、負責網(wǎng)絡間的協(xié)議轉換以及不同類型網(wǎng)絡的數(shù)據(jù)傳輸?shù)脑O備。為了提高網(wǎng)關的靈活性,實現(xiàn)即插即用,采用模塊化設計思想。本設計的網(wǎng)關體系結構主要由ARM處理器(LPC3250)、藍牙/ZigBee數(shù)據(jù)采集模塊、3G通信模塊(MC2716)組成。網(wǎng)關體系結構如圖1所示。
網(wǎng)關基本工作流程:
網(wǎng)關可以實時感知來自傳感器網(wǎng)絡的信息(數(shù)據(jù)流),并接收來自客戶端的控制信息(控制流),實現(xiàn)對無線傳感器網(wǎng)絡的實時感知與控制。藍牙/ZigBee數(shù)據(jù)采集節(jié)點作為傳感器網(wǎng)絡的樞紐,將傳感信息實時上傳并保存在存儲模塊中。網(wǎng)關通過3G通信模塊撥號連接3G移動通信網(wǎng)絡,在成功獲得IP地址后,建立Socket服務器,監(jiān)聽來自不同平臺的客戶端連接請求(如PC、移動電話等)。一旦連接建立,即將來自藍牙/ZigBee數(shù)據(jù)采集節(jié)點的信息發(fā)送至客戶端。同時,服務器可以檢測到客戶端發(fā)送的控制流,將控制信息通過藍牙/ZigBee數(shù)據(jù)采集節(jié)點傳達至傳感器網(wǎng)絡目標節(jié)點,實現(xiàn)對傳感器網(wǎng)絡的控制。
控制器是整個網(wǎng)關體系結構的核心,負責數(shù)據(jù)匯聚、數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)轉發(fā)等關鍵處理,本設計采用NXP半導體帶有ARM926EJ-S CPU內(nèi)核的LPC3250,該系列ARM運用了NXP半導體在降低功耗方面的技術專長,優(yōu)化內(nèi)部功率消耗。CPU時鐘運行速率可以達到266 MHz,具有32 kbyte指令高速緩存和32 kbyte數(shù)據(jù)高速緩存,高達256 kbyte的內(nèi)部SRAM,同時該系列ARM帶有一系列豐富的標準外設資源,如Multi-layer總線系統(tǒng),2個NAND Flash控制器,1個支持Device、Host(遵循OHCI規(guī)范)、On-The-Go的USB2.0接口,多達7路串口(4個標準UART,3個高速UART),以及以太網(wǎng)、I2C、I2S等接口。
綜上所述,該控制器模塊具備較強的數(shù)據(jù)處理能力和豐富的外設資源,支持Linux操作系統(tǒng),可以滿足方案的設計目標。
本設計中的數(shù)據(jù)采集模塊有兩種:藍牙數(shù)據(jù)采集模塊和ZigBee數(shù)據(jù)采集模塊。
藍牙數(shù)據(jù)采集模塊采用匯承信息科技有限公司的HC-05藍牙串口模塊,該模塊采用CSR BC4+8M Flash方案(8M代表8 Mbyte),協(xié)議版本為Bluetooth Specification V2.0 With EDR,2.4 GHz無線收發(fā),CLASS 2功率級別,采用自適應跳頻技術,具備低功耗、低成本、高性能的特點,配合處理器即可方便地構建藍牙傳感器網(wǎng)絡。藍牙數(shù)據(jù)采集模塊在藍牙傳感器網(wǎng)絡中的角色為從機,負責監(jiān)聽遠程藍牙設備主機的鏈接請求,并執(zhí)行接收數(shù)據(jù)、斷開鏈接等操作。
ZigBee數(shù)據(jù)采集模塊采用TI/Chipcon公司開發(fā)的2.4 GHz IEEE 802.15.4/ZigBee片上系統(tǒng)解決方案CC2430/CC2431,具備高速、超低功耗的8051內(nèi)核、最高128 kbyte的大容量閃存、8 kbyte SRAM、250 kbit/s高速無線通信接口,模塊采用DSSS頻譜傳輸,自動調(diào)頻,防沖突,防碰撞,從而提高了無線數(shù)據(jù)傳輸?shù)目煽啃?。ZigBee數(shù)據(jù)采集模塊通過串口與微控制器連接,在ZigBee自組織網(wǎng)絡中擔任協(xié)調(diào)器的角色,負責啟動、配置網(wǎng)絡,在網(wǎng)絡啟動和配置完成后,退化為一個普通路由器,實時將傳感器網(wǎng)絡中的信息上報至網(wǎng)關。
該部分用于實現(xiàn)不同通信協(xié)議間信息的傳輸,主要包括控制器模塊與數(shù)據(jù)采集模塊之間的串口連接和控制器模塊與3G通信模塊間的USB接口連接。
控制器LPC3250具備的7路串口中,UART3/4/5/6為普通串口,本設計中UART5為系統(tǒng)調(diào)試串口,分別將UART3和UART4連接至ZigBee數(shù)據(jù)采集模塊和藍牙數(shù)據(jù)采集模塊。LPC3250具備一路USB 2.0接口,將其與3G通信模塊連接。
目前國內(nèi)的3G網(wǎng)絡主要有CDMA2000,WCDMA和TD-SCDMA這3種制式,對應有3種不同制式的3G模塊,考慮到CDMA20003G模塊撥號后獲得的是公網(wǎng)IP,不需要進行NAT穿越即可訪問外網(wǎng),本設計采用中興公司的MC2716 CDMA20003G通信模塊[3-4]。
考慮到網(wǎng)關應具有開放和可移植特性,軟件平臺采用開放源碼的Linux操統(tǒng)系統(tǒng),由于Linux操作系統(tǒng)具有高度模塊化和高度可移植性,在其基礎上完成應用程序的編寫即可實現(xiàn)設計目標,軟件平臺的設計主要包括配置和編譯Linux操作系統(tǒng)、嵌入式Linux操作系統(tǒng)的移植、PPP協(xié)議的移植、CDMA2000撥號腳本的編寫、通信協(xié)議的制訂及系統(tǒng)主程序設計[5]。
由于網(wǎng)關采用Linux操作系統(tǒng)和模塊化的設計思想,軟件體系分為操作系統(tǒng)和應用系統(tǒng)兩部分,體系結構如圖2所示。
為了實現(xiàn)網(wǎng)關功能,需要配置并添加兩部分Linux內(nèi)核支持:3G通信模塊內(nèi)核支持和PPP協(xié)議內(nèi)核支持。
3.2.1 添加3G通信模塊內(nèi)核支持
輸入make menuconfig進入Linux圖形內(nèi)核配置界面,在Device Driver選項,將以下選項編譯進內(nèi)核。
USB support子選單下:
圖2 軟件體系結構圖
以上配置完成后,將MC27163G通信模塊的PID:0x19d2和VID:0xffed添加入linux-2.6.27.8/drivers/usb/se?rial/option.c文件的option_ids[]數(shù)組中。至此,完成了Linux內(nèi)核對MC27163G通信模塊的支持。
3.2.2 添加PPP協(xié)議內(nèi)核支持
輸入make menuconfig命令進入Linux圖形內(nèi)核配置界面,進入Network device support選項,將以下選項編譯進內(nèi)核:
至此,完成了Linux內(nèi)核對PPP協(xié)議的支持。
設計中使用的 Linux 內(nèi)核版本 2.6.27.8,為了生成U-Boot格式的內(nèi)核文件,將u-boot中的mkimage程序復制到系統(tǒng)的目錄/usr/bin中,然后在內(nèi)核源代碼目錄輸入make uImage,編譯配置好的Linux內(nèi)核,之后在/arch/arm/boot目錄下會生成uImage文件。
在ARM9硬件平臺上安裝嵌入式Linux操作系統(tǒng),大致分為5個步驟,依次為固化Kickstart和S1L、固化U-Boot、配置和編譯Linux內(nèi)核、固化Linux內(nèi)核以及固化Linux文件系統(tǒng)。
網(wǎng)絡上介紹嵌入式Linux操作系統(tǒng)移植的教程已較為豐富,由于篇幅限制,在此不再贅述。
將編譯好的Linux操作系統(tǒng)移植成功之后,通過USB接口連接3G通信模塊和控制器模塊,控制終端完成對USB設備3G模塊的枚舉后,可以識別出/dev/ttyUSB0至ttyUSB3的4個不同的虛擬串口。其中ttyUSB0為Modem撥號端口,用于實現(xiàn)撥號上網(wǎng),ttyUSB1為AT命令通道端口,用于實現(xiàn)網(wǎng)關信息的短信通知。
由于Linux操作系統(tǒng)本身并沒有PPP軟件支持,需要進行PPP撥號套件移植。PPP軟件可以在PPP的官方FTP下載,這里使用的版本為ppp-2.4.5.tar.gz。
將此壓縮文件包解壓后進入文件目錄,執(zhí)行./config?ure命令,完成后執(zhí)行命令make CC=/opt/nxp/gcc-4.3.2-glibc-2.7/bin/arm-vfp-linux-gnu-gcc進行交叉編譯(此處需要使用和編譯內(nèi)核及文件系統(tǒng)同一個版本的交叉編譯器)。編譯成功之后,將pppd目錄下的可執(zhí)行文件pppd和chat目錄下的可執(zhí)行文件chat拷貝到ARM平臺的/usr/sbin/目錄下。
至此完成PPP撥號套件的移植工作。
在完成Linux內(nèi)核支持和PPP撥號套件移植之后,還需要在ARM平臺側建立、配置撥號腳本,才能實現(xiàn)撥號上網(wǎng)。由于篇幅限制,在此僅給出各個撥號腳本的作用。
/etc/ppp/peers/cdma2000用于建立連接、質量控制、配置網(wǎng)絡層協(xié)議。腳本中包括了用于連接的設備,波特率,接受服務器指定的IP地址、DNS地址,連接/斷開撥號腳本等內(nèi)容。
/etc/ppp/chat/cdma2000-connect-chat用于AT撥號連接,首先發(fā)出AT指令,等待OK返回后,設置撥號上網(wǎng)的APN、賬號、密碼等。
/etc/ppp/chat/cdma2000-disconnect-chat用于斷開AT撥號連接。
此時,在ARM控制平臺輸入命令pppd call cdma 2000,運行撥號腳本即可實現(xiàn)嵌入式平臺的3G網(wǎng)絡撥號連接,同時獲得一個公網(wǎng)IP地址。
為了完成對來自傳感器網(wǎng)絡的數(shù)據(jù)的采集和匯聚,需要設計一個合適的通信協(xié)議來保證數(shù)據(jù)傳輸?shù)耐暾院涂煽啃?,本設計中使用的數(shù)據(jù)幀結構如:
上述程序中:SensorNetworkType表示傳感器網(wǎng)絡類型(0x00表示藍牙,0x01表示ZigBee);NodeType表示傳感器網(wǎng)絡不同的節(jié)點角色類型;NodeId表示傳感器網(wǎng)絡中某一個節(jié)點的標號;FunctionId表示定義好的功能碼;OperationCode表示定義好的操作碼;DataLength表示DataBuffer中數(shù)據(jù)的長度;DataBuffer[]用于存儲來自傳感器網(wǎng)絡中各種傳感器的數(shù)據(jù)。
在設計中,傳感器網(wǎng)絡按照此通信協(xié)議將信息上報至網(wǎng)關,網(wǎng)關按照通信協(xié)議對數(shù)據(jù)進行匯聚、解析、轉發(fā)。
在硬件平臺上移植Linux操作系統(tǒng)成功后,編寫應用軟件即可實現(xiàn)網(wǎng)關功能。網(wǎng)關的主要功能有網(wǎng)關信息通知、串口接收和數(shù)據(jù)轉發(fā)3部分,軟件設計采用模塊化設計思想,各部分子程序分開編寫,供主程序調(diào)用。
由于網(wǎng)關每次撥號后會隨機獲取一個IP地址,需要有一種途徑使網(wǎng)關的使用者在網(wǎng)關重置后,即時獲取網(wǎng)關的IP地址、端口號等信息,在此通過AT指令,采用主動通知與查詢通知兩種方式。主動通知即每次網(wǎng)關重置后,以短信的形式將網(wǎng)關信息(IP地址,端口號等)發(fā)送至特定號碼;查詢通知即網(wǎng)關在運行過程中,如收到來自某一號碼的網(wǎng)關信息查詢請求短信,將向此號碼發(fā)送網(wǎng)關的信息。
串口接收指實時接收來自傳感器網(wǎng)絡的信息,主要涉及對Linux串口的配置操作。
數(shù)據(jù)轉發(fā)部分依賴Socket網(wǎng)絡編程實現(xiàn),通過3G模塊撥號獲得IP后,在網(wǎng)關側建立Socket服務器,這樣從用戶的角度來看,只需要獲得Socket服務器的IP地址和端口號,可以方便地使用筆記本電腦、智能手機等多種平臺的終端設備建立與網(wǎng)關Socket服務器的連接。在編寫Socket服務器的過程中,采用了多線程技術,使得服務器可以同時處理多個客戶請求,極大地提高了網(wǎng)關的數(shù)據(jù)處理能力和響應速度。系統(tǒng)主程序流程圖如圖3所示。
圖3 網(wǎng)關主程序流程圖
本文將無線傳感器技術、嵌入式操作系統(tǒng)和3G通信技術結合起來,設計了一種面向物聯(lián)網(wǎng)的嵌入式3G網(wǎng)關,實現(xiàn)了異構無線傳感器網(wǎng)絡的數(shù)據(jù)匯聚,3G移動通信網(wǎng)絡進行數(shù)據(jù)轉發(fā)和多種終端平臺支持。該網(wǎng)關具有數(shù)據(jù)處理能力強、數(shù)據(jù)傳輸速率快、實時性較好、無須布線等特點,對物聯(lián)網(wǎng)中豐富的應用提供了支持,具備較好的應用價值。
[1]鞏浩,屈玉貴.基于短距無線通信與3G的無線集中抄表系統(tǒng)[J].計算機工程,2011(1):290-292.
[2]曾桂根,吳霜.基于嵌入式Linux的3G接入方案的設計與實現(xiàn)[J].計算機技術與發(fā)展,2010(9):193-196.
[3]ZTE Corporation.MC2700 technical specification[EB/OL].2011-02-02].http://wenku.baidu.com/view/fe0b491052d380eb62946d66.html?from=related.
[4]ZTE Corporation.MC2716 MC2718 technical specifications and hardware design[EB/OL].[2011-02-02].http://www.headele.com/Datasheet/EVDO/MC2716&MC2718% 20Technical% 20Specifica?tions%20and%20Hardware%20Design.pdf.
[5]SWEET M R.Serial programming guide for POSIX operating systems[EB/OL].[2011-03-02].http://www.easysw.com/~mike/serial/serial.html.