劉岳鵬,蔡 睿,周 磊
(北京航天試驗技術研究所,北京 100074)
基于ZigBee的環境參數遠程無線監控系統設計
劉岳鵬,蔡 睿,周 磊
(北京航天試驗技術研究所,北京 100074)
針對室內環境參數的遠程監控問題,提出一種基于ZigBee技術與手機進行實時數據交換的遠程無線監控系統:傳感器節點采集環境中的溫濕度、光強和煙霧濃度數據,通過ZigBee無線網絡將數據傳輸到中心協調器;協調器與WIFI模塊通過串口連接,將數據發送到互聯網;另外,設計Android手機軟件對監測數據進行獲取,并發出對參數進行調節的指令,從而完成遠程的無線監控任務;經過測試,通過手機可以在任何有網絡的地方實時對環境參數進行采集和控制,且各節點性能穩定,滿足長期監測的需求。
ZigBee; 遠程無線監控; Android手機; 環境參數
隨著近年來計算機技術和通信技術的不斷發展,人們對于生活環境質量的要求越來越高,使得智能家居的概念得到了迅速普及,通過智能化的傳感器網絡對環境進行實時監控,使人可以方便、快捷地了解環境狀態,并隨心所欲地完成主動調節與控制[1]。目前,主要的近距離無線通信技術主要包括WIFI、UWB、紅外、藍牙和ZigBee等[2],并根據各自的特點廣泛應用于不同領域中。其中,ZigBee技術主要工作在2.4 GHz頻段,因其具有低成本、低功耗、低復雜度和組網靈活、易擴展等優勢,在無線傳感器網絡監測領域中占據了一席之地[3]。但ZigBee技術的傳輸距離有限,僅能滿足短距離通信需求,實現在傳感器布置范圍內的監控任務。當需要在無線傳感器網絡覆蓋范圍之外對環境參數進行監控時,通常采用移動運營商提供的GSM或GPRS網絡處理遠程通信問題,并通過額外終端運行軟件來完成監測工作。現階段的智能手機作為日常生活中必備隨身物品,已不再是單純的移動電話,而相當于可以處理各類工作、娛樂事物的掌上電腦。因此,本文提出一種采用ZigBee技術與Android手機結合進行遠程通信的方法,實現對環境參數的監測與控制,可保證操作人員隨時隨地對監測結果進行查詢和遠程控制。
本文提出的環境參數遠程監控系統的核心是解決數據傳輸的問題,主要包括短距離無線傳感器網絡和遠程通信網絡兩部分。無線傳感器網絡部分采用ZigBee技術,通過搭建無線通信網絡實現對溫濕度、光強和煙霧濃度等環境參數信息的采集與傳輸。遠程通信網絡由WIFI模塊、路由器和手機三部分構成,采用TCP協議完成數據傳輸。ZigBee傳感器網絡的中心協調器將傳感器節點采集到的數據匯總后通過串口與WIFI模塊進行連接;WIFI模塊與無線路由器之間建立無線傳輸通道,最終通過路由器將數據發送到互聯網。其中,WIFI模塊作為TCP網絡通信的服務器。編寫Android手機上的監控軟件,作為網絡通信的客戶端,從互聯網獲取數據進行環境監測,并根據需要發出控制指令,ZigBee節點接收到指令后通過紅外射頻模塊和執行元件控制空調、電燈等的開關,從而完成遠程的實時監控要求,系統組成如圖1所示。

圖1 系統組成框圖
本系統的硬件部分包括ZigBee無線傳感器網絡節點、WIFI模塊、無線路由器和Android手機4個部分。
2.1 ZigBee無線傳感器網絡節點
ZigBee無線傳感器網絡實現對環境數據的實時采集、傳輸和控制,主要包括1個網絡協調器節點和若干傳感器節點。其中,網絡協調器節點是ZigBee網絡的中心,也是第一個啟動的設備,當協調器啟動建立無線局域網后,等待傳感器節點加入網絡;傳感器節點需等待網絡穩定后啟動,并作為從設備加入網絡,從而構成星型拓撲結構的網絡通路。無線網絡構建后,傳感器節點采集環境中的溫濕度、光強和煙霧濃度等參數,并發送給協調器進行匯總,并最終由協調器通過RS232串口發送給WIFI模塊;同時,協調器還可以接收WIFI模塊下發的控制指令,并指揮傳感器節點通過繼電器和紅外射頻模塊完成對環境參數的控制功能。
ZigBee無線傳感器網絡節點的電路設計采用美國TI公司的CC2530芯片作為網絡搭建和數據處理的核心,電路包括電源、串口和傳感器的輸入接口等模塊,協調器節點和傳感器節點的結構框圖如圖2所示。其中,協調器節點的串口模塊采用CH340G芯片和USB接口實現,并通過12864液晶屏對網絡狀態和匯總的數據進行實時的顯示。傳感器節點的數據采集部分選用DHT11傳感器采集溫濕度、光敏電阻采集光照強度、3MQ-2傳感器監測環境中的煙霧濃度,并預留0~5 V模擬輸入通道和繼電器控制模塊;同時,通過紅外模塊和繼電器等作為執行元件負責對空調、電燈和風扇等的控制工作。

