劉嘉宇,高德云
(北京交通大學(xué)電子信息工程學(xué)院,北京 100044)
無(wú)線傳感器網(wǎng)絡(luò)[1-2](Wireless Sensor Network,WSN)是一種由大量分布于特定區(qū)域的節(jié)點(diǎn)構(gòu)成的分布式系統(tǒng),節(jié)點(diǎn)通過(guò)協(xié)作的方式對(duì)其所在區(qū)域環(huán)境進(jìn)行監(jiān)測(cè)或控制。由于其可廣泛應(yīng)用于環(huán)境監(jiān)測(cè)與控制、動(dòng)物監(jiān)控、健康監(jiān)護(hù)、倉(cāng)庫(kù)管理等場(chǎng)合[3-6],已經(jīng)成為物聯(lián)網(wǎng)的一個(gè)重要組成部分。無(wú)線傳感器節(jié)點(diǎn)體積受限,使其攜帶的能量受到極大的限制,又由于節(jié)點(diǎn)通常部署于難以接近的場(chǎng)所,無(wú)法頻繁地更換電池,因此在無(wú)線傳感器網(wǎng)絡(luò)設(shè)計(jì)中,必須要其節(jié)點(diǎn)具有低功耗的特性,網(wǎng)絡(luò)設(shè)計(jì)也必須首先考慮能量因素[7-9]。
傳統(tǒng)的無(wú)線傳感器節(jié)點(diǎn)軟件通常采用前后臺(tái)的軟件設(shè)計(jì)思想,系統(tǒng)在后臺(tái)循環(huán)中處理任務(wù),通過(guò)中斷(前臺(tái))來(lái)響應(yīng)外部事件。這樣的設(shè)計(jì)較容易實(shí)現(xiàn),但缺乏模塊化,使得移植較為困難,且不易新增加功能,任務(wù)間沒(méi)有有效的通信機(jī)制。Contiki OS[10-12]是一種適用于資源受限環(huán)境下的無(wú)線傳感器網(wǎng)絡(luò)操作系統(tǒng),它使得無(wú)線傳感器節(jié)點(diǎn)軟件設(shè)計(jì)擺脫了傳統(tǒng)的前后臺(tái)設(shè)計(jì)思想,通過(guò)操作系統(tǒng)實(shí)現(xiàn)多任務(wù)管理與調(diào)度,資源分配與進(jìn)程間通信。
合理的硬件設(shè)計(jì)是系統(tǒng)高效穩(wěn)定工作的基礎(chǔ),本文實(shí)現(xiàn)的節(jié)點(diǎn)由微處理器模塊、IEEE802.15.4 射頻模塊、傳感器模塊、配置存儲(chǔ)器模塊與能量供應(yīng)及評(píng)估模塊構(gòu)成。節(jié)點(diǎn)的硬件結(jié)構(gòu)框圖如圖1 所示。
圖1 節(jié)點(diǎn)硬件結(jié)構(gòu)框圖
微處理器是整個(gè)節(jié)點(diǎn)的核心。微處理器利用其計(jì)算能力進(jìn)行無(wú)線網(wǎng)絡(luò)的組網(wǎng),計(jì)算路由信息;利用其存儲(chǔ)能力進(jìn)行程序及數(shù)據(jù)的存儲(chǔ),暫存其他節(jié)點(diǎn)發(fā)來(lái)的數(shù)據(jù)包用以轉(zhuǎn)發(fā);利用其各類總線接口與各類其他模塊進(jìn)行互聯(lián),控制其他模塊的工作。
本文以低功耗為重點(diǎn),兼顧處理能力,存儲(chǔ)容量及總線接口情況,選用TI 公司的16 位微功耗處理器MSP430F5438A[13]。該處理器擁有16 bit 位寬,最大運(yùn)行頻率為25 MHz,具有256 kB Flash 與16 kB RAM 及豐富的總線接口;在活動(dòng)模式下,每MHz 功耗僅為230 uA。此外,該款微處理器支持多種LPM(Low Power Mode,低功耗模式),可進(jìn)一步降低系統(tǒng)功耗。
IEEE802.15.4 射頻模塊用于處理微處理器模塊傳來(lái)指令集數(shù)據(jù),將物理層載荷經(jīng)調(diào)制后以電磁波的形式發(fā)送至空間,同時(shí)接收其他節(jié)點(diǎn)發(fā)送來(lái)的無(wú)線數(shù)據(jù)包,經(jīng)解調(diào)還原為物理層載荷供微處理器模塊處理。常見(jiàn)的射頻通信芯片總結(jié)見(jiàn)表1。
表1 常用射頻芯片對(duì)比表
由表1,本文IEEE802.15.4 無(wú)線通信模塊采用Atmel 公司的AT86RF231[14]芯片。它除了具有巨大的功耗優(yōu)勢(shì)之外,還支持IEEE802.15.4MAC 層加速功能,可自動(dòng)進(jìn)行MAC 確認(rèn)幀發(fā)送,CSMA/CA 及幀重傳,自動(dòng)進(jìn)行地址匹配及FCS(Frame Check Sequence,幀校驗(yàn)序列)計(jì)算。它具備128 bit 硬件AES加密的計(jì)算能力,可提高網(wǎng)絡(luò)安全性。
AT86RF231 可以直接使用集成Balun(Balance-Unbalance Converter,雙向式平衡至非平衡轉(zhuǎn)換器)2450FB15L0001 進(jìn)行信號(hào)匹配,不需要設(shè)計(jì)分立元件組成Balun。2450FB15L0001 可將AR86RF231 射頻前端的100 Ω 差分阻抗轉(zhuǎn)換為天線系統(tǒng)所需要的50 Ω 單端特征阻抗。AR86RF231 使用4 線SPI 的方式與微處理器模塊進(jìn)行通信,此外還需要占用主機(jī)2 個(gè)GPIO 對(duì)其進(jìn)行狀態(tài)/休眠控制,一個(gè)外部中斷引腳進(jìn)行中斷請(qǐng)求。
本文選擇高精度數(shù)字溫濕度傳感器SHT21[15]與數(shù)字光強(qiáng)傳感器TSL2561[16]進(jìn)行環(huán)境數(shù)據(jù)采集。SHT21 是一款集成的數(shù)字溫濕度計(jì),其分辨率可通過(guò)命令編程進(jìn)行改變??膳渲幂敵鲂r?yàn)和,保證數(shù)據(jù)完成性,傳感器自帶有I2C 接口,在測(cè)量狀態(tài)僅需要消耗300 uA 的電流,非常適合在能量受限的無(wú)線傳感器節(jié)點(diǎn)上使用。光強(qiáng)傳感器TSL2561 也是一款數(shù)字傳感器,通過(guò)I2C 接口與微處理器相連接。傳感器具有2 個(gè)寬帶光敏二極管,分別對(duì)應(yīng)可見(jiàn)光與紅外光,通過(guò)一定的公式可將2 個(gè)通道的數(shù)字輸出轉(zhuǎn)換為當(dāng)前的光強(qiáng)值。
I2C 總線簡(jiǎn)化了傳感器與微處理器模塊的連接。SHT21 及TSL2561 分別占用了微處理器的USCI 的B0/B1 接口模塊。由于I2C 總線具有開(kāi)漏特性,需要在總線的引腳上加上拉電阻使得其能輸出高電平。
本文的無(wú)線傳感器節(jié)點(diǎn)采用鋰聚合物電池供電,與其他電池相比,其能量大,且3.7 V 的放電平臺(tái)高,配合低壓差穩(wěn)壓電路,在其整個(gè)放電區(qū)間內(nèi)幾乎都能為節(jié)點(diǎn)供電,效率高。受節(jié)點(diǎn)體積限制,使用電池容量為1500 mAh。本文采用Linear Technology 公司的LT1761-3.0 作為低壓差穩(wěn)壓器(LDO),其靜態(tài)電流極低,僅20 uA,能在節(jié)點(diǎn)自供電的情況下節(jié)約寶貴的能量。
鋰離子電池的充電方式為CC-CV,即恒流-恒壓方式。本文采用南京拓微集成公司的TP4056 對(duì)節(jié)點(diǎn)電池進(jìn)行充電。由于USB2.0 接口能提供的最大電流為500 mA,為了保護(hù)接口,將其恒流階段電流設(shè)置為400 mA,TP4056 Pin2 的編程電阻RProg=3 kΩ。
圖2 DS2762 模塊電路原理圖
為了進(jìn)行精確的能量管理,準(zhǔn)確知道節(jié)點(diǎn)消耗的電流,本文使用獨(dú)立的電池監(jiān)測(cè)芯片DS2762。在對(duì)節(jié)點(diǎn)能量進(jìn)行監(jiān)測(cè)的同時(shí),也能提供鋰電池過(guò)充、過(guò)放保護(hù),提高安全性。DS2762[17]模塊電路原理圖如圖2 所示。
DS2762 的SNS 引腳與VSS 引腳在芯片內(nèi)部串聯(lián)有一個(gè)25 mΩ 的檢流電阻,通過(guò)電阻兩端的電壓采樣,可知流入或流出電池的電流大小。電流值對(duì)時(shí)間積分可得電池的充電或放電容量。其1,3 引腳分別控制一個(gè)低開(kāi)啟電壓低導(dǎo)通電阻的PMOS 管,當(dāng)發(fā)生過(guò)壓、過(guò)流等危險(xiǎn)情況時(shí),相應(yīng)引腳輸出高電平,MOS 管關(guān)斷,將電池從電路中斷開(kāi),有效保護(hù)電池。圖3 為整個(gè)節(jié)點(diǎn)的實(shí)物圖。
圖3 低功耗無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)實(shí)物圖
本文無(wú)線傳感器節(jié)點(diǎn)運(yùn)行Contiki 操作系統(tǒng)。Contiki 是一個(gè)小型的非搶占非實(shí)時(shí)開(kāi)源操作系統(tǒng),任務(wù)(進(jìn)程)間采用共享堆棧的方式,上下文切換時(shí)采用2 字節(jié)來(lái)保存現(xiàn)場(chǎng),充分節(jié)約系統(tǒng)資源。模塊化的設(shè)計(jì)使其易于裁剪與移植,系統(tǒng)支持uIP 及Rime協(xié)議棧,方便進(jìn)行網(wǎng)絡(luò)互聯(lián)。這些特點(diǎn)使其非常適用于無(wú)線傳感器網(wǎng)絡(luò)。
Contiki OS 代碼完全由C 語(yǔ)言編寫,這種設(shè)計(jì)降低了其移植難度。本文采用IAR Embedded Workbench for MSP430 v5.4.03 作為軟件集成開(kāi)發(fā)環(huán)境。
不同硬件配置在Contiki OS 中反映為不同的Platform(平臺(tái)),Platform 下的代碼與節(jié)點(diǎn)使用的硬件緊密相關(guān)。本文為第一節(jié)介紹的傳感器節(jié)點(diǎn)硬件在Contiki OS 新添加一個(gè)Platform,稱為MSN(Mobile Sensor Node)。
節(jié)點(diǎn)時(shí)鐘源采用MSP430F5438A 內(nèi)部的REFO,它是一個(gè)經(jīng)過(guò)校準(zhǔn)的RC 振蕩器。REFO 直接作為MSP430 的ACLK(Auxiliary Clock,輔助時(shí)鐘);同時(shí)REFO 還經(jīng)過(guò)FLL 倍頻之后由DCO 輸出作為MCLK(Master Clock,主時(shí)鐘),DCO 時(shí)鐘輸出分頻之后作為SMCLK(Sub-Main Clock,子系統(tǒng)時(shí)鐘)。MCLK 時(shí)鐘頻率約為4 MHz,SMCLK 時(shí)鐘頻率約為2 MHz,ACLK時(shí)鐘頻率為32.768 kHz。
在此之后初始化UART(通用異步收發(fā)傳輸器)模塊與能量評(píng)估模塊。UART 模塊用于顯示調(diào)試信息與進(jìn)行節(jié)點(diǎn)的配置。能量評(píng)估模塊用于測(cè)量無(wú)線傳感器節(jié)點(diǎn)剩余能量,為上層路由協(xié)議運(yùn)行提供相關(guān)信息。隨后判斷外置配置存儲(chǔ)器配置引腳的電平,以決定進(jìn)入節(jié)點(diǎn)配置寫入模式或讀取模式。正常狀態(tài)下,節(jié)點(diǎn)從配置存儲(chǔ)器中讀取自身配置信息,并加載至Contiki 操作系統(tǒng)。隨后進(jìn)行IEEE802.15.4 射頻模塊初始化,IEEE802.15.4 MAC 層初始化與網(wǎng)絡(luò)層的初始化。
隨后初始化系統(tǒng)的定時(shí)器,Contiki 操作系統(tǒng)使用etimer 事件定時(shí)器來(lái)產(chǎn)生系統(tǒng)節(jié)拍,驅(qū)動(dòng)操作系統(tǒng)的運(yùn)行。MSN 平臺(tái)上,系統(tǒng)時(shí)鐘節(jié)拍的頻率為128 Hz,即每秒鐘產(chǎn)生128 次時(shí)鐘中斷。etimer 利用MSP430F5438A 的Timer B0 實(shí)現(xiàn),使用ACLK 時(shí)鐘源經(jīng)分頻得到。此后,啟動(dòng)TCP/IP 進(jìn)程,用于處理TCP/IP 數(shù)據(jù)包的發(fā)送與接收,隨后啟動(dòng)其他自啟動(dòng)進(jìn)程鏈表中包含的進(jìn)程,包含傳感器數(shù)據(jù)采集進(jìn)程,網(wǎng)絡(luò)協(xié)議進(jìn)程等。完成以上的操作之后,操作系統(tǒng)啟動(dòng)完成,進(jìn)入實(shí)際的任務(wù)處理過(guò)程,Contiki 操作系統(tǒng)依次檢查進(jìn)程是否需要處理,是否有定時(shí)器到期,并根據(jù)其調(diào)度算法選擇一個(gè)進(jìn)程進(jìn)行執(zhí)行。Contiki OS運(yùn)行流程圖如圖4 所示。
圖4 Contiki OS 運(yùn)行流程圖
Contiki OS 使用輕量級(jí)的Protothreads 模型進(jìn)程編程。本文編寫程序,采集傳感器信息,發(fā)送至網(wǎng)關(guān),程序流程圖如圖5 所示。
圖5 傳感器信息采集發(fā)送流程圖
程序首先聲明sensor_process,并將其加入自動(dòng)啟動(dòng)進(jìn)程列表。之后初始化SHT21 溫濕度傳感器及TSL2561 數(shù)字光強(qiáng)傳感器。設(shè)定一個(gè)etimer,用于傳感器事件的定時(shí)。本文中定時(shí)間隔設(shè)置為30 s。等待etimer 到期使用系統(tǒng)宏P(guān)ROCESS_WAIT_EVENT(),調(diào)用該宏導(dǎo)致本進(jìn)程掛起,系統(tǒng)進(jìn)行任務(wù)調(diào)度,并等待定時(shí)器超時(shí)。待定時(shí)器到期事件PROCESS_EVENT_TIMER 發(fā)生,讀取傳感器輸出信息,包括溫度、濕度及2 個(gè)通道的光強(qiáng)信息,之后調(diào)用協(xié)議棧數(shù)據(jù)發(fā)送函數(shù)collect_common_send(),向網(wǎng)關(guān)通過(guò)UDP 數(shù)據(jù)包發(fā)送傳感器信息,UDP 數(shù)據(jù)包的載荷格式如圖6 所示。發(fā)送完成后,重新設(shè)定etimer,程序循環(huán)。
圖6 節(jié)點(diǎn)發(fā)送UDP 數(shù)據(jù)包載荷格式
采集到的溫濕度及光強(qiáng)數(shù)據(jù)通過(guò)UDP 數(shù)據(jù)報(bào)發(fā)送,溫度,濕度及2 個(gè)通道的光強(qiáng)數(shù)據(jù)均為16 bit,按照大端順序組包發(fā)送。序列號(hào)占用8 bit,節(jié)點(diǎn)類型、簇首編號(hào)、簇成員編號(hào)與節(jié)點(diǎn)組網(wǎng)時(shí)進(jìn)行的分簇有關(guān),各占用8 bit,整個(gè)UDP 數(shù)據(jù)包載荷為12 Byte。
搭建測(cè)試平臺(tái)對(duì)本文節(jié)點(diǎn)進(jìn)行測(cè)試,實(shí)驗(yàn)中,將約80 個(gè)節(jié)點(diǎn)密集地部署于建筑內(nèi),節(jié)點(diǎn)采集建筑物內(nèi)溫濕度光強(qiáng)信息,節(jié)點(diǎn)間采用IEEE802.15.4 協(xié)議進(jìn)行通信,將采集得到的數(shù)據(jù)發(fā)送至Sink(匯聚)節(jié)點(diǎn),Sink 與高性能節(jié)點(diǎn)通過(guò)USB 接口以SLIP 協(xié)議通信,高性能節(jié)點(diǎn)間使用IEEE802.11 協(xié)議進(jìn)行通信。高性能節(jié)點(diǎn)最終將數(shù)據(jù)匯聚至網(wǎng)關(guān),網(wǎng)關(guān)經(jīng)以太網(wǎng)將數(shù)據(jù)傳遞至服務(wù)器進(jìn)行存儲(chǔ)并顯示。測(cè)試使用的網(wǎng)絡(luò)拓?fù)淙鐖D7 所示。
圖7 多點(diǎn)環(huán)境監(jiān)控測(cè)試網(wǎng)絡(luò)拓?fù)鋱D
使用IEEE802.15.4 數(shù)據(jù)包嗅探器捕獲節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包,并使用Wireshark 軟件進(jìn)行分析,一個(gè)典型的數(shù)據(jù)包如圖8 所示。
圖8 Wireshark 捕獲到數(shù)據(jù)包圖
這是一個(gè)UDP 數(shù)據(jù)包,發(fā)送的12 Byte 數(shù)據(jù)格式如圖8 所示,包含節(jié)點(diǎn)類型、序列號(hào)及傳感器信息等。數(shù)據(jù)由節(jié)點(diǎn)3ffe:3240:8007:d708:4613::發(fā)送至3ffe:3240:8007:d708:4600::,適配層采用6LoWPAN[18]協(xié)議,數(shù)據(jù)鏈路層采用IEEE802.15.4協(xié)議。
本文還對(duì)節(jié)點(diǎn)功耗進(jìn)行測(cè)試。在節(jié)點(diǎn)設(shè)計(jì)中,處理器(CPU)模塊及IEEE802.15.4 射頻模塊設(shè)計(jì)了單獨(dú)的跳線。將跳線替換為小阻值的檢流電阻,可使用萬(wàn)用表對(duì)電流進(jìn)行測(cè)量。實(shí)驗(yàn)中,微處理器頻率為4 MHz,射頻發(fā)送功率為0 dBm,接收靈敏度設(shè)置為最大高-101 dBm,使用檢流電阻阻值為2.2 Ω,測(cè)試儀器為勝利萬(wàn)用表VC86D。測(cè)試結(jié)果如表2 所示。
表2 不同狀態(tài)下節(jié)點(diǎn)功耗(單位:mA)
本文設(shè)計(jì)并實(shí)現(xiàn)了一款采用MSP430 系列單片機(jī)與AT86RF231 射頻芯片的低功耗無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)。詳細(xì)描述節(jié)點(diǎn)各模塊的選型及設(shè)計(jì),并設(shè)計(jì)軟件平臺(tái),在節(jié)點(diǎn)上實(shí)現(xiàn)Contiki OS 的運(yùn)行與環(huán)境信息采集發(fā)送。通過(guò)搭建實(shí)驗(yàn)環(huán)境,進(jìn)行多點(diǎn)環(huán)境信息采集實(shí)驗(yàn)與節(jié)點(diǎn)功耗測(cè)試,證明節(jié)點(diǎn)能按照預(yù)期組網(wǎng)完成溫濕度光強(qiáng)監(jiān)測(cè)功能,同時(shí)具備低功耗特性,具有較強(qiáng)的實(shí)用性。
[1]孫利民,李建中,陳渝,等.無(wú)線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2005:5-10.
[2]Akyildiz I F,Su W,Sankarasubramanian Y,et al.Wireless sensor networks:A survey[J].Computer Networks,2002,38:393-422.
[3]Torfs T,Sterken T,Brebels S,et al.Low power wireless sensor network for building monitoring[J].IEEE Sensors Journal,2013,13(3):909-915.
[4]Bellavista P,Cardone G,Corradi A,et al.Convergence of MANET and WSN in IOT urban scenarios[J].IEEE Sensors Journal,2013,13(10):3558-3567.
[5]Cao Xianghui,Xiao Yang,Sun Youxian.Building-environment control with wireless sensor and actuator networks:Centralized versus distributed[J].IEEE Transactions on Industrial Electronics,2010,57(11):3596-3605.
[6]翟海翔,陳敏克,焦彩菊,等.基于Zigbee 技術(shù)的溫室多參數(shù)采集節(jié)點(diǎn)設(shè)計(jì)[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2014(9):45-48.
[7]Hempstead M,Lyons M J,Brooks D,et al.Survey of hardware systems for wireless sensor networks[J].Journal of Low Power Electronics,2008,4:11-20.
[8]Somov A,Baranov A,Spirjakin D,et al.Circuit design and power consumption analysis of wireless gas sensor nodes:One-sensor versus two-sensor approach[J].IEEESensors Journal,2014,14(6):2056-2063.
[9]李小敏,臧英,羅錫文,等.基于發(fā)射功率自適應(yīng)的稻田無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)[J].農(nóng)業(yè)工程學(xué)報(bào),2014,30(7):140-146.
[10]Dunkels A,Gronvall B,Voigt T.Contiki-a lightweight and flexible operating system for tiny networked sensors[C]//Proceedings of the 29th Annual IEEE International Conference on Local Computer Networks.2004:455-462.
[11]Oikonomou G,Phillips I.Experiences from porting the Contiki operating system to a popular hardware platform[C]// Proceedings of the 2011 International Conference on Distributed Computing in Sensor Systems and Workshops.2011:1-6.
[12]張巖.基于Contiki 系統(tǒng)的物聯(lián)網(wǎng)應(yīng)用平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2013.
[13]Texas Instruments.MSP430F543xA,MSP430F541xA Mixed Signal Microcontroller[EB/OL].http://www.ti.com/lit/ds/symlink/msp430f5438a.pdf,2014-11-01.
[14]Atmel Corporation.AT86RF231/ZU/ZF Datasheet[EB/OL].http://www.atmel.com/images/doc8111.pdf,2014-11-01.
[15]Sensirion.Datasheet SHT21[EB/OL].http://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/Humidity/Sensirion_Humidity_SHT21_Datasheet_V4.pdf,2014-11-01.
[16]TAOS.TSL2561,TSL2561 Light-to-Digial Convert[EB/OL].http://www.taosinc.com/getfile.aspx?type=press&file=tsl2560-e58.pdf,2014-11-01.
[17]Maxim.DS2762 High-Precision Li+Battery Monitor With Alerts [EB/OL].http://datasheets.maximintegrated.com/en/ds/DS2762.pdf,2014-11-01.
[18]朱曉榮,李鳳國(guó).基于Contiki 的6LoWPAN 適配層的研究與實(shí)現(xiàn)[J].信息通信技術(shù),2013(3):66-70.