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