基于CC2538和Contiki的無線傳感器網(wǎng)絡設計
0 引言
近年來,隨著物聯(lián)網(wǎng)技術的逐漸成熟,物聯(lián)網(wǎng)技術在環(huán)境監(jiān)控、智慧城市、智能家居等領域的應用越來越廣泛 [1,2]。物聯(lián)網(wǎng)技術應用中一個非常重要領域就是無線傳感器網(wǎng)絡
(WSN)[3,4]。WSN 通過部署一定數(shù)量由電池供電的傳感器節(jié)點,組成無線通信網(wǎng)絡,可以方便地采集周圍環(huán)境的各種變化情況,例如溫度、濕度、照度等信息,也可以采集人體的各項生理指標,例如心跳、血壓等信息。WSN 技術可以應用于環(huán)境監(jiān)測、老人健康護理、停車場管理、交通管理、智能家居等很多領域。
本文中采用 TI 公司的 CC2538 芯片和開源物聯(lián)網(wǎng)操作系 統(tǒng) Contiki[5],設計了用于實驗室測試環(huán)境的無線傳感器網(wǎng)絡。 該網(wǎng)絡通過在空間中布置傳感器節(jié)點,采集各點的監(jiān)控信息, 并通過匯聚節(jié)點將數(shù)據(jù)上傳至計算機,實現(xiàn)了監(jiān)控數(shù)據(jù)的實 時顯示和數(shù)據(jù)庫存儲。
1 系統(tǒng)硬件設計
1.1 傳感器節(jié)點
WSN 中各傳感器節(jié)點采用電池供電,為了增加電池壽命, 在主芯片的選擇上必須把耗電量作為一個重要的指標。傳感 器節(jié)點的硬件結構示意圖如圖 1 所示。傳感器節(jié)點采用兩節(jié) 7 號干電池作為電源,主芯片選用 TI 公司的 CC2538 芯片,該 芯片為 ARM Cortex-M3 內(nèi)核,帶有 I2C 接口,可以滿足與傳 感器通信和無線組網(wǎng)的要求。我們選用的 CC2538 芯片的片上 FLASH 為 512 KB,RAM 為 32 KB,其內(nèi)部集成了工作頻率 為 2.4 GHz 并符合 IEEE802.15.4 標準的 RF 收發(fā)器。在最省 電的外部中斷模式下,該芯片的供電電流僅為 0.4 μA,滿足低功耗的設計要求。
傳感器節(jié)點中的溫濕度傳感器選用 Sensirion 公司的 SHT21 溫濕度傳感器芯片,該芯片在 PCB 板上占用的面積非 常小,僅為 3×3 mm2。缺省設置下溫度測量分辨率為 0.01 oC, 相對濕度測量分辨率為 0.04% RH。該芯片在休眠狀態(tài)下供電 電流僅為 0.15 μA,在測量狀態(tài)下供電電流為 300 μA。該芯 片通過 I2C 總線與 CC2538 主芯片通信,通過設置寄存器,可 以分別讀取溫度測試值和相對濕度測試值,SHT21 芯片提供 了通過 CRC 校驗來進行傳輸完整檢查的功能。通過 I2C 總線 讀到的溫度原始值 ST 利用下面的公式換算為攝氏度值 T:
讀到的相對濕度原始值 SRH 則通過下列的公式換算為相 對濕度 RH :
傳 感 器 節(jié)點中 的 照 度 傳 感 器 選 用 MAXIM 公司 的 MAX44009 照度傳感器芯片,該芯片為目前工業(yè)界最低功耗的 環(huán)境光傳感器芯片,在正常操作狀態(tài)下供電電流僅為 0.65μA。 在缺省狀態(tài)下,該芯片每 800 ms 測量一次環(huán)境照度值,該狀 態(tài)下芯片處于最省電的工作模式,我們在設計中使用了該工作 模式。該芯片在 PCB 板上占用的面積比溫濕度傳感器 SHT21 芯片更小,僅為 2×2 mm2。除此之外,該芯片具有十分寬廣 的照度測量范圍(0.045 Lux 至 188 000 Lux)。該芯片通過 I2C 總線與 CC2538 主芯片進行通信,通過設置寄存器可以讀取所 測量照度的指數(shù)部分(exponent)和尾數(shù)部分(mantissa),然 后通過下列公式換算為照度值(Lux):
1.2 匯聚節(jié)點
匯聚節(jié)點的作用是接收各傳感器節(jié)點發(fā)出的測量數(shù)據(jù), 并通過串口發(fā)送給計算機。匯聚節(jié)點的硬件結構示意如圖 2 所示。主芯片 CC2538 通過 FTDI 公司的 FT232R 芯片實現(xiàn) UART 接口與 USB 接口之間的轉換。
2 系統(tǒng)軟件設計 :
2.1 節(jié)點軟件設計 本文中的 WSN 采用開源物聯(lián)網(wǎng)操作系統(tǒng) Contiki 作為各 節(jié)點的操作系統(tǒng),該操作系統(tǒng)作為輕量級的嵌入式操作系統(tǒng), 具有占用硬件資源小的優(yōu)點,在典型的配置下,Contiki 僅僅 占用大約 2 KB 的 RAM 以及 40 KB 的 FLASH。除此之外, Contiki 提供了非常方便的無線通信協(xié)議。所有節(jié)點的軟件設 計在 Ubuntu下完成,編譯鏈接工具為 arm-none-eabi-gcc。
一般情況下,WSN 網(wǎng)絡各節(jié)點的 RF 收發(fā)器都是功耗最 高的部分,如何在保證通信暢通的前提下降低 RF 收發(fā)器的功 耗就成了 WSN操作系統(tǒng)的關鍵問題之一。Contiki操作系統(tǒng)中, 通過利用稱為 ContikiMAC 的 RDC(radio duty cycling)機制 來減少各節(jié)點 RF 收發(fā)器的工作時間 [6]。在無線信號正常傳輸 的前提下,該機制做到了讓各節(jié)點 RF 收發(fā)器在大約 99% 的 時間內(nèi)處于關閉狀態(tài),從而大大降低各節(jié)點的功耗。
對于各傳感器節(jié)點,我們在軟件中首先設計了溫濕度 傳感器和照度傳感器的 I2C 讀寫功能,并利用了 Contiki 的 RIME 協(xié)議將各傳感器收集到數(shù)據(jù)發(fā)送出去。CC2538 與 SHT21 溫濕度傳感器之間進行 I2C 通訊的代碼如下:
CC2538 和 MAX44009 照度傳感器之間進行 I2C 通信的 代碼如下:
RIME 協(xié)議是 Contiki 自帶的無線局域網(wǎng)通信協(xié)議 [7],通 過分層化的協(xié)議結構,可以實現(xiàn)廣播、單播、可靠單播等傳 輸方式,并可以實現(xiàn)多跳傳輸。在考慮到使用環(huán)境后,我們 通過現(xiàn)場試驗對比了幾種傳輸方式的可靠性,最后決定采用 單跳的 RIME 可靠單播方式來發(fā)送傳感器數(shù)據(jù)。各傳感器節(jié) 點每十分鐘采集一次數(shù)據(jù)并發(fā)送出去,由匯聚節(jié)點接收到后發(fā) 送給上位計算機,整個無線采集系統(tǒng)的示意圖如圖 3 所示。
2.2 上位機軟件設計
上位機軟件采用 C# 語言進行設計,在功能上主要包括了顯示各傳感器節(jié)點回傳數(shù)據(jù)和數(shù)據(jù)庫保存。上位機通過 USB 轉串口的方式實現(xiàn)與匯聚節(jié)點的串口通訊,為了提高串口數(shù)據(jù) 讀取的可靠性,在程序設計中沒有使用串口控件,而是使用了 下面的接收函數(shù)來接收串口數(shù)據(jù) :
數(shù)據(jù)庫部分采用 SQL Server 2008 作為數(shù)據(jù)源,記錄所 采集的溫濕度、照度數(shù)據(jù),數(shù)據(jù)表的第一列為各傳感器節(jié)點中 CC2538 芯片 RF MAC 的 IEEE 地址,以區(qū)分各傳感器,最后 一列為數(shù)據(jù)存儲時間,以備以后查詢。
3 結 語
本文中設計了基于 CC2538 和 Contiki 的無線傳感器網(wǎng)絡,該無線傳感器網(wǎng)絡可以采集空間各點的溫濕度、照度數(shù)據(jù),并 通過上位機進行顯示和數(shù)據(jù)存儲。經(jīng)過現(xiàn)場試驗發(fā)現(xiàn),該系 統(tǒng)數(shù)據(jù)傳輸可靠性高,測試過程中沒有發(fā)現(xiàn)丟包現(xiàn)象。由于 各芯片選用上突出了低功耗的要求,使得 WSN 中各傳感器節(jié) 點的電池壽命大大增加。本文中所設計的 WSN 提供了更加方 便精確地進行測試環(huán)境監(jiān)控的手段,可以用于大型分布式光 度計光學暗室的三維空間中溫濕度、照度的測量。