圖2 ZigBee節點結構框圖
2.2 WIFI模塊
WIFI模塊負責轉發ZigBee網絡協調器和手機終端之間的數據,解決無線傳感器網絡與互聯網之間的數據通信問題。本系統中選用的WIFI模塊為ALIENTEK公司推出的ATK-RM04高性能UART-ETH-WIFI模塊。其通過RS232串口與ZigBee網絡協調器節點通信,內置 TCP/IP協議棧,具有多種工作模式,可適應各種不同的應用需求,能夠實現用戶串口、以太網、無線網(WIFI)3個接口之間的轉換。本文設計的系統在使用時,為其提供12 V 1 A的電源,首先將模塊恢復為出廠默認設置,再通過串口線將模塊與計算機連接,并在專用的配置軟件中,將模塊的工作模式設置為串口轉WIFI(STA)模式,通過WIFI信號搜索并連接到外部路由器建立的無線網絡中。同時,將模塊的工作方式配置為TCP服務器,并指定服務器的偵聽端口號(本系統中為4567),從而實現將協調器串口和無線路由器之間的數據進行實時轉發。待WIFI模塊設置完畢后,將其與計算機斷開連接,并通過串口與ZigBee網絡協調器接通。
2.3 無線路由器
無線路由器是實現系統遠程控制的關鍵環節,本文的系統中通過計算機登陸路由器的配置頁面,對系統進行配置。首先,路由器要具備連接到互聯網的能力,并為路由器配置無線局域網,根據2.2節中所述配置方法將WIFI模塊連接到網絡中;其次,在路由器中為WIFI模塊分配局域網靜態IP地址和端口號,其中端口號應與WIFI模塊配置的端口號相同,設置為4567。當路由器在不斷電的情況下會使用不變的公網IP地址,此時手機客戶端軟件可以通過該公網IP地址與WIFI模塊實現通信。但實際使用過程中,不可避免的會發生路由器斷電重啟問題,此時的公網IP地址會發生變化,這樣手機端就無法與WIFI模塊通信。為了解決這一問題,可以考慮兩種方案:第一種為申請固定IP地址,但這會承擔額外的費用,增加開銷,提高成本,一般在企業中才會用到,個人用戶通常不采用這種方案。因此,通常采用第二種方法,通過動態域名解析工具建立域名與IP地址的映射關系,現在市面上的動態域名解析工具很多,且有大部分可以提供免費使用。由于本文的系統中采用WIFI模塊作為TCP服務器,而動態域名解析工具需要運行在電腦平臺上,因此,需要選擇具備動態域名解析功能的路由器才能實現功能,現在市面上常用的TP-LINK、艾泰等知名品牌均提供這一功能。本文通過路由器系統中自帶的花生殼動態域名解析工具,為路由器申請創建一個免費的域名,無論路由器的公網IP地址如何變化,客戶端都可以通過域名找到網絡中的路由器[4]。工作時,路由器將WIFI模塊發送來數據轉發到互聯網中的手機終端。同時也將手機端的控制指令發送給ZigBee網絡中的控制模塊,從而實現遠程控制功能。
2.4 智能手機終端
智能手機的普及給人的生活帶來了極大的便利,且成為了人們日常生活的必需品。因此,本系統中采用常規的Android智能手機作為監控的終端設備設計監控平臺,要求Android操作系統的版本號在4.0以上,且能夠通過GPRS或WIFI進行上網,本文通過設計專用軟件為操作人員提供對環境參數進行實時監測和控制的功能。
本系統涉及的軟件開發環節包括:針對CC2530單片機的ZigBee無線傳感器網絡搭建和數據采集與傳輸程序編寫,以及針對Android手機的監控軟件開發。
3.1 ZigBee無線傳感器網絡搭建
本文討論的ZigBee無線通信程序在IAR Embedded workbench開發環境下采用C語言編寫,并以TI公司提供的Z-Stack協議棧為基礎進行開發[5]。Z-Stack協議棧提供了名為操作系統抽象層(Operating System Abstraction Layer,OSAL)的調度程序,包含了無線傳感器網絡建立時,物理層、MAC層和網絡層等的全部底層驅動代碼,用戶只需在應用層通過調用API接口庫中的函數來開發自己的應用程序即可,操作方便,大大縮短了開發所需時間。Z-Stack協議棧執行輪轉查詢式操作系統,根據產生的任務事件的優先級,調用相應的處理函數。
無線傳感器網絡通信程序包括協調器程序和傳感器程序。其中,協調器節點是網絡中第一個啟動的設備,上電后通過調用Z-Stack協議棧的庫函數對IO、時鐘、中斷等硬件進行初始化,并配置網絡參數,允許其他從設備加入該網絡,并為加入網絡的設備自動分配16位的網絡地址[6]。傳感器節點需等待協調器成功創建網絡后再啟動,并請求加入網絡,接收到協調器的響應后即可創建網絡傳輸通路,為數據傳輸做好準備。Z-Stack協議棧已經為用戶提供了大部分程序代碼,開發時僅需根據實際設計的硬件電路對LED指示燈、LCD顯示屏、按鍵等進行定義,并對ZigBee網絡的數據傳輸信道和地址分配機制等參數進行設定即可,其他工作都由協議棧自動實現。
3.2 ZigBee數據采集與傳輸
傳感器節點的程序負責對環境中的溫濕度、光照強度和煙霧濃度等參數進行采集。其中,溫濕度測量采用DHT11數字傳感器,其包含一個電阻式感濕元件和NTC測溫元件,采用單線制總線接口與單片機連接通信,具備響應快、抗干擾能力強、相加比高、體積小和低功耗等優勢[7]。使用時,通過CC2530單片機的P10口發送時序指令來控制數據的讀取,平均4 ms即可完成一次通訊。光敏電阻和3MQ-2煙霧傳感器均輸出模擬電壓量,與0-5 V模擬信號的采集方式相同,因此通過CC2530單片機的P0口可實現對模擬量的直接采集,并通過芯片內部的12位ADC轉換為數字量。
ZigBee數據采集和傳輸的程序需在Z-Stack協議棧的App層進行編寫。在傳感器節點的程序中,設定采集環境參數的周期為30s,依次調用各傳感器采集數據的函數,并按照特定的數據包格式對測量的溫濕度、光照強度和煙霧濃度的數據進行打包匯總,并添加傳感器節點編號信息,形成一條字符串數據包。最后通過Z-Stack協議棧中的AF_DataRequest()數據發送函數以單播方式向協調器發送數據。
DataZB[0] = Device_ID; //設備編號
DHT11_Read(); //讀取DHT11
LightLevel_Read(); //讀取光敏
Gas_Read(); //讀取煙霧
AF_DataRequest( //數據發送函數
&GenericApp_DstAddr, //目的地址
&GenericApp_epDesc, //節點描述符
GENERICAPP_CLUSTERID, //命令ID
17, //發送的數據長度
(byte *)&DataZB, //發送的數據
&GenericApp_TransID, //發送序號指針
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS )
協調器節點程序運行時不斷輪詢查看任務列表,當發現傳輸信道上有數據傳來時,通過osal_msg_receive()數據接收函數接收傳感器節點發來的數據包,并將該數據封裝成一個消息,放入消息隊列。如果消息的ID為AF_INCOMING_MSG_CMD,則進行相應的數據處理,按數據包格式對環境參數信息進行解析,并在12864液晶顯示屏上實時顯示環境參數信息,同時將原始數據包通過串口直接轉發到WIFI模塊。WIFI模塊根據第2節的配置方式,可實現串口與路由器之間的數據轉發,從而實現與互聯網中的手機進行通信。結合無線傳感器網絡創建過程,協調器節點和傳感器節點的程序流程如圖3所示。
3.3 Android手機監控軟件
Android手機上的監控軟件在Eclipse開發環境下設計,其可以實現對Android工程資源的有效管理,代碼通過Java語言進行編寫,并通過Android SDK工具將程序編譯為.Apk安裝包[8]。本文中的手機監控軟件設計主要是對UI界面的設計和網絡通信程序的編寫。
本文中的監控軟件界面布局在使用中不會產生變化,因此采用xml布局文件來控制Android程序中的UI界面。設計時,使用res/layout資源目錄下的xml文件進行描述,同時在Eclipse開發環境中利用SDK提供的布局管理工具使界面設計變得十分靈活,通過圖形化的控件布局,可以自動生成描述布局的xml代碼文件。編譯后R.java會自動收錄該布局資源,在Android工程的Activity類中使用下述Java代碼就可以顯示布局內容。
setContentView(R.layout.main);
程序的網絡通信采用Socket進行實現,手機端的軟件作為TCP客戶端,需要將花生殼提供的域名通過InetAddress.
getByName()方法解析為無線路由器的公網IP地址,并在代碼中通過Socket(“IP地址”,4567)指定無線路由器的公網IP地址和為WIFI模塊配置的端口號,待WIFI模塊的服務器啟動后,手機端通過TCP協議與服務器建立連接,通過輸入輸出流進行數據的發送和接收,最終實現手機端軟件與ZigBee無線傳感器網絡之間的數據交換。手機監控軟件作為終端控制中心,還具有數據的存儲、查詢和發出控制指令等功能,監控軟件的程序流程如圖4所示。

