李 玲,郭曉玲,武仁杰,徐 婷
(河北北方學院 信息科學與工程學院,河北 張家口 075000)
無線傳感器網絡(WSN)是由大量傳感器節點通過無線通信技術構成的自組織網絡,集成了傳感器、網絡、計算機、嵌入式系統等技術,用來采集、處理和傳輸網絡覆蓋范圍內感知對象的信息。ZigBee是建立在IEEE802.15.4標準基礎上的低功耗個域網協議,具有低成本、近距離、自組織、低功耗、低數據傳輸率、低復雜度等特點,較藍牙、WiFi等無線技術,更適用于無線傳感器網絡,也是無線傳感器網絡中采用較多的無線傳輸協議[1-2]。但是,ZigBee屬于短距離技術,它的協議棧也并不支持IP協議。ZigBee網絡中節點的數據要到達控制中心或者云端,必須經過網關進行協議轉換。現已有將ZigBee與以太網、WiFi、GPRS、3G、4G等技術融合的研究[3-6],使ZigBee網絡的數據能夠到達外部網絡。
NB-IoT(窄帶物聯網)是IoT領域新興的技術,支持低功耗設備在廣域網的蜂窩數據連接,是低功耗廣域網技術,具有部署靈活、窄帶、低速率、低成本、高容量、深度覆蓋、低功耗等特點[7-9]。NB-IoT屬于廣域網技術,直接獲取IP地址便可將數據傳輸到互聯網,具有直達云端的優勢。單個NB-IoT節點向運營商支付的業務費也較低。
結合ZigBee技術和NB-IoT技術特點,揚長避短,本文提出融合NB-IoT及ZigBee技術的網關設計,滿足物聯網應用對于“遠”“近”距離可擴展,組網靈活、安全可靠的需求。
傳感器網絡一般由多個節點和一個匯聚節點組成。不同的應用場合,對傳感器網絡布點數量的要求不同,傳感器網絡的拓撲結構也不相同[10]。但是,傳感器網絡要與互聯網相連接,必須經過網關進行數據轉發。ZigBee網絡一般由協調器節點、路由器節點及終端節點組成。協調器是ZigBee網絡的中心。該設計將ZigBee協調器與NB-IoT模塊BC95通過串口連接,實現傳感器網絡與互聯網的連接。ZigBee協調器是ZigBee網絡的控制中心,收集各個節點的數據,并通過串口將數據發送給BC95模塊。BC95模塊通過NB-IoT網絡將數據傳輸到云平臺或者遠程控制中心。云平臺或者遠程控制中心的指令通過NB-IoT網絡到達ZigBee協調器,協調器再將指令進行轉發。網絡整體體系結構如圖1所示。
ZigBee芯片選用德州儀器生產的CC2530F256,CC2530F256芯片是ZigBee片上系統解決方案,基于IEEE802.15.4標準協議,集成了領先的RF收發器的優良性能,具有業界標準的增強型8051內核和256 kB的閃存空間,體積小。CC2530F256為網關的核心處理部分,一是具有ZigBee協調器的功能,二是通過串口與BC95模塊相連,通過AT指令控制BC95模塊進行網絡連接、數據發送等功能。CC2530硬件設計如圖2所示。

圖1 網絡整體體系結構

圖2 CC2530硬件設計
NB-IoT模塊選用BC95-B8,B8適配電信網絡。華為研發了業界第一款支持NB-IoT網絡的芯片和Boudica120芯片。移遠基于Boudica120芯片開發了BC95模塊。BC95是一款高性能、低功耗的NB-IoT無線通信模塊。
CC2530F256外設中具有兩路串口:一路通過串口轉USB芯片轉換與PC連接,進行調試用;另一直接與BC95相連進行數據收發。串口連接如圖3所示。

圖3 CC2530串口連接
CC2530的電源管理采用兩路AMS111-7芯片,能夠同時穩定提供3.3 V、5 V電源,分別給CC2530和BC95模塊使用。
ZigBee協議棧采用TI公司的Z-Stack協議棧。Z-Stack協議棧具有OSAL操作系統抽象層,可以看做是一種任務分配資源的機制,從而形成了一個簡單多任務的操作系統。該設計中將協調器節點作為網關節點,系統軟件要包含協調器的功能,同時也要包含兩個異構網絡之間數據轉發的功能。CC2530與BC95之間通過串口連接,ZigBee協議由zstack協議棧處理,NB-IoT協議由BC95模塊處理,兩種異構網絡的數據交換主要為應用層數據的交換。NB-IoT網絡數據的發送及接收通過串口發送AT指令對BC95模塊進行控制。應用層軟件包含三個事件:(1)串口數據接收事件,處理BC95模塊返回的信息,若有數據下發,則轉發給相應的ZigBee節點;(2)ZigBee網絡數據接收事件,處理ZigBee節點反饋的信息,并將數據轉發給BC95模塊;(3)定時器事件,發送心跳幀,定時反饋狀態數據。應用層軟件流程如圖4所示。

