潘琢金,劉繼磊,羅 振,楊 華
(沈陽航空航天大學(xué) 計算機學(xué)院,遼寧 沈陽110136)
無線傳感器網(wǎng)絡(luò)是由長期部署在監(jiān)測區(qū)域內(nèi)的無線傳感器節(jié)點互相通信形成的多跳自組織系統(tǒng)[1]。由于無線傳感器網(wǎng)絡(luò)的能量受限,所以降低系統(tǒng)的能耗成為無線傳感器網(wǎng)絡(luò)研究的重點。目前,對降低無線傳感器網(wǎng)絡(luò)能耗的研究主要集中在拓撲控制策略和能量有效路由控制等網(wǎng)絡(luò)協(xié)議方面。然而無線傳感器節(jié)點是整個系統(tǒng)的基礎(chǔ)[2],如果能夠降低單個節(jié)點自身的能耗,那么整個網(wǎng)絡(luò)的能耗也會隨之降低[3]。針對上述問題,分析了現(xiàn)有一些典型節(jié)點的優(yōu)缺點;提出并設(shè)計實現(xiàn)了以EFM32TG842 和CC2520為核心的節(jié)點,完成了Contiki操作系統(tǒng)在節(jié)點的移植,并設(shè)計實現(xiàn)了低功耗應(yīng)用進程。
無線傳感器網(wǎng)絡(luò)節(jié)點的結(jié)構(gòu)通常有4部分組成:處理器模塊、射頻模塊、傳感器模塊和能量供應(yīng)模塊[4]。無線傳感器網(wǎng)絡(luò)節(jié)點結(jié)構(gòu)如圖1所示。

圖1 無線傳感器網(wǎng)絡(luò)節(jié)點結(jié)構(gòu)
目前,無線傳感器網(wǎng)絡(luò)節(jié)點的設(shè)計方案主要有兩類,一類采用獨立MCU 和獨立RF芯片的節(jié)點設(shè)計方案,例如Crossbow 的Micaz節(jié)點。另一類采用集成了RF 收發(fā)器的MCU 系統(tǒng)級芯片 (SoC)的節(jié)點設(shè)計方案,例如TI公司的CC2530節(jié)點。
第一類節(jié)點可以靈活地嵌入Zigbee等協(xié)議棧、TinyOS或Contiki等無線傳感器網(wǎng)絡(luò)操作系統(tǒng),有豐富的外設(shè)接口可以擴展,但是體積相對較大。第二類節(jié)點有效地縮小了節(jié)點的體積,但沒有在體系結(jié)構(gòu)上進行優(yōu)化,只是將處理器和射頻芯片簡單整合,并沒有顯著地降低能耗,且不易于擴展[5]。
無線傳感器網(wǎng)絡(luò)中節(jié)點需要進行頻繁的數(shù)據(jù)處理和收發(fā),處理器模塊和射頻模塊消耗了節(jié)點的絕大部分能量,所以本文針對這兩個模塊進行選型和低功耗設(shè)計。處理器選用高性能、低功耗的EFM32TG842,RF 芯片選用低功耗的CC2520,兩者通過串行外設(shè)接口 (SPI)進行通信。
處理器模塊是無線傳感器網(wǎng)絡(luò)節(jié)點的核心,主要完成數(shù)據(jù)處理、能耗管理以及運行協(xié)議棧等,因此,處理器除具有較強的數(shù)據(jù)處理能力外,必須滿足低功耗的特點。
目前應(yīng)用于傳感器節(jié)點的MCU 主要有MSP430 系列單片機、AVR 系列的單片機以及51 內(nèi)核的單片機。本文采用Silicon Labs 公 司 的EFM32TG842 作 為 節(jié) 點MCU。EFM32系列被公認為目前全球最節(jié)能的MCU,不僅比8位、16位的MCU 的處理效率要高,而且具備更低的功耗。表1從工作電流、工作電壓、睡眠電流以及字長這4個方面對EFM32TG842和MSP430、ATmega128L進行了比較。