圖4 上位機監測軟件程序流程
經過前期各模塊功能的分別開發后,對整個系統進行綜合測試。采用一個協調器節點和3個傳感器節點組成無線傳感器網絡,在傳感器節點上設置溫濕度、光強和煙霧傳感器,協調器采用外部5V電源供電,傳感器節點采用3節5號電池供電。此時啟動協調器,待網絡指示燈穩定后,依次打開3個傳感器節點,協調器上的LCD可以實時顯示3個傳感器節點的環境參數信息,并以30s為周期更新數據。
確保無線傳感器網絡工作正常后,將協調器與設置好的WIFI模塊通過RS232串口進行連接,并將WIFI模塊通過無線方式加入路由器的無線網絡中,其中,WIFI模塊和路由器按照上文中的方式進行配置,路由器確保可以連接到互聯網。在Android手機上安裝監控軟件,到室外進行查看,并確保手機可以訪問GPRS無線網絡。此時,打開手機上的監控軟件,可以實時顯示環境中的參數信息,通過軟件上的控件下發指令,可有效實現對電燈、風扇和空調等的啟動和關閉。隨后進行了4個小時的持續監測任務,系統未發生問題,并將數據存儲到了手機的內存卡中。若考慮長期監測任務,可對傳感器節點的參數采樣速率進行調整,并使電路在空閑時進入睡眠模式,并通過定時器喚醒,從而實現長期的監控任務。
通過上述測試,本文設計的遠程環境無線監控系統,能夠通過ZigBee無線傳感器網絡對環境參數進行實時、有效的采集和穩定、可靠的傳輸,并借助WIFI模塊和路由器實現遠程監控的目的;通過手機端的監控軟件可在任何有網絡連接的位置查看監測結果和下發控制指令,完成對環境狀態的反饋控制。該系統的功能可使人對智能家居的管理和控制變得更加靈活和方便。
[1] 趙 麗.基于ZigBee技術的智能家居系統研究與設計[D].南京:南京郵電大學,2011.
[2] 許 毅,陳立家,甘浪雄,等.無線傳感器網絡技術原理及應用[M].北京:清華大學出版社,2015.
[3] 高 鍵,方 濱,尹金玉.ZigBee無線通信網絡節點設計與組網實現[J].計算機測量與控制,2008,16(12):1912-1914.
[4] 高德欣,劉 芳,張如耀.基于Android的輪胎模具倉庫溫濕度無線監控系統設計[J].自動化與儀表,2016,31(4):30-33.
[5] 朱 琎,楊占勇.基于CC2530的無線振動監測傳感器節點設計[J].儀表技術與傳感器,2012,44(8):56-58,83.
[6] 王玉潔,桑永勝.一種基于ZigBee物聯網技術的校園安防解決方案[J].現代計算機,2012,29(3):33-38.
[7] 朱向慶,陳志雄.遠程分布式溫濕度實時監測系統設計[J].計算機測量與控制,2010,18(1):55-57+63.
[8] 尹士龍.基于ZigBee網絡的手機位置共享系統設計[D].成都:電子科技大學,2009.
Design of Remote Wireless Monitoring System for Environmental Parameters Based on ZigBee
Liu Yuepeng,Cai Rui,Zhou Lei
(Beijing Institute of Aerospace Testing Technology, Beijing 100074, China)
In view of remote-monitoring problem for indoor environmental parameters, a remote wireless-monitoring system based on ZigBee technology and mobile phone is proposed, which is used to realize the real-time data exchange. The sensor nodes collect the temperature, humidity, light intensity and smoke concentration, and transmit the data to the central coordinator by the ZigBee wireless network. The coordinator is connected with the WIFI module through the serial port, by which, the data is sent to the Internet. In addition, an Android mobile phone software is designed for the data acquisition, and issues instructions for adjusting parameters to complete the remote wireless monitoring task. As the test results show, the mobile phone is able to acquire and control the real-time environmental parameters in any place where the network is available. At the same time, the performance of nodes work stably and meet the need of long-term monitoring.
ZigBee; remote wireless monitoring; Android mobile phone; environmental parameters
2017-01-09;
2017-02-27。
裝備預先研究項目(617010604)。
劉岳鵬(1990-),男,北京市人,碩士研究生,助理工程師,主要從事傳感器與通信技術方向的研究。
1671-4598(2017)07-0087-03
10.16526/j.cnki.11-4762/tp.2017.07.022
TP277
A