基于嵌入式Linux的傳感器網(wǎng)絡(luò)綜合網(wǎng)關(guān)設(shè)計
引言
無線傳感器網(wǎng)絡(luò)作為物聯(lián)網(wǎng)的核心技術(shù)之一,正逐步成為國際上備受關(guān)注的、涉及多學科高度交叉、知識高度集成的熱點前沿研究領(lǐng)域%無線傳感器網(wǎng)絡(luò)在概念上是由部署在工作區(qū)域內(nèi)的、大量的、靜止或移動的廉價低功耗傳感器節(jié)點組成,這些節(jié)點通過無線通信的方式構(gòu)成一個自組織和多跳的無線網(wǎng)絡(luò),以協(xié)作地感知、采集、傳輸和處理網(wǎng)絡(luò)覆蓋區(qū)域內(nèi)的被感知對象的信息,并最終將這些信息以多跳方式傳送到匯聚(sink)節(jié)點實現(xiàn)信息共享。無線傳感器網(wǎng)絡(luò)具有眾多類型的傳感器,可探測范圍從溫濕度等環(huán)境數(shù)據(jù)可以擴展至電磁輻射等精密檢測,具有極大的適應(yīng)性和擴展性,因此,無線傳感器網(wǎng)絡(luò)有著極其廣闊的應(yīng)用場景。
1傳感器網(wǎng)絡(luò)的系統(tǒng)構(gòu)成
傳統(tǒng)無線傳感器網(wǎng)絡(luò)的一種典型應(yīng)用就是使用網(wǎng)絡(luò)自組織形式實現(xiàn)物理信息的感知,并通過傳感器網(wǎng)絡(luò)中的協(xié)作節(jié)點實現(xiàn)異構(gòu)網(wǎng)絡(luò)之間的數(shù)據(jù)通信。由于傳感器網(wǎng)絡(luò)和IP網(wǎng)絡(luò)之間的傳輸協(xié)議不一致,不能夠?qū)崿F(xiàn)直接將數(shù)據(jù)傳送至遠程服務(wù)管理中心,這就必須借助協(xié)議轉(zhuǎn)換設(shè)備(網(wǎng)關(guān))來實現(xiàn)傳感器網(wǎng)絡(luò)IP網(wǎng)絡(luò)的互聯(lián)。典型的無線傳感器網(wǎng)絡(luò)系統(tǒng)構(gòu)成如圖1所示。
同時,我們應(yīng)該考慮到傳感器網(wǎng)絡(luò)部署的簡單性和隨機性等特點,通過有線方式實現(xiàn)IP網(wǎng)絡(luò)通信具有很多的限制性,有線部署受到用于數(shù)據(jù)傳輸?shù)碾p絞線長度限制以及不適應(yīng)于室外部署等諸多限制,因此,在網(wǎng)關(guān)上實現(xiàn)網(wǎng)絡(luò)的3G連接尤為必要。
圖1典型傳感器網(wǎng)絡(luò)應(yīng)用示意圖
2無線傳感器網(wǎng)絡(luò)網(wǎng)關(guān)開發(fā)環(huán)境和體系結(jié)構(gòu)
2.1傳感器網(wǎng)關(guān)開發(fā)環(huán)境
2.1.1ARM處理器
ARM是AdvancedRISCMachines的縮寫,既是一"個公司的名稱,也是一類處理器的統(tǒng)稱。本設(shè)計方案中使用TQ-2440開發(fā)平臺,核心板系統(tǒng)處理器為ARM9架構(gòu),主頻為400MHz;板上包含64MSDRAM、256MNandFlash、2MNorFlash,同時系統(tǒng)外接三個通用異步收發(fā)器(UART),此接口可以查看開發(fā)板系統(tǒng)信息以及進行系統(tǒng)調(diào)試,同時也可以實現(xiàn)外接串行數(shù)據(jù)通信;4個USBhost接口,1個USBSlave接口,用于向開發(fā)板燒寫內(nèi)核文件以及其他文件。
根據(jù)系統(tǒng)總體需求,設(shè)備硬件原理框架以及內(nèi)部邏輯功能圖如圖2所示。
2.1.2Linux痢乍系統(tǒng)
Linux是一種自有和開放源碼的類Unix操作系統(tǒng),現(xiàn)在已經(jīng)成為使用最多的一種類Unix操作系統(tǒng),并且使用人數(shù)還在迅猛增長。Linux存在許多不同的Linux發(fā)行版本,它們都是用Linux內(nèi)核。通常,可以將一套基于Linux內(nèi)核的操作系統(tǒng)稱為Linux操作系統(tǒng)田。
本文中所設(shè)計的網(wǎng)關(guān)系統(tǒng)使用的TQ-2440開發(fā)平臺內(nèi)核版本為Linux2.6.32內(nèi)核,根文件系統(tǒng)采用yaffs,由系統(tǒng)啟動后掛載。為了實現(xiàn)3G功能,主要需要實現(xiàn)驅(qū)動模塊、軟件移植等功能,3G無線網(wǎng)卡通過USBHost[6]接口連接,負責3G網(wǎng)絡(luò)連接。
2.2網(wǎng)關(guān)系統(tǒng)設(shè)計總體結(jié)構(gòu)
系統(tǒng)總體設(shè)計主要包括兩個部分:3G無線網(wǎng)卡接口模塊和無線傳感器網(wǎng)絡(luò)數(shù)據(jù)應(yīng)用層代理及交互通信模塊。3G無線接口模塊負責接收從底層模塊傳送來的網(wǎng)絡(luò)流數(shù)據(jù),并且為上層模塊提供編程接口以實現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)發(fā)送;無線傳感器網(wǎng)絡(luò)數(shù)據(jù)應(yīng)用層代理和交互通信模塊則是負責IP網(wǎng)絡(luò)與無線傳感器網(wǎng)絡(luò)之間的數(shù)據(jù)通信與代理轉(zhuǎn)發(fā)。結(jié)構(gòu)如圖3所示。網(wǎng)關(guān)系統(tǒng)總體設(shè)計
圖3中,3G無線接口模塊的實現(xiàn)主要包括3G驅(qū)動模塊、配置管理和系統(tǒng)初始化模塊和應(yīng)用層代理與交互通信模塊。
其中3G驅(qū)動模塊主要是對上層模塊提供編程接口,實現(xiàn)網(wǎng)絡(luò)絡(luò)數(shù)據(jù)校驗、傳感器網(wǎng)絡(luò)與IP網(wǎng)絡(luò)數(shù)據(jù)代理等工作。
33G無線連接
3.1PPP協(xié)議簡介
PPP(Point-to-PointProtocal)即點對點協(xié)議,是為在同等單元之間傳輸數(shù)據(jù)包這樣的簡單鏈路設(shè)計的鏈路層協(xié)議。這種鏈路提供全雙工操作,并按照順序傳遞數(shù)據(jù)包。設(shè)計目的主要是用來通過撥號或?qū)>€方式建立點對點連接發(fā)送數(shù)據(jù),使其成為各種主機、網(wǎng)橋和路由器之間簡單連接的一種共通的解決方案。
3.2內(nèi)核對PPP協(xié)議的支持
要實現(xiàn)PPP協(xié)議的通信,需要在Linux內(nèi)核中增加對PPP協(xié)議的支持。具體操作步驟如下:
將Linux-2.6.32.2.tar.gz內(nèi)核文件復制到開發(fā)機上,并進行解壓縮。
切換到內(nèi)核目錄,通過命令makemenuconfig進入內(nèi)核編譯界面。
在其中將PPP支持選中即可。PPP相關(guān)驅(qū)動可以直接編譯進內(nèi)核,也可以以模塊的形式進行編譯。
通過命令makezImage進行內(nèi)核編譯。
將編譯好的zImage內(nèi)核燒寫至開發(fā)板flash中即可。
PPP的交叉編譯與安裝
在PPP官網(wǎng)下載程序文件,通過arm-linux-gcc工具進行交差編譯,此時在ppp文件的子目錄/ppp/pppd、/ppp/pppdump、/ppp/pppstats和/ppp/chat下可以分另U得到pppd、pppdump、pppstats以及chat可執(zhí)行程序,將它們復制到開發(fā)平臺的/bin目錄下。有的時候,則需要修改相應(yīng)程序的執(zhí)行權(quán)限。
3G無線網(wǎng)卡的撥號與聯(lián)網(wǎng)
在PPP交叉編譯完成以后,需要在開發(fā)板上的/etc/ppp/peers目錄下建立三個文件evdo、evdo-connect-chat和evdo-disconnect-chat。
(1)evdo文件內(nèi)容為:
debug
nodetach
lock
/dev/ttyUSB0
115200
user"card”
password"card”
crescts
show-password
usepeerdns
noauth
noipdefault
novj
noccp
defaultroute
ipcp-accept-local
ipcp-accept-remote
connect‘/bin/chat-s-v-f/etc/ppp/peers/evdo-connect-chat'
disconnect‘/bin/chat-s-v-f/etc/ppp/peers/evdo-disconnect-chat'
其中關(guān)鍵參數(shù)為:
/dev/ttyUSB0:表示撥號釆用的串口標識符;
user和password:表示用戶名和密碼,在電信EC12603G網(wǎng)卡中,默認均為card;
usepeerdns:表示向?qū)Χ酥辽僬埱髢蓚€DNS服務(wù)器地址;noauth:表示不要求對端去驗證自己。
evdo-connect-chat文件的內(nèi)容為:
TIMEOUT5
ABORT“NOCARRIER”
ABORT“ERROR”
ABORT“NODIALTONE”
ABORT“BUSY”
ABORT“NOANSWER”
‘'\rATZ
OK-AT-OKATD#777
CONNECT\d\c
AT即Attention,AT指令集是從終端設(shè)備(TE)或數(shù)據(jù)終端設(shè)備(DTE)向終端適配器(TA)或數(shù)據(jù)電路終端設(shè)備(DCE)發(fā)送的。通過TA、TE發(fā)送指令來控制移動臺的功能,與GSM網(wǎng)絡(luò)業(yè)務(wù)進行交互。用戶可以通過AT指令進行呼叫、短信、電話本、數(shù)據(jù)業(yè)務(wù)、傳真等方面的控制。
如evdo-connect-chat文件中的ATD命令即為撥號命令,這個命令用來設(shè)置通話、數(shù)據(jù)或傳真呼叫。
.evdo-disconnect-chat文件內(nèi)容為:
ABORT“BUSY”
ABORT“ERROR”
ABORT“NODIALTONE”
SAY“\nSendingbreaktothemodem\n”
‘'“\K”
‘'“+++ATH”
SAY“\nGoodbye\n”
在以上三個配置文件完成以后就可以通過pppd撥號,通過命令“pppdcallevdo&”,即可以啟動撥號程序。
3.5應(yīng)用層代理和交互通信模塊的總體結(jié)構(gòu)
在典型的無線傳感器網(wǎng)絡(luò)應(yīng)用中,無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)需要通過其協(xié)作節(jié)點將數(shù)據(jù)傳送至外部網(wǎng)絡(luò)中,由于無線傳感器網(wǎng)絡(luò)和外部網(wǎng)絡(luò)(如IP網(wǎng)絡(luò))之間的異構(gòu)性,因此數(shù)據(jù)不可能直接傳送至外部網(wǎng)絡(luò),需要特定的應(yīng)用層代理程序進行數(shù)據(jù)打包以及數(shù)據(jù)轉(zhuǎn)發(fā)等機制。
在本系統(tǒng)中,應(yīng)用層代理和交互通信模塊主要負責傳感器網(wǎng)絡(luò)和IP網(wǎng)絡(luò)雙向信道的建立、服務(wù)監(jiān)聽以及數(shù)據(jù)包的代理轉(zhuǎn)發(fā)。該模塊的總體設(shè)計結(jié)構(gòu)如圖4所示。
圖4應(yīng)用層代理與交互通信模塊結(jié)構(gòu)框圖
系統(tǒng)啟動后,會進行系統(tǒng)初始化工作。首先自動讀取配置數(shù)據(jù),決定數(shù)據(jù)轉(zhuǎn)發(fā)接口以及串口配置,包括Ethernet和3G轉(zhuǎn)發(fā)接口選擇、串口通信接口選擇等。然后進行雙向通信信道的建立,包括端口綁定、與server端建立socket通信信道以及與傳感器網(wǎng)絡(luò)中的寫作節(jié)點建立串行數(shù)據(jù)通信信道等。系統(tǒng)初始化完成以后,釆用端口復用機制實現(xiàn)數(shù)據(jù)異步監(jiān)聽,當有數(shù)據(jù)到達時,系統(tǒng)判斷傳送數(shù)據(jù)類型,針對不同類型的數(shù)據(jù)實現(xiàn)包完整性判斷、fcs校驗以及打包及拆包過程,最后系統(tǒng)針對不同類型數(shù)據(jù)轉(zhuǎn)發(fā)至對應(yīng)的通信會話中。
4結(jié)語
本文首先從無線傳感器網(wǎng)絡(luò)的總體設(shè)計出發(fā),闡述了無線傳感器網(wǎng)絡(luò)的典型應(yīng)用場景以及在嵌入式設(shè)備上實現(xiàn)3G接口及數(shù)據(jù)轉(zhuǎn)發(fā)的重要性,然后給出了一種基于嵌入式Linux操作系統(tǒng)的綜合網(wǎng)關(guān)設(shè)計方案,包括3G接口設(shè)計以及應(yīng)用層數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)計方案。該方案的實現(xiàn)極大地適應(yīng)了無線傳感器網(wǎng)絡(luò)隨機布置的特點,同時3G接入也為無線傳感器網(wǎng)絡(luò)數(shù)據(jù)傳輸提供了更為簡單便捷的傳輸體驗。同時,實際測試也很好地證明,該方案可以很好地實現(xiàn)無線傳感器網(wǎng)絡(luò)與IP網(wǎng)絡(luò)的互 聯(lián),并保持較好的穩(wěn)定性。
5致謝
本文作者感謝863計劃項目(批準號:2011AA100706), 國家自然科學基金項目(批準號:61271257)和北京市自然科 學基金(批準號:4122034)對本文研究工作的支持。
20211117_61950a84645e8__基于嵌入式Linux的傳感器網(wǎng)絡(luò)綜合網(wǎng)關(guān)設(shè)計