圖4 應用層軟件流程
BC95模塊控制主要包括開機入網、數據接收和網絡狀態檢測。
(1)NB-IoT入網,通過發送一些列AT指令使BC95模塊附著到NB網絡。
AT+CMEE=1啟動結果碼;
AT+CFUN=1開啟模組的射頻開關;
AT+CIMI查詢IMSI號碼;
AT+CGSN=1查詢IMEI號碼;
AT+CSQ確認當前射頻信號強度;
AT+CGATT=1激活網絡配置;
AT+CGATT確認網絡是否被激活,返回值為1表示網絡激活;
AT+CEREG確認模塊網絡注冊狀態,返回值為1表示注冊成功;
AT+CSCON確認模塊連接狀態,返回值為1表示連接成功;
AT+NSMI=1打開消息發送指示;AT+NNMI=2設置系統消息提示。(2)數據接收,使用UDP協議進行模塊與云服務器之間的數據傳輸。
使用AT+NSOCR創建socket,如UDPAT+NSOCR=DGRAM,17,10 000,1;
使用AT+NSOST發送數據,如AT+NSOST=0,115.29.240.46,6 000,2,6 570;
若有數據下發,模塊返回+NSONMI∶0,10(提示有10字節數據到NB模塊);
使用AT+NSORF指令讀取數據,如AT+NSORF=0,10。
為了遠端監控進程能讀懂采集的數據,網關能夠識別下發的控制命令并轉發給相應的ZigBee節點,還需定義通信幀結構。定義通信幀結構,如圖5所示。

圖5 通信幀結構
幀頭:一幀數據的開始標志。
幀長度:包含幀頭至幀尾的整個幀的長度。
源地址、目的地址:ZigBee節點的64位MAC地址,數據上報時目的地址為0,數據下發時源地址為0。
幀類型:包括數據上報、命令下發、心跳幀和確認幀幾種類型。數據上報幀由ZigBee終端節點主動發起;命令下發幀,為確保終端節點是否收到,終端節點收到后需上報確認幀;心跳幀,網關定時上報,維持網絡活性。
數據區:數據區由命令字、數據長度和數據組成,一個幀可攜帶多個數據區。當幀為數據幀時,命令字指示采集的何種數據,如溫度、濕度、光照度等,數據長度指示當前數據區數據的長度。當幀為命令下發幀時,命令字指示何種控制命令,數據為下發的數據。當幀為確認幀時,命令字指示何種控制命令,數據為成功或失敗的標識。當幀為心跳幀時,數據區為空。
幀尾:一幀數據結束標志。
協議流程:終端節點上報數據,網關轉發到NB-IoT網絡再到云平臺;網關向云平臺發送心跳幀保持網絡通信順暢;網關接收到云平臺下發的指令轉發給終端節點,終端節點收到并上報確認幀,網關轉發確認幀到云平臺;若網關收不到終端節點的確認幀,則由網關上報失敗的確認幀。
網絡環境。ZigBee網絡的采集數據由NB-IoT網絡上報到云平臺,云平臺再將數據透傳給本地服務器。
數據上報測試。搭建溫濕度采集系統進行網關功能測試,測試環境為實驗室室內外溫濕度;布置3個ZigBee節點,一個節點室外,一個節點靠窗,一個實驗室內部;數據通過NB-IoT網絡傳輸到云平臺再透傳到本地服務器,本地服務器通過網絡連接工具接收數據。溫濕度采集數據半個小時上報一次,連續測試5天,系統穩定。圖6是服務器端數據接收的實時顯示。

圖6 服務器端數據接收
數據下發測試。模擬測試環境為控制ZigBee節點的LED開關,服務器端隨機下發控制指令。當ZigBee節點為工作狀態時,服務器端會收到成功的確認;當ZigBee節點處于休閑狀態時,服務器端會收到失敗的確認。
該系統結合ZigBee自組網、無需付費和NBIoT直達廣域網的優勢,設計了ZigBee/NB-IoT無線傳感器網絡網關。測試結果表明,設計方案運行穩定,且系統具有成本低、操作方便、便于安裝等特點,具有較高的使用價值。