表1 EFM32TG842與MSP430、ATmega128比較
通過對比,不難發(fā)現(xiàn)EFM32TG842相對于其它MCU有更低的工作功耗和睡眠功耗。此外,EFM32TG842的外設(shè)反射系統(tǒng) (RPS)允許不同外設(shè)之間可直接進行通信而無需CPU 的參與,這非常有利于節(jié)點對信息的快速采集和傳輸。EFM32TG842有一個可在深度睡眠模式下工作的低功耗感應(yīng)接口 (LESENSE),在無需CPU 介入的情況下可控制16路外部模擬傳感器,能夠非常方便地采集外部環(huán)境的多樣信息并且有利于節(jié)點的擴展。因此選擇EFM32TG842單片機作為節(jié)點的處理器模塊。
射頻模塊負責(zé)節(jié)點的數(shù)據(jù)發(fā)送和接收,該模塊決定了節(jié)點的工作頻率、靈敏度、抗干擾能力等。目前傳感器節(jié)點普遍采用的射頻模塊芯片主要有Chipcon公司的CC2520和Nordic公司的NRF24L01。表2從發(fā)射功率、接收靈敏度、抗干擾能力、工作頻帶以及是否符合IEEE802.15.4協(xié)議,對CC2520與NRF24L01進行了比較。CC2520不僅在接收靈敏度、抗干擾能力以及工作頻帶寬度方面優(yōu)于NRF24L01,而 且 其 MAC 層 和 PHY 層 協(xié) 議 符 合IEEE802.15.4協(xié)議規(guī)范[6],更有利于進行快速規(guī)范化開發(fā)。綜合考慮后,本節(jié)點選擇Chipcon公司的CC2520。

