黑龍江 趙峰
應(yīng)用TinyOS系統(tǒng)開(kāi)發(fā)無(wú)線傳感器節(jié)點(diǎn)應(yīng)用程序的探索
黑龍江 趙峰
無(wú)線傳感器網(wǎng)絡(luò)是新興網(wǎng)絡(luò)技術(shù),是當(dāng)前國(guó)內(nèi)外傳感器技術(shù)領(lǐng)域的熱點(diǎn)研究課題。本文基于自動(dòng)抄表技術(shù)思想,設(shè)計(jì)了嵌入到燃?xì)獗碇械臒o(wú)線傳感器節(jié)點(diǎn)的軟件結(jié)構(gòu),采用的軟件開(kāi)發(fā)系統(tǒng)是專(zhuān)用于無(wú)線傳感器網(wǎng)絡(luò)的操作系統(tǒng)TinyOS。程序經(jīng)測(cè)試,運(yùn)行穩(wěn)定,數(shù)據(jù)采集準(zhǔn)確度較高,滿(mǎn)足燃?xì)獗磉h(yuǎn)程抄表的基本應(yīng)用要求。
正常級(jí);休眠級(jí);單元網(wǎng)關(guān);基站
文章提出一種將無(wú)線傳感器節(jié)點(diǎn)嵌入到燃?xì)獗碇?,?shí)現(xiàn)遠(yuǎn)程無(wú)線自動(dòng)抄表的技術(shù)。本技術(shù)不同于IC卡表系統(tǒng),它的計(jì)費(fèi)、收費(fèi)全部移交到燃?xì)夤镜姆?wù)器端進(jìn)行處理,而且又能有效地監(jiān)管用戶(hù)實(shí)際使用情況,提高了抄表效率,降低了成本。圖1為基于無(wú)線傳感器網(wǎng)絡(luò)的燃?xì)獗磉h(yuǎn)程抄表系統(tǒng)。
在本方案中,我們將無(wú)線傳感器節(jié)點(diǎn)安裝在燃?xì)獗韮?nèi),燃?xì)庥昧坑妹}沖計(jì)數(shù),節(jié)點(diǎn)將脈沖計(jì)數(shù)以無(wú)線方式傳遞到基站,由基站將用戶(hù)實(shí)際用燃?xì)鈹?shù)換算出來(lái)。無(wú)線傳感器節(jié)點(diǎn)由傳感器模塊、處理器模塊、無(wú)線通信模塊和能量供應(yīng)模塊四部分組成。在本系統(tǒng)中,處理器模塊采用ATmega128L,它是基于AVRRISC結(jié)構(gòu)的8位微控制器,是AVR系列中功能比較強(qiáng)大的單片機(jī),具有128KB閃存,4KBSRAM,功耗16.5mW。無(wú)線通信模塊采用符合2.4GHz IEEE802.15.4標(biāo)準(zhǔn)的射頻收發(fā)器CC2420。它基于Chipcon公司的SmartRF技術(shù),以0.18UinCMOS工藝制成,性能穩(wěn)定且功耗極低。
TinyOS是專(zhuān)門(mén)為無(wú)線傳感器網(wǎng)絡(luò)定制的微型化操作系統(tǒng),它采用基于組件化和并行模型的nesC語(yǔ)言,產(chǎn)生的目標(biāo)代碼較小,滿(mǎn)足了無(wú)線傳感器節(jié)點(diǎn)處理能力和存儲(chǔ)能力有限的要求,并且具有較強(qiáng)的網(wǎng)絡(luò)處理和資源收集能力。
在本系統(tǒng)中,基站是用來(lái)完成將轉(zhuǎn)發(fā)節(jié)點(diǎn)融合上來(lái)的數(shù)據(jù)進(jìn)行通信協(xié)議轉(zhuǎn)換并上傳至服務(wù)器或向無(wú)線傳感器節(jié)點(diǎn)轉(zhuǎn)發(fā)服務(wù)器下達(dá)的命令。
節(jié)點(diǎn)與基站通信采用TOSBase無(wú)線——串口通信組件。在通信中為了分辨不同的設(shè)備,采取了地址編碼的方法。即為基站和節(jié)點(diǎn)統(tǒng)一編碼,每一個(gè)設(shè)備存在一個(gè)唯一的地址碼(網(wǎng)絡(luò)組號(hào)+設(shè)備地址碼)。在通信包中加入目的設(shè)備地址碼,以保證此包到達(dá)目的設(shè)備并只有此目的設(shè)備對(duì)此包做出響應(yīng)。
網(wǎng)絡(luò)組號(hào):占1字節(jié),可以是服務(wù)器分發(fā)給基站的基站ID號(hào),也可能是基站發(fā)給節(jié)點(diǎn)的ID號(hào)?;九c服務(wù)器通信的網(wǎng)絡(luò)組號(hào)為0。
通信協(xié)議中的數(shù)據(jù)包長(zhǎng)度=data域的長(zhǎng)度。
目的地址:占1字節(jié),接收數(shù)據(jù)的地址。
數(shù)據(jù)內(nèi)容:多字節(jié),可以是壓縮或加密的數(shù)據(jù)。
活動(dòng)消息(ActiveMessage,AM)包含了addr,type,group信息,有此定義消息就可以在節(jié)點(diǎn)與節(jié)點(diǎn)之間進(jìn)行字節(jié)傳輸。數(shù)據(jù)包中的數(shù)據(jù)(data)域,根據(jù)數(shù)據(jù)包類(lèi)型不同,其占用字節(jié)數(shù)也不同,在TinyOS消息的數(shù)據(jù)部分長(zhǎng)度默認(rèn)29個(gè)字節(jié),通過(guò)修改Makefile文件中的MSG_SIZE,最大可以是36。
采用修改后的GAF算法,設(shè)每棟住宅為一組無(wú)線傳感器網(wǎng)絡(luò),在每棟住宅安裝一個(gè)基站。考慮到定位問(wèn)題,基站一般不安裝在大樓中間單元,它一定放置在其左邊的單元數(shù)不等于右邊單元數(shù)的單元中。這里定義了幾個(gè)特定的節(jié)點(diǎn),有上傳單元網(wǎng)關(guān)、下傳單元網(wǎng)關(guān)。單元網(wǎng)關(guān)為相鄰單元相互通信的簇頭。上傳單元網(wǎng)關(guān)為本單元中數(shù)據(jù)發(fā)送到基站時(shí)通過(guò)的單元網(wǎng)關(guān),單元中靠近基站一側(cè)的節(jié)點(diǎn)可以作為上傳單元網(wǎng)關(guān)。下傳單元網(wǎng)關(guān)為本單元中基站發(fā)出的數(shù)據(jù)通過(guò)的本單元網(wǎng)關(guān)傳到下一個(gè)單元的單元網(wǎng)關(guān),單元中遠(yuǎn)離基站一側(cè)的節(jié)點(diǎn)可以作為下傳單元網(wǎng)關(guān)。
節(jié)點(diǎn)初始化后,開(kāi)始形成拓?fù)?。每個(gè)單元的各層進(jìn)行分簇,從頂層起每?jī)蓪訛橐淮?,若最后剩三層則歸為一簇。簇頭選舉以能量為標(biāo)準(zhǔn),安裝初始時(shí),因?yàn)楦鞴?jié)點(diǎn)能量相同,按照節(jié)點(diǎn)ID最小的為簇頭,當(dāng)簇頭每發(fā)1000字符后重新生成簇頭一次,能量高者為新簇頭。
本系統(tǒng)適于所有節(jié)點(diǎn)都處于一個(gè)平面的情況,即適于每層有單戶(hù)居民或雙戶(hù)居民的住宅樓。節(jié)點(diǎn)數(shù)據(jù)傳輸分為上傳和下傳,上傳的定義為節(jié)點(diǎn)把數(shù)據(jù)傳到簇頭,簇頭再把數(shù)據(jù)融合后傳到上傳單元網(wǎng)關(guān)中,通過(guò)多個(gè)上傳單元網(wǎng)關(guān)傳到基站。下傳的定義為基站發(fā)出的數(shù)據(jù)通過(guò)多個(gè)下傳單元網(wǎng)關(guān),傳輸?shù)街付▎卧?,由其單元網(wǎng)關(guān)多跳到簇頭,簇頭再轉(zhuǎn)發(fā)給節(jié)點(diǎn)(周期可能較長(zhǎng),取決于節(jié)點(diǎn)喚醒時(shí),簇頭是否運(yùn)行)。在沒(méi)有數(shù)據(jù)傳輸時(shí),為減少能量消耗,節(jié)點(diǎn)處于休眠狀態(tài)。在本設(shè)計(jì)中,考慮簇頭由于能量的變化而經(jīng)常改變,因此采取節(jié)點(diǎn)正常級(jí)+休眠級(jí)的工作模式。正常級(jí)為單元網(wǎng)關(guān)處于每5秒喚醒自己1秒的機(jī)制,采用簇頭每10秒喚醒自己1秒的機(jī)制,簇中節(jié)點(diǎn)每5分鐘喚醒自己一次,如果簇頭正在休眠則定義先醒的節(jié)點(diǎn)是臨時(shí)代理簇頭。休眠級(jí)為單元網(wǎng)關(guān)、簇頭、節(jié)點(diǎn)處于每1(或幾個(gè))小時(shí)喚醒自己1次的機(jī)制,如果單元網(wǎng)關(guān)、簇頭正在休眠則定義先醒的節(jié)點(diǎn)是臨時(shí)代理簇頭;如果節(jié)點(diǎn)失去聯(lián)系(中途換電池等),每5分鐘喚醒自己一次,每次10秒(必須和正常級(jí)中的秒數(shù)對(duì)應(yīng)),三次后若仍無(wú)反應(yīng),則認(rèn)為該節(jié)點(diǎn)失效。若有些節(jié)點(diǎn)因故障報(bào)停,影響整個(gè)網(wǎng)絡(luò),則需要維修人員在單元中添加轉(zhuǎn)發(fā)節(jié)點(diǎn)。
本文詳細(xì)闡述了無(wú)線傳感器節(jié)點(diǎn)在燃?xì)獗碇袘?yīng)用程序的設(shè)計(jì),此程序經(jīng)測(cè)試運(yùn)行穩(wěn)定,數(shù)據(jù)采集準(zhǔn)確度較高,并能流暢地上傳到PC機(jī),同時(shí)實(shí)現(xiàn)了傳感器網(wǎng)絡(luò)必需的低功耗。
[1]孫利民,李建中,等.無(wú)線傳感器網(wǎng)絡(luò).北京:清華大學(xué)出版社,2005年.
[2]張帆,李文峰.TinyOS消息通訊機(jī)制以及TOSBase無(wú)線-串口通訊組件分析.中國(guó)科技論文在線,2005-05-15.
[3]David Gay,Philip Levis,David Culler,Eric Brewer.nesC 1.1 Language Reference Manual.May2003.
[4]Mote In-Network Programming User Reference.TOS In-Network ProgrammingUser Reference.version 20030315.
(作者單位:齊齊哈爾工程學(xué)院)
(編輯 李艷華)