無線傳感器網(wǎng)絡(luò)與TCP/IP網(wǎng)絡(luò)互聯(lián)通信技術(shù)研究
無線傳感器網(wǎng)絡(luò)WSN(Wireless Sensor Networks)是由大量傳感器節(jié)點(diǎn)通過無線通信技術(shù)組成的自組織網(wǎng)絡(luò)。WSN具有成本低、功耗低、靈活性高、可擴(kuò)展等優(yōu)點(diǎn)[1],在民用和軍事領(lǐng)域都具有廣泛的應(yīng)用前景。特別是WSN接入到Internet已成為全新的研究熱點(diǎn)。如果能夠?qū)SN與Internet互聯(lián)起來,則可以通過Internet遠(yuǎn)程訪問和控制WSN,而且WSN也可以將信息傳輸給遠(yuǎn)端感興趣的用戶,不僅實(shí)現(xiàn)了網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控、診斷和系統(tǒng)升級(jí)的功能,而且也促進(jìn)了用戶端共享更多的網(wǎng)絡(luò)信息資源。而這也將進(jìn)一步促進(jìn)WSN在環(huán)境監(jiān)測(cè)、醫(yī)療監(jiān)護(hù)、城市交通管理、倉儲(chǔ)管理、軍事偵察等領(lǐng)域的應(yīng)用。
1 無線傳感器網(wǎng)絡(luò)與Internet的互聯(lián)方案分析
無線傳感器網(wǎng)絡(luò)具有以下特點(diǎn):節(jié)點(diǎn)可供開發(fā)片上資源(如內(nèi)存等)不多;部分應(yīng)用情形下節(jié)點(diǎn)數(shù)量眾多;節(jié)點(diǎn)可以靜止也可以移動(dòng)等。因此WSN與Internet的互聯(lián)技術(shù)較之一般的設(shè)備連接Internet技術(shù)有更多的難點(diǎn)。隨著技術(shù)的發(fā)展,提出了越來越多的方案,這些方案在不同的場(chǎng)合有不同的應(yīng)用。綜合起來可以分為以下幾種。
(1)通過IPv6進(jìn)行互聯(lián)
在某些應(yīng)用中,無線傳感器網(wǎng)絡(luò)應(yīng)用中所需的節(jié)點(diǎn)數(shù)量非常多,如果每一個(gè)節(jié)點(diǎn)都分配一個(gè)IP地址,則需要的IP地址數(shù)量眾多[2]。但實(shí)際應(yīng)用中沒有足夠的IP資源可用。而IPv6是下一代網(wǎng)絡(luò)協(xié)議,具有地址資源豐富,可以自動(dòng)配置IP地址等優(yōu)點(diǎn),可以滿足無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)對(duì)IP地址數(shù)量大的需求,所以在WSN互聯(lián)Internet技術(shù)中使用IPv6協(xié)議成為一個(gè)研究方向。但是由于Internet還是基于IPv4的TCP/IP協(xié)議,所以采用IPv6的WSN與Internet互聯(lián)需要進(jìn)行地址轉(zhuǎn)換[3],并且目前使用IPv6的WSN還處于實(shí)驗(yàn)網(wǎng)階段。
(2)通過GSM/CDMA網(wǎng)絡(luò)進(jìn)行互聯(lián)
許多WSN網(wǎng)絡(luò)應(yīng)用在偏遠(yuǎn)區(qū)域,那里除了移動(dòng)通信網(wǎng)絡(luò)設(shè)施外沒有其他的通信基礎(chǔ)設(shè)施,因此在這類區(qū)域中WSN互聯(lián)Internet必須借助于移動(dòng)通信網(wǎng)。移動(dòng)通信網(wǎng)覆蓋范圍廣,并且已過渡到3G CDMA網(wǎng)絡(luò),都已經(jīng)能夠連接到Internet。因此WSN通過移動(dòng)通信網(wǎng)很容易連接到Internet。但通過移動(dòng)通信網(wǎng)互聯(lián),要求WSN節(jié)點(diǎn)有較強(qiáng)的無線射頻發(fā)射和接收功率,這將使WSN節(jié)點(diǎn)能耗大大增加,需要增加額外的射頻硬件或發(fā)射天線。且須支持無線通信接口的相關(guān)協(xié)議。
(3)代理服務(wù)器結(jié)構(gòu)
由于傳感器節(jié)點(diǎn)片上資源太少,無法在傳感器上完整實(shí)施與Internet互聯(lián)的TCP/IP協(xié)議,因此在傳感器網(wǎng)絡(luò)與TCP/IP網(wǎng)絡(luò)之間設(shè)置一個(gè)代理服務(wù)器是比較常用的方法。使用代理服務(wù)器的WSN與Internet互聯(lián)網(wǎng)結(jié)構(gòu)如圖1所示。
代理服務(wù)器結(jié)構(gòu)的缺點(diǎn)是,如果代理服務(wù)器失效,則整個(gè)傳感器網(wǎng)絡(luò)都無法接入到Internet。為了避免發(fā)生這種情況,可以再使用一個(gè)備份代理網(wǎng)關(guān)。
(4)直接實(shí)施TCP/IP協(xié)議
在傳感器網(wǎng)絡(luò)節(jié)點(diǎn)上實(shí)施TCP/IP協(xié)議,并與Internet直接互聯(lián)是一種比較理想的方案。網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。這種方案的優(yōu)點(diǎn)是不需要通過代理網(wǎng)關(guān)就能夠?qū)崿F(xiàn)與Internet無縫連接,減少傳輸時(shí)延。但是考慮到傳感器節(jié)點(diǎn)自身因素,這種方法大規(guī)模實(shí)施起來難度很大[5]。主要原因有:
?、僖?yàn)門CP/IP協(xié)議簇龐大,在傳感器無法直接使用TCP/IP協(xié)議,只能根據(jù)網(wǎng)絡(luò)互聯(lián)要求實(shí)施實(shí)現(xiàn)互聯(lián)功能的主要部分協(xié)議,這要求程序設(shè)計(jì)人開發(fā)出一套簡(jiǎn)化的TCP/IP協(xié)議組件。
②部分傳感器網(wǎng)絡(luò)應(yīng)用于離城市較遠(yuǎn)的偏僻地區(qū),這些地區(qū)沒有連接到Internet的基礎(chǔ)設(shè)施,因此即使傳感器網(wǎng)絡(luò)各節(jié)點(diǎn)實(shí)施了簡(jiǎn)化的TCP/IP協(xié)議組件,仍沒有可連接的Internet接入點(diǎn)。
?、蹖?duì)于數(shù)量眾多的WSN網(wǎng)絡(luò),每個(gè)WSN節(jié)點(diǎn)都分配一個(gè)IP地址,則地址數(shù)量過于龐大,目前的IPv4無法滿足要求。
?、躎CP協(xié)議是根據(jù)有線網(wǎng)絡(luò)設(shè)計(jì)的,有線網(wǎng)絡(luò)極少出現(xiàn)網(wǎng)絡(luò)差錯(cuò),數(shù)據(jù)包的丟失主要是由于網(wǎng)絡(luò)發(fā)生擁塞。而無線網(wǎng)絡(luò)與有線網(wǎng)絡(luò)的最大不同是,無線網(wǎng)絡(luò)極易發(fā)生高比特率錯(cuò)誤,即由于無線鏈路的原因可能導(dǎo)致數(shù)據(jù)包連續(xù)丟失,這種情況會(huì)使TCP協(xié)議無法工作。因此TCP協(xié)議直接應(yīng)用于無線網(wǎng)絡(luò),其效率極其低下。
由于上述原因,這種WSN網(wǎng)絡(luò)與Internet的直接互聯(lián)目前處于研究起步階段,諸多問題還有待解決。
2 本系統(tǒng)采用的方案及設(shè)計(jì)
比較分析上述各種WSN與Internet互聯(lián)的方案,考慮到傳感器的硬件特點(diǎn),結(jié)合目前技術(shù)發(fā)展的成熟度,本項(xiàng)目采用代理服務(wù)器結(jié)構(gòu)來連接Internet,如圖1所示。本結(jié)構(gòu)的關(guān)鍵是代理服務(wù)器或網(wǎng)關(guān)完成的功能及系統(tǒng)設(shè)計(jì)。本系統(tǒng)中的代理網(wǎng)關(guān)主要完成兩個(gè)功能。一是在傳感器網(wǎng)絡(luò)和Internet之間起協(xié)議轉(zhuǎn)換作用。傳感器網(wǎng)絡(luò)中的節(jié)點(diǎn)并不直接和外部Internet的主機(jī)進(jìn)行通信,所有節(jié)點(diǎn)和外部主機(jī)的通信都通過代理網(wǎng)關(guān)進(jìn)行,同時(shí)外部主機(jī)想要查找某個(gè)傳感器節(jié)點(diǎn)上的數(shù)據(jù)時(shí),也是首先連接到代理網(wǎng)關(guān),由代理網(wǎng)關(guān)進(jìn)行后續(xù)處理。代理網(wǎng)關(guān)的另一個(gè)功能是作為傳感器網(wǎng)絡(luò)的特殊節(jié)點(diǎn), 它可以周期性地主動(dòng)訪問并接收其他傳感器節(jié)點(diǎn)的數(shù)據(jù)信息,并將這些信息存儲(chǔ)起來。當(dāng)外部客戶端想要獲得傳感器網(wǎng)絡(luò)中某個(gè)特定傳感器節(jié)點(diǎn)的數(shù)據(jù)信息時(shí),可以立即從代理網(wǎng)關(guān)中存儲(chǔ)的信息中查找得到,從而加快獲得信息的響應(yīng)時(shí)間。很明顯,WSN的內(nèi)部各節(jié)點(diǎn)數(shù)據(jù)通信方法可以自由選擇,完全可以采用已經(jīng)成熟的Ad-hoc網(wǎng)絡(luò)的各種路由技術(shù)。
代理網(wǎng)關(guān)節(jié)點(diǎn)設(shè)計(jì)如圖3所示。傳感器、無線收發(fā)器、單片機(jī)組成普通的WSN節(jié)點(diǎn)模塊(圖3的方框內(nèi)部分)。AVR ATmegal128L單片機(jī)[6]是WSN節(jié)點(diǎn)的主控芯片,是節(jié)點(diǎn)數(shù)據(jù)通信的處理器。傳感器起數(shù)據(jù)采集作用,采集數(shù)據(jù)經(jīng)A/D轉(zhuǎn)換連接到單片機(jī)。WSN節(jié)點(diǎn)之間的通信通過無線收發(fā)器nRF905進(jìn)行??紤]到傳感器節(jié)點(diǎn)通信過程的數(shù)據(jù)處理量較大,所以外接一個(gè)存儲(chǔ)器來存儲(chǔ)或暫存自己采集的或需要轉(zhuǎn)發(fā)的其他節(jié)點(diǎn)傳輸過來的數(shù)據(jù)。WSN與Internet互聯(lián)的代理網(wǎng)關(guān)則是在普通的WSN節(jié)點(diǎn)模塊基礎(chǔ)上,增加CS8900A以太網(wǎng)絡(luò)控制器,可以連接到局域網(wǎng),從而與Internet互聯(lián)。同時(shí)代理網(wǎng)關(guān)節(jié)點(diǎn)通過MAX232連接到計(jì)算機(jī)。由于代理網(wǎng)關(guān)的數(shù)據(jù)通信處理量比普通的WSN節(jié)點(diǎn)要大得多,所以可以再增加一個(gè)RAM存儲(chǔ)器。
3 互聯(lián)協(xié)議實(shí)現(xiàn)
TCP/IP協(xié)議簇是使Internet中的計(jì)算機(jī)能互聯(lián)通信的一組協(xié)議。這些協(xié)議協(xié)同工作,各自完成不同的功能,能夠?yàn)橛脩籼峁┒噙_(dá)幾十種網(wǎng)絡(luò)應(yīng)用。在高級(jí)應(yīng)用場(chǎng)合,操作系統(tǒng)中一般需要支持完整的TCP/IP協(xié)議簇,但在相對(duì)單一應(yīng)用的場(chǎng)所,只需要實(shí)現(xiàn)某一種功能的工業(yè)應(yīng)用領(lǐng)域,完整實(shí)現(xiàn)TCP/IP協(xié)議簇顯得沒有必要。首先是因?yàn)楣I(yè)應(yīng)用芯片沒有足夠多的硬件資源,其次是過多的不需要的功能會(huì)減慢系統(tǒng)響應(yīng)速度。對(duì)于本項(xiàng)目的傳感器網(wǎng)絡(luò)與Internet的互聯(lián),管理人員僅需要傳感器網(wǎng)絡(luò)節(jié)點(diǎn)監(jiān)測(cè)到的相關(guān)數(shù)據(jù),一般通過交互式Web服務(wù)器就可以得到,所以只需要應(yīng)用層實(shí)現(xiàn)HTTP協(xié)議就可以了,其他應(yīng)用層程序都可以舍棄不予實(shí)現(xiàn)。
目前國際上許多嵌入式產(chǎn)品供應(yīng)商都根據(jù)嵌入式產(chǎn)品所實(shí)現(xiàn)功能的需要,在TCP/IP協(xié)議套件的基礎(chǔ)上進(jìn)行簡(jiǎn)化,根據(jù)具體的應(yīng)用提供不同的協(xié)議模塊,保留基本的網(wǎng)絡(luò)通信功能,在可移植性方面做了各具特色的改進(jìn)。本項(xiàng)目對(duì)TCP/IP協(xié)議的精簡(jiǎn)參考了他們的做法[7],在協(xié)議程序代碼的實(shí)現(xiàn)過程中,主要考慮了以下兩點(diǎn):
(1)精簡(jiǎn)代碼。根據(jù)傳感器網(wǎng)絡(luò)互聯(lián)Internet的應(yīng)用要求,盡量簡(jiǎn)化TCP/IP協(xié)議簇,只實(shí)現(xiàn)基本的、必要的功能,使生成的二進(jìn)制代碼盡量精簡(jiǎn),這樣做能夠顯著提高系統(tǒng)與傳感器網(wǎng)絡(luò)的交互能力,能夠適應(yīng)傳感器節(jié)點(diǎn)上有限的內(nèi)存空間以及芯片處理速度。如圖4所示,本系統(tǒng)實(shí)現(xiàn)的互聯(lián)協(xié)議如圖中的灰色方框中的協(xié)議所示,實(shí)現(xiàn)的是TCP/IP協(xié)議簇的一部分協(xié)議。
(2)強(qiáng)移植性。傳感器的類型和型號(hào)眾多。精簡(jiǎn)后的協(xié)議程序應(yīng)盡量能夠應(yīng)用于不同類型的傳感器元件。如果精簡(jiǎn)后的程序在一種類型的傳感器上運(yùn)行良好,而在另一種類型的傳感上無法實(shí)現(xiàn)互聯(lián),需要重新進(jìn)行復(fù)雜的軟件開發(fā)工作,則大大增加開發(fā)的工作量。因此精簡(jiǎn)后代碼的可移植性是非常重要的。這樣,在對(duì)傳感器節(jié)點(diǎn)進(jìn)行升級(jí)或者更換時(shí),除了與硬件直接相關(guān)的部分代碼需要重新開發(fā)外,不需要對(duì)整個(gè)互聯(lián)協(xié)議進(jìn)行大的修改。
本項(xiàng)目精簡(jiǎn)后的互聯(lián)協(xié)議組件稱為sip,意義為一個(gè)小型(small)TCP/IP協(xié)議組件。在本文第4節(jié)的代理網(wǎng)關(guān)主處理程序中出現(xiàn)的sip就是本系統(tǒng)開發(fā)的簡(jiǎn)化互聯(lián)協(xié)議組件。
4 代理網(wǎng)關(guān)主處理程序
代理網(wǎng)關(guān)實(shí)際上相當(dāng)于一個(gè)協(xié)議轉(zhuǎn)換程序。它能夠接收WSN網(wǎng)絡(luò)節(jié)點(diǎn)傳輸過來的數(shù)據(jù)信息,并將其按照TCP/IP協(xié)議的要求轉(zhuǎn)換成合適的數(shù)據(jù)格式。如果得到返回給WSN網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)據(jù),則按照WSN的要求將其轉(zhuǎn)換成適合于傳感器節(jié)點(diǎn)傳輸?shù)臄?shù)據(jù)格式。代理網(wǎng)關(guān)的功能相對(duì)復(fù)雜,其硬件和軟件設(shè)計(jì)在前面兩節(jié)中已討論過,這里只給出代理網(wǎng)關(guān)的主處理程序。
主處理程序的主要功能是通過簡(jiǎn)化的互聯(lián)協(xié)議,實(shí)現(xiàn)與傳感器節(jié)點(diǎn)、Ethernet網(wǎng)絡(luò)接口的數(shù)據(jù)交互。因此在主處理程序的開始部分,首先對(duì)定時(shí)器、串口接口、Ethernet接口初始化。硬件初始化成功以后,開始啟動(dòng)簡(jiǎn)化的TCP/IP互聯(lián)協(xié)議,接著對(duì)arp協(xié)議和應(yīng)用程序進(jìn)行初始化。初始化完成后,主處理程序?qū)⒉煌5剡M(jìn)行查詢,如果接收到新的數(shù)據(jù)包則發(fā)送給eth_send()函數(shù)進(jìn)行處理,如果沒有新數(shù)據(jù)包到達(dá),則由sip_periodic()函數(shù)處理定時(shí)事件。主處理程序的部分程序代碼如下。
void main(void)
{init _timer (); //用戶自定義定時(shí)器初始化程序
init_serial (); //用戶自定義串口初始化程序
init_8900a(); //Enternet接口初始化,需用戶定義
sip_init(); //對(duì)簡(jiǎn)化的互聯(lián)協(xié)議sip初始化
init_httpd (); //定義web應(yīng)用程序
sip_arp_init();
while(1)
{sip_len=eth_reve;
if(sip_len==0) //無數(shù)據(jù)接收,開始定時(shí)輪詢
{for(i=0;iSIP_CONNS;i++)
{sip_periodic(i);
if(sip_len>0)
{sip_arp_out();
eth_send();
}
}
}
else if(sip_len>0) //接收并處理數(shù)據(jù)
{sip_arp_ipin();
sip_len=sizeof(struct sip_eth_hdr);
sip_input();
if(sip_len>0)
{uip_arp_out();
eth_send();
}
}
}
簡(jiǎn)化后的互聯(lián)協(xié)議棧的鏈路層部分由網(wǎng)絡(luò)控制器CS8900A完成,網(wǎng)絡(luò)層和傳輸層由單片機(jī)來處理。應(yīng)用層則根據(jù)需要可以在單片機(jī)內(nèi)完成,也可以由單片機(jī)轉(zhuǎn)給用戶或終端設(shè)備完成。除了WEB服務(wù)之外,盡管其他應(yīng)用層服務(wù)像SMTP協(xié)議支持功能也可以根據(jù)需要編寫相應(yīng)的代碼[8],但一般不需要添加額外太多的應(yīng)用層服務(wù)。
本項(xiàng)目設(shè)計(jì)的無線傳感器網(wǎng)絡(luò)與Internet的互聯(lián)系統(tǒng),在實(shí)際中得到了成功應(yīng)用。筆者下一步工作重點(diǎn)是在系統(tǒng)中增加支持通過無線局域網(wǎng)互聯(lián)到Internet的功能,以使本系統(tǒng)能夠應(yīng)用于那些通過無線局域網(wǎng)互聯(lián)到Internet的環(huán)境。
參考文獻(xiàn)
[1] 孫利民,李建中,陳渝,等.無線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2005,5.
[2] 王曉楠,唐振民,錢煥延.無線傳感器網(wǎng)絡(luò)與IPv6網(wǎng)絡(luò)的互聯(lián)通信[J].計(jì)算機(jī)工程,2009,35(24).
[3] 侯惠峰,劉湘雯,于宏毅,等.無線傳感器網(wǎng)絡(luò)與IPv6網(wǎng)絡(luò)的互聯(lián)方式研究[J].電信科學(xué),2006,22(6).
[4] 鄭增威,吳朝暉,林懷忠,等.可靠傳感網(wǎng)聚類路由算法研究[J].浙江大學(xué)學(xué)報(bào)(工學(xué)版),2005,39(10).
[5] Comer DE.用TCP/IP進(jìn)行網(wǎng)際互連(第一卷第五版)[M].北京:電子工業(yè)出版社,2007,5.
[6] 陳冬云.ATmega128單片機(jī)原理與開發(fā)指導(dǎo)[M].北京:機(jī)械工業(yè)出版社,2006,1.
[7] uIP協(xié)議棧研究網(wǎng).http://www.sics.se/~adam/uip/index.php/Main_Page.
[8] 鄭靈翔.嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)[M].北京:北京航空航天大學(xué)出版社,2006,7.
傳感器相關(guān)文章:傳感器工作原理
tcp/ip相關(guān)文章:tcp/ip是什么
通信相關(guān)文章:通信原理
風(fēng)速傳感器相關(guān)文章:風(fēng)速傳感器原理
評(píng)論