表2 CC2520與NRF24L01比較
節(jié)點除了處理器模塊和射頻模塊以外,還需要存儲器模塊以臨時存儲節(jié)點需要轉(zhuǎn)發(fā)的數(shù)據(jù),USB 轉(zhuǎn)串口模塊實現(xiàn)節(jié)點與終端處理器的通信。
在大規(guī)模多跳網(wǎng)絡(luò)中無線傳感器網(wǎng)絡(luò)節(jié)點可能會作為中轉(zhuǎn)節(jié)點對數(shù)據(jù)進行轉(zhuǎn)發(fā),節(jié)點需要對轉(zhuǎn)發(fā)的數(shù)據(jù)做臨時存儲[7]。處理器模塊自身雖然有一定的存儲空間,但是這些存儲空間主要用來運行節(jié)點的操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議棧,因此節(jié)點需要外擴存儲器用來臨時存數(shù)數(shù)據(jù)。本節(jié)點的外擴存儲器采用W25X16 系列Flash存儲器,該存儲芯片具有8192個可編程頁,每頁256 字節(jié),并且體積小、引腳少、功耗低的特點,能夠滿足節(jié)點轉(zhuǎn)發(fā)數(shù)據(jù)的臨時存儲,和低功耗需求。
節(jié)點作為匯聚節(jié)點或者網(wǎng)關(guān)節(jié)點時,可能需要與終端處理器進行通信,因此需要一個與終端處理器通信的接口[8]。一般的終端處理器是PC,PC最常見的通信接口就是USB,而節(jié)點的處理器模塊一般采用串口進行通信,本節(jié)點單獨設(shè)計一個USB轉(zhuǎn)串口模塊,實現(xiàn)節(jié)點與PC進行通信。
該模塊采用CP2012作為控制器,CP2012是一個高度集成的USB轉(zhuǎn)串口控制器,其工作原理是通過驅(qū)動程序?qū)SB口虛擬成COM 口已達到擴展的目的。CP2012的優(yōu)勢在于價格相對較低、外圍電路相對簡單、穩(wěn)定性強。本節(jié)點在 設(shè)計時將CP2102 的3.3 V 和USB 的5 V 電 源 接 出,當節(jié)點需要在戶外與PC 通信,而沒有額外電源的情況下,完全可以使用該接口對節(jié)點直接供電。
無線傳感器網(wǎng)絡(luò)節(jié)點的硬件設(shè)計決定了節(jié)點可擴展的IO 口數(shù)量、數(shù)據(jù)處理能力、通信頻率等基本要素,但是作為一個嵌入式系統(tǒng)需要有良好的軟件系統(tǒng)來管理協(xié)調(diào)這些硬件資源,從而使節(jié)點的性能達到最優(yōu),并且軟件系統(tǒng)要兼顧網(wǎng)絡(luò)通信功能。節(jié)點軟件系統(tǒng)的主要作用是,對節(jié)點的資源和網(wǎng)絡(luò)協(xié)議棧進行有效的管理,在滿足節(jié)點正常工作的前提下,使節(jié)點的能量消耗得到進一步優(yōu)化。因此,除了硬件本身的功耗,決定節(jié)點能耗和性能的還有運行在硬件上的軟件系統(tǒng)[9]。
無線傳感器網(wǎng)絡(luò)操作系統(tǒng)負責(zé)節(jié)點的資源管理和任務(wù)調(diào)度,甚至可以實現(xiàn)網(wǎng)絡(luò)協(xié)議棧。目前主流無線傳感器網(wǎng)絡(luò)操作系統(tǒng)有兩種:Contiki和TinyOS。TinyOS使用專用的NesC語言進行開發(fā),需要專用的編譯器,而Contiki使用標準C 語言和通用的C 語言編譯器,簡單且易于移植。Contiki主要包括一個多任務(wù)內(nèi)核、程序集、以及實現(xiàn)6LoWPAN 適配層的TCP/IP堆棧[10]。
無線傳感器網(wǎng)絡(luò)協(xié)議棧將孤立的節(jié)點互聯(lián)成一個系統(tǒng),決定著系統(tǒng)節(jié)點之間的通信規(guī)則,在很大程度上決定了節(jié)點的能量消耗。ZigBee和6LoWPAN 是目前研究和應(yīng)用最為廣泛的兩個無線傳感器協(xié)議棧。與ZigBee 協(xié)議相比,6LoWPAN 協(xié)議允許路由節(jié)點可以休眠和電池供電,功耗更低,不僅節(jié)點之間可以組網(wǎng),還可以通過IPv6接入下一代互聯(lián)網(wǎng)[11]。
本文將Contiki操作系統(tǒng)移植到節(jié)點硬件平臺,設(shè)計了運行和休眠這兩種工作模式,以實現(xiàn)對節(jié)點硬件資源的有效管理和任務(wù)的合理調(diào)度。在網(wǎng)絡(luò)層次對Contiki中所集成的6LoWPAN 協(xié)議棧進行了配置和使用,以進一步優(yōu)化整個網(wǎng)絡(luò)的能耗。節(jié)點的軟件層次體系結(jié)構(gòu)如圖2所示。

