摘 要: 提出了無線傳感器網(wǎng)絡(luò)與Internet互聯(lián)通信技術(shù)的代理服務(wù)器系統(tǒng)結(jié)構(gòu),。設(shè)計(jì)了具有網(wǎng)絡(luò)接口功能的代理網(wǎng)關(guān)節(jié)點(diǎn)。該節(jié)點(diǎn)作為無線傳感器網(wǎng)絡(luò)與Internet互聯(lián)通信的代理網(wǎng)關(guān),,實(shí)現(xiàn)了遠(yuǎn)程訪問和獲取傳感器網(wǎng)絡(luò)監(jiān)測的信息,。給出了精簡化的TCP/IP互聯(lián)協(xié)議,以及代理網(wǎng)關(guān)主處理程序的軟件實(shí)現(xiàn),。
關(guān)鍵詞: 無線傳感器網(wǎng)絡(luò),;代理網(wǎng)關(guān);Internet互聯(lián),;網(wǎng)絡(luò)接口,;簡化的TCP/IP協(xié)議棧
無線傳感器網(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ìn)了用戶端共享更多的網(wǎng)絡(luò)信息資源。而這也將進(jìn)一步促進(jìn)WSN在環(huán)境監(jiān)測,、醫(yī)療監(jiān)護(hù),、城市交通管理、倉儲管理,、軍事偵察等領(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)可以靜止也可以移動等,。因此WSN與Internet的互聯(lián)技術(shù)較之一般的設(shè)備連接Internet技術(shù)有更多的難點(diǎn)。隨著技術(shù)的發(fā)展,,提出了越來越多的方案,,這些方案在不同的場合有不同的應(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é)議,,具有地址資源豐富,,可以自動配置IP地址等優(yōu)點(diǎn),可以滿足無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)對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ū)域,那里除了移動通信網(wǎng)絡(luò)設(shè)施外沒有其他的通信基礎(chǔ)設(shè)施,,因此在這類區(qū)域中WSN互聯(lián)Internet必須借助于移動通信網(wǎng),。移動通信網(wǎng)覆蓋范圍廣,并且已過渡到3G CDMA網(wǎng)絡(luò),,都已經(jīng)能夠連接到Internet,。因此WSN通過移動通信網(wǎng)很容易連接到Internet。但通過移動通信網(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ā)出一套簡化的TCP/IP協(xié)議組件,。
?、诓糠謧鞲衅骶W(wǎng)絡(luò)應(yīng)用于離城市較遠(yuǎn)的偏僻地區(qū),這些地區(qū)沒有連接到Internet的基礎(chǔ)設(shè)施,,因此即使傳感器網(wǎng)絡(luò)各節(jié)點(diǎn)實(shí)施了簡化的TCP/IP協(xié)議組件,,仍沒有可連接的Internet接入點(diǎn)。
?、蹖τ跀?shù)量眾多的WSN網(wǎng)絡(luò),,每個(gè)WSN節(jié)點(diǎn)都分配一個(gè)IP地址,則地址數(shù)量過于龐大,,目前的IPv4無法滿足要求,。
④TCP協(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ù)丟失,這種情況會使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),, 它可以周期性地主動訪問并接收其他傳感器節(jié)點(diǎn)的數(shù)據(jù)信息,并將這些信息存儲起來,。當(dāng)外部客戶端想要獲得傳感器網(wǎng)絡(luò)中某個(gè)特定傳感器節(jié)點(diǎn)的數(shù)據(jù)信息時(shí),,可以立即從代理網(wǎng)關(guān)中存儲的信息中查找得到,從而加快獲得信息的響應(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è)存儲器來存儲或暫存自己采集的或需要轉(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存儲器,。
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)用。在高級應(yīng)用場合,,操作系統(tǒng)中一般需要支持完整的TCP/IP協(xié)議簇,,但在相對單一應(yīng)用的場所,只需要實(shí)現(xiàn)某一種功能的工業(yè)應(yīng)用領(lǐng)域,,完整實(shí)現(xiàn)TCP/IP協(xié)議簇顯得沒有必要,。首先是因?yàn)楣I(yè)應(yīng)用芯片沒有足夠多的硬件資源,,其次是過多的不需要的功能會減慢系統(tǒng)響應(yīng)速度。對于本項(xiàng)目的傳感器網(wǎng)絡(luò)與Internet的互聯(lián),,管理人員僅需要傳感器網(wǎng)絡(luò)節(jié)點(diǎn)監(jiān)測到的相關(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)行簡化,,根據(jù)具體的應(yīng)用提供不同的協(xié)議模塊,,保留基本的網(wǎng)絡(luò)通信功能,在可移植性方面做了各具特色的改進(jìn),。本項(xiàng)目對TCP/IP協(xié)議的精簡參考了他們的做法[7],,在協(xié)議程序代碼的實(shí)現(xiàn)過程中,主要考慮了以下兩點(diǎn):
(1)精簡代碼,。根據(jù)傳感器網(wǎng)絡(luò)互聯(lián)Internet的應(yīng)用要求,,盡量簡化TCP/IP協(xié)議簇,只實(shí)現(xiàn)基本的,、必要的功能,,使生成的二進(jì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)移植性。傳感器的類型和型號眾多,。精簡后的協(xié)議程序應(yīng)盡量能夠應(yīng)用于不同類型的傳感器元件,。如果精簡后的程序在一種類型的傳感器上運(yùn)行良好,而在另一種類型的傳感上無法實(shí)現(xiàn)互聯(lián),,需要重新進(jìn)行復(fù)雜的軟件開發(fā)工作,,則大大增加開發(fā)的工作量。因此精簡后代碼的可移植性是非常重要的,。這樣,,在對傳感器節(jié)點(diǎn)進(jìn)行升級或者更換時(shí),除了與硬件直接相關(guān)的部分代碼需要重新開發(fā)外,,不需要對整個(gè)互聯(lián)協(xié)議進(jìn)行大的修改,。
本項(xiàng)目精簡后的互聯(lián)協(xié)議組件稱為sip,意義為一個(gè)小型(small)TCP/IP協(xié)議組件,。在本文第4節(jié)的代理網(wǎng)關(guān)主處理程序中出現(xiàn)的sip就是本系統(tǒng)開發(fā)的簡化互聯(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)的功能相對復(fù)雜,,其硬件和軟件設(shè)計(jì)在前面兩節(jié)中已討論過,,這里只給出代理網(wǎng)關(guān)的主處理程序。
主處理程序的主要功能是通過簡化的互聯(lián)協(xié)議,,實(shí)現(xiàn)與傳感器節(jié)點(diǎn)、Ethernet網(wǎng)絡(luò)接口的數(shù)據(jù)交互,。因此在主處理程序的開始部分,,首先對定時(shí)器、串口接口,、Ethernet接口初始化,。硬件初始化成功以后,開始啟動簡化的TCP/IP互聯(lián)協(xié)議,,接著對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(),; //對簡化的互聯(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;i<SIP_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(),;
}
}
}
簡化后的互聯(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.