孫琪,王曉喃
(常熟理工學院計算機科學與工程學院,江蘇 常熟 215500)
無線傳感器網絡構建與實現(xiàn)
孫琪,王曉喃
(常熟理工學院計算機科學與工程學院,江蘇 常熟 215500)
分析了無線傳感器網絡的特點,實現(xiàn)了無線傳感器網絡的構建算法,以及啟動順序、運作流程和嵌入式操作系統(tǒng)的調度算法,并在硬件上實現(xiàn)了數據傳輸的實驗,同時分析了無線傳感網構建的一些關鍵問題.
無線傳感網;構建;嵌入式操作系統(tǒng)
隨著無線通信和嵌入式技術的飛速發(fā)展,無線傳感器網絡也得到了發(fā)展.無線傳感網的研究與發(fā)展改變了人們對自然界的感知方式,一些小型的WSN如ZebraNet[1]、GlacsWeb[2]也成功采用mesh拓撲組網模式部署并應用起來.通過部署大量的傳感器節(jié)點,以無線自組織的方式協(xié)調感知、采集和處理目標區(qū)域中的目標對象信息[3],并將信息反饋給用戶,滿足了人們對各類目標區(qū)域進行監(jiān)測的要求.
然而,WSN在組網、數據路由、數據融合[4]、網絡管理和網絡實體協(xié)作等方面的技術難度也隨著網絡規(guī)模而呈指數級上升,網絡的建網耗時、通信延遲、丟包率等也會急速惡化[5].已有的對WSN的理論及實踐研究表明,大多數可用于WSN的商用網絡協(xié)議在構建大規(guī)模WSN時都存在嚴重不足,協(xié)議棧過于復雜、支持的網絡規(guī)模小、有限的協(xié)作能力、缺乏資源動態(tài)配置能力等.除此之外,能耗與效率之間的取舍也一直難以權衡.然而Zigbee特別適合于低數據速率、低功耗、低成本[6]的WSN應用,它在構建大規(guī)模WSN方面極具潛力.但目前對Zigbee的開發(fā),許多人還不甚了解,對其中的組網方式,數據傳輸過程以及協(xié)議棧的工作方式不夠了解,因而大大降低了Zigbee開發(fā)的效率.為了解決這一問題,文章對Zigbee 2006協(xié)議棧進行了詳細的分析,并以溫度及電壓采集實驗對節(jié)點間的組網和數據傳輸進行了詳細的說明.
1.1 Zigbee技術
Zigbee是一種短距離、低復雜度、低功耗、低速率、低成本的雙向無線通訊技術,是由IEEE(Institute of Electrical and Electronics Engineers)的802.15.4工作組開發(fā)的有關組網、安全和應用軟件方面的技術標準.IEEE工作組主要負責制定物理層(PHY,Physical Layer)和媒體訪問控制層(MAC,Media Access Control Layer)標準,Zigbee負責網絡層和應用接口的開發(fā),用戶根據需要設計自己所需的應用層程序,如圖1所示.
圖1 Zigbee的結構和分工
1.1.1 Zigbee的技術優(yōu)勢
(1)低功耗:10~250 KB/s的低傳輸率,發(fā)射功率1 mW,采用休眠模式來降低能耗.(2)低成本:Zigbee模塊的成本在6美元左右,并越來越低,Zigbee協(xié)議不收專利費.(3)網絡容量大,組網靈活:一個Zigbee網絡最多可以容納65535個節(jié)點,在同一區(qū)域內可同時存在100個網絡.
(4)傳輸可靠:采用碰撞避免機制,并為需要固定帶寬的通信預留專用時隙來避免數據發(fā)送時的競爭和沖突.物理層則采用完全確認的數據傳輸機制,發(fā)送的每個數據都需要對方的確認.
(5)安全:Zigbee采用AES-128加密算法.
Zigbee的低功耗、低成本、時延短、網絡容量大、傳輸可靠、安全等特點[7],使其主要用在距離短(典型的30 m以內)、功耗低且傳輸速率不高的各種電子設備之間進行數據傳輸以及典型的有周期性數據、間歇性數據和低反應時間數據傳輸的應用中.Zigbee是一個由可多到65000個無線數據傳輸模塊組成的一個無線數據傳輸網絡平臺,在整個網絡范圍內,每一個Zigbee網絡數傳模塊之間可以相互通信,Zigbee簡單、使用方便、工作可靠、價格低等這些特點使得每個Zigbee基站不到1000元人民幣,而移動通信網的基站價值高達百萬,這也是Zigbee適合用于部署大規(guī)模WSN[8]的原因之一.
1.1.2 Zigbee相關概念
(1)Zigbee設備[3]:Zigbee設備分為全功能型設備(FFD,F(xiàn)ull Function Device)和簡化功能型設備(RFD,Reduced Function Device).RFD無法作為網絡的協(xié)調器,它只能與FFD進行通信,只能作為網絡中的終端節(jié)點(ZE,Zigbee EndDevice);而FFD既可以作為協(xié)調器(ZC,Zigbee Coordinator)也可以作為路由器(ZR,Zigbee Router),也可以作為終端節(jié)點來使用.
Zigbee網絡由唯一的ZC和多個ZE組成,復雜網絡還有ZR.ZC負責建立網絡,另外,網絡信標的傳輸,節(jié)點的管理及網絡節(jié)點信息的存儲,為關聯(lián)節(jié)點間提供路由信息等也是由ZC負責;ZR負責路由功能,包括搜索可用網絡,傳輸數據以及向ZC請求數據.ZE是網絡的終端,它負責具體的實施,表現(xiàn)為具體的應用.
(2)網絡模型:網絡的拓撲結構有星型、樹型和網狀[9].在網絡中,ZC一直處于監(jiān)聽狀態(tài),一旦發(fā)現(xiàn)有新的ZE加入網絡,ZC就對其進行編址并計算路由信息等;若發(fā)現(xiàn)ZR,則對ZR周圍的ZE信息進行更新,同時更新ZC的路由.每個Zigbee設備都有兩個地址,一個是64位的IEEE地址,該地址是設備出廠就設定的全球唯一地址;另一個是16位的網絡動態(tài)地址.兩種地址都可以用于傳輸數據.
1.2 Zigbee協(xié)議棧及操作系統(tǒng)
Zigbee協(xié)議只有規(guī)范,具體的實現(xiàn)各有不同.本文詳細介紹TI公司開發(fā)的Z-Stack 2006協(xié)議棧.協(xié)議棧軟件架構依次對堆棧、輸入輸出(IO,Input/Output)、硬件驅動、NV(Nonvolatile flash memory)系統(tǒng)、MAC、操作系統(tǒng)等進行初始化,然后初始化操作系統(tǒng),包括系統(tǒng)時鐘、堆棧、定時器、各個硬件模塊、Flash(非易失性閃存),還有對操作系統(tǒng)的初始化.在該過程中除了對操作系統(tǒng)內存、消息隊列、時鐘、能量管理和系統(tǒng)任務進行了初始化,也對系統(tǒng)任務進行了初始化.
協(xié)議棧有自己的操作系統(tǒng)[10],各個不同的功能函數的調用通過不同的事件來觸發(fā),觸發(fā)的事件交由相應的任務處理,操作系統(tǒng)只需要維護任務列表,檢測有沒有任務需要執(zhí)行即可,通過對事件的處理實現(xiàn)不同的功能.其中,Zigbee事件一共分為兩類,包括系統(tǒng)定義事件和用戶定義事件.系統(tǒng)定義事件是協(xié)議棧已定義好的,用戶類事件是用戶層面來定義的,在操作系統(tǒng)抽象層的定義中給出了系統(tǒng)事件的宏定義值,預留了0xE0~0xFF部分給用戶自定義系統(tǒng)事件的消息.事件類號采用一個16位的常量,使用獨熱碼編碼,即有一個bit為1,其他全0的一種編碼方式.采用獨熱碼可以使用簡單的位操作指令實現(xiàn)事件的提取.由于事件類號長度是16位,即事件類型只有16種,系統(tǒng)類事件使用0x8000,自定義事件類采用0x4000至0x0001的15個[11].以此,系統(tǒng)的用戶部分也可與協(xié)議棧的基本代碼相隔離,既保證了協(xié)議棧的安全性(不被用戶誤改),同時也便于用戶根據不同的需要開發(fā)自己所需要的功能.
表1 信道及其相應頻率表
2.1 信道選擇
建立網絡之前首先選擇一個空閑的信道,Zigbee在868 MHz,915 MHz和2.4 GHz 3個頻段中一共定義了27個物理信道[12],如表1所示.
Zigbee采用2.4 GHz的全球公共頻段,從2400 MHz至2483.5 MHz共16個信道,信道之間間隔為5 MHz.盡管每個信道內可以有多個網絡,也有相應的沖突避免算法來解決沖突,在選取信道時要盡可能與周圍的其他設備選在不同的信道上,默認的信道為11,為了防止有其他功能的設備忘記修改信道號,這里選擇信道12,中心頻率為2406 MHz.
為避免沖突,每個設備在信道上發(fā)送消息前需要檢測信道是否空閑.空間中時時刻刻都充雜著電磁波,但是其能量和頻率不一定能造成干擾,所以在檢測時,優(yōu)先采用能量閾值的方法,即MAC層進行能量檢測,若信號能量小于設定的大小就認為空閑;繼而再進行頻率的判斷,對不在同一頻率上的信號也認為是空閑.
表2 PANID的設置表
2.2 建立網絡
只有擔任協(xié)調器角色的節(jié)點可以建立網絡,其他節(jié)點只能加入或離開網絡.各個設備與協(xié)調器節(jié)點的關系如表2所示(PANID,Personal Area Network Identity).
如果ZC的PANID設置值小于等于0x3FFF,ZC則以設備設定的值作為網絡ID建立網絡,如果沖突則更換,直至不沖突為止.
圖2 協(xié)調器建立網絡流程圖
考慮到監(jiān)測區(qū)域不大,實驗采用星型網絡部署節(jié)點,協(xié)調器建立網絡的步驟如下:
(1)信道掃描:建立網絡時為了避免ID沖突,F(xiàn)FD需要在其個人操作空間內、指定的信道上檢測任何協(xié)調器發(fā)出的信標幀,以此來選擇一個PAN標識符;
(2)啟動:以確定的信道、PAN標識符啟動網絡;
(3)產生信標:設置MAC層PANID為PAN標識符,同時作為信標幀中源PAN標識符域的值,在每個超幀時隙開始時傳輸;
(4)設備發(fā)現(xiàn):信標幀的傳輸表明新的網絡已建成,之后才對其他設備的設備發(fā)現(xiàn)進行響應.
考慮到設備意外斷電的情況,重啟后,協(xié)調器不需要再一次建立網絡,只要恢復之前的網絡即可;終端不需要重新分配網絡地址,只要重新加入先前的網絡即可;路由也只要重新加入網絡即可,所以需要按照上一次已經配置好的情況來啟動,建網流程圖如圖2所示.
2.3 加入網絡
對于協(xié)調器形成的網絡,終端在掃描時可能檢測到多個網絡,終端只能加入其中一個網絡.因此終端只能加入信道相同的網絡,并且信號強度要盡量大.入網算法如下:
(1)ZE對指定的信道(信道12)進行網絡掃描,將掃描到的所有網絡按能量大小存儲;(2)如果當前無網絡,進入休眠;否則,加入信號最強的網絡;
(3)ZC按序為加入到網絡中的終端分配網絡地址,從0x796F依次遞增.
為了便于后續(xù)的處理,對發(fā)現(xiàn)的每一個網絡的信息,包括能量大小、PAN描述符,按照能量大小儲在一個結構體鏈表中.信號最強的網絡永遠是鏈表頭,加入網絡需要終端將自己的節(jié)點信息發(fā)送給協(xié)調器,協(xié)調器的網絡地址始終是0.
如果掃描不到網絡,則認為當前無網絡,進入睡眠模式以節(jié)約能量,等待協(xié)調器的進行設備發(fā)現(xiàn);星型網絡的協(xié)調器能連接的終端有限,所以存在因分配不到網絡地址而無法加入網絡的可能性.考慮到對于上層而言,未入網成功則認為是未發(fā)現(xiàn)網絡,所以只有在成功加入到網絡中后,設備應用層才將網絡已經發(fā)現(xiàn)的消息告知Zigbee設備對象.協(xié)議棧利用這個通知消息啟動網絡,然后進入操作系統(tǒng)對7層協(xié)議棧事件輪詢處理.終端加入網絡流程圖如圖3所示.
圖3 終端加入網絡
2.4 數據收發(fā)
Zigbee支持以資源綁定[13]的形式通信,綁定關系確定了一個設備與其他設備之間信息流的控制結構.目標地址可以通過綁定表獲取,所以綁定允許上層應用程序不用知道目標節(jié)點的地址就可以發(fā)送數據,也就是說,綁定建立了一對一或者一對多的虛擬鏈接通道.
網絡建立之后,設備之間開始通信,終端節(jié)點與協(xié)調器的通信過程為:
1)終端設備加入網絡后,向協(xié)調器發(fā)送綁定請求消息;
2)協(xié)調器處理綁定請求消息,綁定成功后向終端設備發(fā)送確認消息;
3)終端設備接收到確認消息,開始運行用戶任務.
在協(xié)調器打開允許綁定功能時,需要尋找其范圍內的所有端點,并將找到的端點的設備描述符連成一個鏈表,只有處于這個鏈表中的節(jié)點才允許與其綁定.在尋找端點時會進行一次掃描,終端也就是在接收到這次掃描信號后加入該網絡,通知上層系統(tǒng)設備已經加入到了網絡之中,上層向協(xié)調器發(fā)送綁定請求,就是將自己的短地址、簡單描述符、簇等信息以一個綁定請求的方式發(fā)送給短地址為0的設備(0作為協(xié)調器的短地址).綁定成功與否的決定權在于協(xié)調器,終端的請求用于告知協(xié)調器自己的網絡地址,只有在協(xié)調器向終端發(fā)送綁定成功消息才表明綁定完成.終端在收到這個消息之后,節(jié)點的網絡狀態(tài)改變.在Zigbee設備對象層狀態(tài)改變的時候,操作系統(tǒng)執(zhí)行用戶任務,這才是真正的終端任務.
3.1 實驗環(huán)境
實驗采用MSP430FG4618開發(fā)板,以CC2420作為通信模塊,用MSP430UIF仿真器進行程序的燒寫,開發(fā)環(huán)境采用IAR Embedded Workbench 6.4 Evaluation.作為協(xié)調器端需要短路P7.6和P7.7,按鈕S1對應端口P1.0,S2對應著P1.1.圖4為開發(fā)板和仿真器.
EXP4618實驗板上針對FG4618和F2013分別設置獨立的下載調試接口.FG4618使用標準4線JTAG連接,而F2013使用Spy-Bi-Wire兩線JTAG連接,因此在Debug的時候所有的IO端口都可用.兩個JTAG接口可以同時連接兩臺仿真器獨立調試程序.JTAG1對應FG4618,JTAG2對應F2013,所以燒寫程序只需要用JTAG1口.
圖4 開發(fā)板(左)和仿真器(右)
需要補充說明的是LED1,2,4分別對應著端口2.1、2.1、5.1,顏色為黃、紅、綠.而LED3由F2013控制,所以在用LED燈對程序進行指示的時候不要使用LED3.另外,TI的Zigbee2006協(xié)議棧使用的是3310LCD液晶驅動,與MSP430開發(fā)板上的WCG16100液晶驅動不一致,所以要對液晶模塊的驅動程序做修改.找到開發(fā)板光盤文件下的“實例源碼LCD_Test_WCG160100source”下的.h和.c文件,分別重命名為hal_lcd.h和hal_lcd.c,并替換掉文件C:Texas InstrumentsStack-1.4.3-1.2.0Componentshalinclude下的原h(huán)al_lcd.h和hal_lcd.c文件,參考開發(fā)板用戶手冊[14]的液晶部分,將液晶顯示函數的參數修改一致.
3.2 溫度與電壓監(jiān)測
需要3個節(jié)點,一個中心節(jié)點,兩個傳感節(jié)點.打開Samples文件夾下的SimpleApp工程,通信信道采用12,中心頻率為2406 MHz,PANID設置為0x1234,串口波特率為38400,無檢驗位,數據位8位,停止位1位.設定電壓的采集周期為20000 ms,溫度采集周期為5000 ms,頻率為前者的4倍.將有電壓采集功能的工程燒寫到傳感節(jié)點A中,將有溫度采集功能的工程燒寫到傳感節(jié)點B中,最后將匯聚節(jié)點工程燒寫到中心節(jié)點C中,即A——電壓傳感器,B——溫度傳感器,C——匯聚節(jié)點.
其中電壓由ADC12引腳數值來計算,ADC12寄存器所能獲取的值value只能從0~4095,用這個區(qū)間來表示電壓從0~1.5 V.這個數值只能達到電源電壓的一半,所以需要乘上系數2,實際電壓voltage的計算式為voltage=(value×2×1.5)/4095,這個數值精度只能達到個位,相對于只有0到3 V的數值來說誤差太大,所以需要保存有效數字到小數點后一位.由于浮點數的計算是保留了很多有效數字的,只是被舍棄了,方法是對ADC獲取到的value值先右移一位,取值范圍變?yōu)?~2047,然后乘以30,再右移11位.
為了達到0.1 V的精度同時盡量不造成舍入誤差,所以先右移一位再乘以30,使得value的有效數值不會溢出,再右移11位,此時value的值比實際電壓值近似擴大了10倍.為了便于發(fā)送,直接將此數值以16進制發(fā)送,在接收端再進行處理.
溫度取芯片內部的溫度值,MSP430芯片是低功耗芯片,運行時幾乎不發(fā)熱,芯片溫度幾乎與外界環(huán)境溫度一致,所以無需外界溫度傳感器,可以直接用來采集溫度,需要修改相應的偏差.芯片的溫度值由引腳的電壓轉換計算得出,根據MSP430FG4618芯片數據手冊(見表3),0°C時電壓為968 mV,系數為3.55 mV/°C.
表3 12位ADC與溫度傳感器及電壓關系表
因此0°C時的電壓數值為0.986/1.5×4095,取整為2692,系數值Coefficient為9.69/°C.對大于99°C的記為99°C,對小于0°C的記為0°C.數據傳輸示意圖見圖5.
圖5 數據傳輸示意圖
數據信息用一個一維數組即可,第一位用來存儲信息類型是溫度還是電壓,第二位用來存數數值.因為綁定已經建立起端點間的關聯(lián),所以每個任務在完成信息采集之后直接交給CC2420無線通訊模塊發(fā)送給匯聚節(jié)點,而不用再交給OSAL去調度處理發(fā)送信息,避免了冗余的操作,提高了系統(tǒng)的執(zhí)行效率.
3.3 實驗結果與分析
實驗設計一個中心節(jié)點,兩個采集節(jié)點分別采集溫度電壓.圖6是匯聚節(jié)點收到傳感節(jié)點發(fā)來的數據的顯示圖,其中Dev是設備網絡地址,Tmp表示溫度,Bat表示電壓.
圖6(a)是協(xié)調器剛建立網絡時的情形,此時還沒有設備加入網絡,所以在液晶上只顯示此設備類型為協(xié)調器以及網絡的ID號.在A節(jié)點加入網絡后與ZC進行綁定,MatchDesc Req表示終端符合綁定條件,綁定關系已經建立,Rsp Sent表示ZC已經回復綁定確認消息.A節(jié)點在收到該消息之后發(fā)送電壓信息,ZC在接收到數據之后將處理后的結果顯示在LCD上,如圖6(b)所示.B節(jié)點后加入網絡,所以其短地址依次加1為0x7970.
圖6 匯聚節(jié)點收到數據顯示圖
圖7 串口轉PC機顯示數據圖
圖8 匯聚節(jié)點處理數據代碼
用RS232串口線將匯聚節(jié)點與PC機相連,可把其接收到的數據發(fā)送給上位機,如圖7所示,每隔4次溫度數據出現(xiàn)依次電壓數據,也驗證了4:1的數據采集頻率.圖示溫度值越來越小是因為先用手觸摸了B節(jié)點芯片,溫度升高后開始降低導致.在串口工具上顯示數據需要先將數據寫到串口中去,如圖8所示的最后一行,圖8給出了匯聚節(jié)點處理數據的代碼.
在液晶顯示數據時出現(xiàn)了圖6(c)所示的亂碼情況,排查原因發(fā)現(xiàn)是為了確保串口分行顯示而添加的字符串結束符和換行符無法在液晶上顯示而導致的,處理方法是先進行LCD顯示再添加字符串結束標記寫到串口中去.
本文通過分析Zigbee協(xié)議棧的工作流程,逐步說明協(xié)調器建立網絡的流程以及終端設備與協(xié)調器之間的設備發(fā)現(xiàn)和入網過程,完成數據收發(fā)工作,實現(xiàn)了用戶遠程對目標區(qū)域的溫度監(jiān)測和傳感器節(jié)點的能量監(jiān)測.由Zigbee的部署簡單、成本低、能耗低等特點可見Zigbee在無線傳感器網絡方面應用前景廣泛,以及在物聯(lián)網發(fā)展進程中的重要性.
[1]MARTONOSI M.Embedded systems in the wild:ZebraNet software,hardware,and deployment experiences[C].New York:ACM SIGPLAN/SIGBED,NY,US:ACM New York,2006:1.
[2]MARTINEZ K,ONG R,HART J.Glacsweb:a sensor network for hostile environment[J].IEEE:Sensor and Ad Hoc Communications and Networks,2004(10):81-87.
[3]趙仕俊,唐懿芳.無線傳感器網絡[M].北京:科學出版社,2013:5.
[4]康健,左憲章,唐力偉,等.無線傳感器網絡數據融合技術[J].計算機科學,2010,37(4):31-35.
[5]熊茂華,熊昕.無線傳感器網絡技術及應用[M].西安:西安電子科技大學出版社,2014.
[6]無線龍.ZigBee無線網絡原理[M].北京:冶金工業(yè)出版社,2011:9.
[7]杜軍朝,劉惠,劉傳益,等.Zigbee技術原理與實戰(zhàn)[M].北京:機械工業(yè)出版社,2014,11.
[8]金純.Zigbee技術基礎及案例分析[M].北京:國防工業(yè)出版社,2008.
[9]賀志楠,宋旭文,沈冬冬.Zigbee家庭組網技術研究與實現(xiàn)[J].電子科技,2014,27(8):36-39.
[10]Texas Instruments.Z-Stack Developer’s Guide[M].California USA:Texas Instruments,2012.
[11]Texas Instruments.OSAL API[M].California USA:Texas Instruments,2012.
[12]李明亮,蒙洋,康輝英.例說Zigbee[M].北京:北京航空航天大學出版社,2013:7.
[13]Zigbee Alliance.Zigbee Specification[S].802.15.4,2005.
[14]Texas Instruments.HAL Driver API[M].California USA:Texas Instruments,2012.
WSN Construction and Implementation
SUN Qi,WANG Xiaonan
(School of Computer Science and Engineering,Changshu Institute of Technology,Changshu 215500,China)
Based on the characteristics of wireless sensor network,the network construction algorithm is implemented in this paper.The starting sequence,the operation process and the scheduling algorithm in the embedded operating system are analyzed in the paper.Besides,some vital issues are discussed based on the analysis of the data transmission experiment.The data show that WSN has some advantages and a broad application prospect.
wireless sensor network;construction;embedded operating system
TP393.1
A
1008-2794(2017)02-0061-13
2016-06-06
王曉喃,教授,博士,研究方向:計算機網絡與應用,E-mail:wxn_2001@163.com.