圖2 節(jié)點的軟件體系結(jié)構(gòu)
官方的Contiki源碼是在Linux 環(huán)境開發(fā)的,相比于Linux中的GCC編譯環(huán)境,Windows中的IAR 使用起來更加簡單靈活。本文采用IAR 作為開發(fā)環(huán)境將Contiki移植到節(jié)點,需要完成開發(fā)環(huán)境相關(guān)的代碼修改和傳感器節(jié)點上操作系統(tǒng)的移植這兩方面內(nèi)容。
不同開發(fā)環(huán)境中的編碼規(guī)范存在著很大的差異,需要修改Contiki代碼使之符合IAR 的編碼規(guī)范。Contiki代碼在GCC和IAR 中的差異主要體現(xiàn)在內(nèi)嵌匯編格式、中斷服務(wù)程序格式以及底層頭文件名稱這3部分[12]。在代碼修改過程中,首先要全面修改Contiki出現(xiàn)內(nèi)嵌匯編的地方,使之符合IAR 編碼規(guī)范;然后將GCC中定義的中斷處理程序和底層頭文件名稱修改成IAR 格式。與GCC中通過Makefile管理工程編譯不同,IAR 中通過工程文件目錄反應(yīng)文件之間的關(guān)系,需要將必要的文件路徑添加到preprocesses,為下一步硬件節(jié)點方面的移植做好基礎(chǔ)。
傳感器節(jié)點上操作系統(tǒng)的移植,需要在Contiki/cpu和Contiki/platform 文件夾中分別創(chuàng)建新的MCU 模塊和節(jié)點平臺模塊的支持文件,實現(xiàn)與這兩個模塊相關(guān)的驅(qū)動和操作系統(tǒng)應(yīng)用進程。
Contiki是事件驅(qū)動的,它的內(nèi)核工作依賴于時鐘事件的驅(qū)動,修改MCU 模塊主要目的是使用EFM32TG842的SysTick定時器產(chǎn)生Contiki時鐘。SysTick定時器有兩個時鐘源,分別是:高頻內(nèi)核時鐘和RTC計數(shù)器0位。高頻內(nèi)核時鐘作為SysTick的默認時鐘,在MCU 進入深度睡眠模式時會停止工作,而RTC依舊正常工作。為了使節(jié)點能夠進入休眠模式并能成功喚醒,需要將SysTick的時鐘源改用為RTC。然后在cpu文件夾下實現(xiàn)Contiki時鐘模塊的4個時鐘驅(qū)動函數(shù),它們分別是時鐘初始化函數(shù)clock_init()、時鐘中斷處理函數(shù)SysTick_Handler()、時鐘延遲處理函數(shù)clock_delay()、以及當前時鐘獲取函數(shù)clock_time()。
在platform 文件夾下創(chuàng)建一個節(jié)點平臺文件夾,實現(xiàn)4部分內(nèi)容:
(1)dev:放置編寫的設(shè)備驅(qū)動,主要是射頻芯片以及接口部分。
(2)platform-conf.h:說明編譯器的特性,定義clock等模塊特性。
(3)contiki-conf.h:配置Contiki以及網(wǎng)絡(luò)協(xié)議棧的特性。
(4)Contiki-main.c:編輯啟動Contiki系統(tǒng)代碼和進程初始化、時鐘初始化、網(wǎng)絡(luò)初始化、應(yīng)用進程啟動等。
為了降低節(jié)點功耗,節(jié)點除了在組網(wǎng)和數(shù)據(jù)收發(fā)階段外,其它時間應(yīng)進入休眠。節(jié)點休眠時,RF 模塊關(guān)閉MCU 進入深度睡眠。在dev文件下創(chuàng)建一個應(yīng)用模塊,實現(xiàn)兩個相關(guān)的工作進程,運行模式下的進程實現(xiàn)節(jié)點的組網(wǎng)、數(shù)據(jù)收發(fā),休眠模式下的進程實現(xiàn)節(jié)點的休眠。主程序中配置節(jié)點大部分時間都處在休眠模式,節(jié)點功耗得到進一步降低。
為了評估節(jié)點的實際能耗,我們測量節(jié)點在運行模式和休眠模式的電流。運行模式:節(jié)點數(shù)據(jù)正在發(fā)送,EFM32TG842處在運行模式,CC2520 處在發(fā)射模式,發(fā)射功率是0dm。休眠模式:EFM32TG842處在深度睡眠模式,CC2520 處在關(guān)閉狀態(tài)。測得本節(jié)點電流與Mica2、Imote的電流比較見表3。

表3 本節(jié)點與Mica2、Imote的電流比較
從表3可以看出本節(jié)點的休眠電流只有Mica2休眠電流的1/10、Imote休眠電流的1/200,運行電流雖然比Mica2的運行電流稍高,但是只有Imote運行電流的一半左右。由于無線傳感器網(wǎng)絡(luò)節(jié)點長期處在休眠模式,因此本節(jié)點平均電流遠小于Mica2和Imote節(jié)點。
假設(shè)每個工作周期是1小時,則2s內(nèi)足夠完成組網(wǎng)、數(shù)據(jù)的采集、數(shù)據(jù)處理和發(fā)送的操作[13]。使用Silicon Labs公司為EFM32系列設(shè)計的Energy Aware Battery工具對節(jié)點的使用壽命進行仿真。配置仿真電源為一個225mAH 的CR2032紐扣電池,節(jié)點分別處在運行模式和休眠模式。節(jié)點的壽命曲線如圖3所示,從圖中可以看出節(jié)點能夠穩(wěn)定工作354天,計算的節(jié)點的平均電流只有21.95μA,符合低功耗的設(shè)計要求。

圖3 節(jié)點壽命曲線
本文在節(jié)點硬件設(shè)計時,分析了無線傳感器網(wǎng)絡(luò)節(jié)點結(jié)構(gòu),對節(jié)點的主要模塊進行了對比和選型,實現(xiàn)了以EFM32TG842為處理器和CC2520 為射頻芯片的無線傳感器網(wǎng)絡(luò)節(jié)點。同時,節(jié)點外擴了存儲器能夠?qū)?shù)據(jù)進行臨時存儲,實現(xiàn)了USB轉(zhuǎn)串口模塊能夠方便的與PC 進行通信,并且具有豐富的低功耗外設(shè)接口,有利于對節(jié)點進行擴展。在節(jié)點軟件設(shè)計時,首先對比分析了TinyOS 和Contiki的優(yōu)缺點,對Contiki為核心的節(jié)點的軟件系統(tǒng)做了整體設(shè)計,詳細介紹了Contiki操作系統(tǒng)移植到節(jié)點的具體方法,在節(jié)點配置了6LoWPAN 網(wǎng)絡(luò)協(xié)議棧并設(shè)計了低功耗的應(yīng)用進程。該節(jié)點具備更高的數(shù)據(jù)處理效率、更豐富的外部接口以及更低的能量消耗,可廣泛應(yīng)用于農(nóng)業(yè)信息采集等節(jié)點長期處在休眠狀態(tài)的無線傳感器網(wǎng)絡(luò)中[14]。下一步主要工作是研究配置節(jié)點能量分析工具,自動記錄每個節(jié)點的工作狀態(tài)、時間,并計算出能量消耗,在無需額外硬件的情況下完成網(wǎng)絡(luò)級別的能量分析,用于估算傳感器網(wǎng)絡(luò)的生命周期。
[1]QIAN Zhihong,WANG Yijun.Internet of things-oriented wireless sensor networks review [J].Journal of Electronics &Information Technology,2013,35 (1):215-223 (in Chinese).[錢志鴻,王義君.面向物聯(lián)網(wǎng)的無線傳感器網(wǎng)絡(luò)綜述[J].北京:電子與信息學(xué)報,2013,35 (1):215-223.]
[2]QIN Ling,HU Rongqiang.Node’s minimized efficient power protocols in wireless sensor networks[J].Journal of Wuhan University of Technology,2010,32 (2):112-114 (in Chinese).[秦嶺,胡榮強.無線傳感器網(wǎng)絡(luò)節(jié)點的有效能耗最小化策略 [J].武漢理工大學(xué)學(xué)報,2010,32 (2):112-114.]
[3]PAN Hao,DONG Qifen,ZHANG Guijun,et al.The operating system of wireless sensor TinyOS [M].Beijing:Qinghua University Press,2011:7-80 (in Chinese).[潘浩,董齊芬,張貴軍,等.無線傳感器網(wǎng)絡(luò)操作系統(tǒng)TingOS [M].北京:清華大學(xué)出版社,2011:7-80.]
[4]SU Lingyong.Research and implementation of wireless sensor network’s hardware platform [D].Jinan:Shandong University,2008:15-29(in Chinese).[蘇令永.無線傳感器網(wǎng)絡(luò)硬件平臺的研究與實現(xiàn)[D].濟南:山東大學(xué),2008:15-29.]
[5]YU Kai,XIE Zhijun,JIN Guang,et al.Design and Implementation of low-power wireless sensor network node [J].Microelectronics & Computer,2012,29 (9):157-163 (in Chinese).[于凱,謝志軍,金光,等.低功耗無線傳感器網(wǎng)絡(luò)節(jié)點設(shè)計與實現(xiàn) [J].微電子學(xué)與計算機,2012,29 (9):157-163.]
[6]IEEE Std 802.15.4TM-2009,Part15.4:Wireless medium access control(MAC)and physical Layer (PHY)for low-rate wireless personal area networks(LR-WPAN)[S].2009.
[7]WEI Hanming,LIU Wenyi,ZHANG Yanjun.Design of acquisition system based on wireless sensor network node [J].Computer Measurement and Control,2014,22 (9):2926-2930 (in Chinese).[魏漢明,劉文怡,張彥軍.基于無線傳感器網(wǎng)絡(luò)節(jié)點采集存儲系統(tǒng)設(shè)計 [J].計算機測量與控制,2014,22 (9):2926-2930.]
[8]XU Zhenfeng,YIN Jingjing,CHEN Xiaolin,et al.Design of wireless sensor networks based on ZigBee stack [J].Electronic Design Engineering,2012,20 (1):75-77(in Chinese).[徐振峰,尹晶晶,陳小林,等.基于ZigBee協(xié)議棧的無線傳感器網(wǎng)絡(luò)的設(shè)計[J].電子設(shè)計工程,2012,20 (1):75-77.]
[9]QIAN Zhihong,WANG Yijun.Internet of things-oriented wireless sensor networks review [J].Journal of Electronics &Information Technology,2013,35 (1):216-223 (in Chinese).[錢志鴻,王義君.面向物聯(lián)網(wǎng)的無線傳感器網(wǎng)絡(luò)綜述[J].電子與信息學(xué)報,2013,35 (1):216-223.]
[10]YANG Yong.The design of 6LoWPAN gateway based on Contiki[D].Wuhan:Central China Normal University,2013:29-41(in Chinese).[楊勇.基于Contiki的6LoWPAN 網(wǎng)關(guān)節(jié)點設(shè)計[D].武漢:華中師范大,2013:29-41.]
[11]SUN Xia,LIANG Wei,CHENG Hongbin,et al.Performance modeling analysis of energy consumption for 6LoWPAN[J].Microelectronics &Computer,2012,29 (11):79-81 (in Chinese).[孫霞,梁偉,程宏斌,等.6LoWPAN 網(wǎng)絡(luò)能耗性能建模分析[J].微電子與計算機,2012,29 (11):79-81.]
[12]YUAN Xia,LUO Kelu.Design of smart home gateway based on STM32 and CC2520 [J].Microcontrollers& Embedded Systems,2013,5 (13):70-73 (in Chinese). [袁霞,羅克露.STM32和CC2520的智能家居系統(tǒng)網(wǎng)關(guān)設(shè)計 [J].單片機與嵌入式系統(tǒng)應(yīng)用,2013,5 (13):70-73.]
[13]AnarA Hady,Sherine M AbdEI-kader,Hussein S Eissa.Intelligent sleeping mechanism for wireless senor networks[J].Enyptian Informatics Journal,2013,14 (2):109-115.
[14]LI Shihan,BAI Yuebin,QIAN Depei.Research on software technology for wireless sensor networks[J].Application Research of Computer.2007 (1):1-4 (in Chines). [李世晗,白躍彬,錢德沛.無線傳感器網(wǎng)絡(luò)軟件研究 [J].計算機應(yīng)用研究,2007 (1):1-4.]