盧愛(ài)紅+吳健
DOI:10.16644/j.cnki.cn33-1094/tp.2016.02.008
摘 ?要: 為了提高用水企業(yè)水平衡分析的效率,提出一種基于ZigBee的智能水務(wù)系統(tǒng)的設(shè)計(jì)方法。智能水務(wù)系統(tǒng)由多個(gè)ZigBee節(jié)點(diǎn)和ARM開(kāi)發(fā)板組合而成,其中ZigBee節(jié)點(diǎn)構(gòu)成的傳感網(wǎng)絡(luò)通過(guò)自定義的無(wú)線(xiàn)網(wǎng)絡(luò)ZigBee通信協(xié)議獲取各級(jí)水表網(wǎng)絡(luò)拓?fù)浜透骷?jí)水表讀數(shù),ARM開(kāi)發(fā)板在Qt/Embedded的界面設(shè)計(jì)中完成網(wǎng)絡(luò)拓?fù)鋽?shù)據(jù)解析、生成拓?fù)鋱D、各級(jí)水表數(shù)據(jù)顯示和存儲(chǔ)等任務(wù)。本系統(tǒng)綜合了ZigBee網(wǎng)絡(luò)的智能采集和ARM開(kāi)發(fā)板強(qiáng)大的數(shù)據(jù)處理能力,具有較強(qiáng)的環(huán)境適應(yīng)力和分析處理能力。
關(guān)鍵詞: ZigBee; ZigBee通信協(xié)議; ARM; Qt/Embedded
中圖分類(lèi)號(hào):TP368.2 ? ? ? ? ?文獻(xiàn)標(biāo)志碼:A ? ? 文章編號(hào):1006-8228(2016)02-26-03
Study of intelligent water meter system based on ZigBee
Lu Aihong, Wu Jian
(Suzhou Institute of Trade & Commerce, Suzhou, Jiangsu 215009, China)
Abstract: In order to improve the efficiency of the water balance analysis in the water-consumption enterprise,this paper proposes a design method of intelligent water meter system based on ZigBee. The intelligent water meter system is composed of multiple ZigBee nodes and an ARM development board. Via a self-defined ZigBee wireless network communication protocol, the sensor network made up of multiple ZigBee nodes obtains the network topology of water meters and the readings of water meters. In Qt/Embedded user interface design, the ARM development board completes the analysis of network topology data, generates topology map, displays meters' data, and storages the data. This system combined the ZigBee network's intelligent gathering and the ARM development board's powerful data processing capabilities, has strong environmental adaptabilities and analysis capabilities.
Key words: ZigBee; ZigBee communication protocol; ARM; Qt/Embedded
0 引言
智能水務(wù)系統(tǒng)需要對(duì)用水企業(yè)的各級(jí)水表數(shù)據(jù)實(shí)時(shí)采集,通過(guò)網(wǎng)絡(luò)傳輸?shù)娇偪刂破鲄R總后,進(jìn)行水平衡分析。系統(tǒng)能夠完成周期性的自動(dòng)采集、自動(dòng)傳輸、自動(dòng)分析,并輸出統(tǒng)計(jì)報(bào)表的任務(wù)。用水企業(yè)的各級(jí)水表數(shù)量龐大,由于人工讀表效率太低,所以利用物聯(lián)網(wǎng)的優(yōu)勢(shì),在系統(tǒng)前端使用物聯(lián)網(wǎng)無(wú)線(xiàn)傳感網(wǎng)絡(luò)采集數(shù)據(jù)。水表讀數(shù)數(shù)據(jù)流相對(duì)于音/視頻流是較小的,所以對(duì)無(wú)線(xiàn)傳感網(wǎng)絡(luò)的傳輸帶寬要求不高,但大量終端傳感節(jié)點(diǎn)需要長(zhǎng)時(shí)間待機(jī)工作,對(duì)功耗要求非常敏感。ZigBee無(wú)線(xiàn)傳感網(wǎng)絡(luò)因其數(shù)據(jù)速率低、功耗低、穩(wěn)定性高的特點(diǎn),在物聯(lián)網(wǎng)數(shù)據(jù)采集前端獲得了廣泛的應(yīng)用。ZigBee傳感網(wǎng)絡(luò)一般使用網(wǎng)狀、樹(shù)狀拓?fù)浣Y(jié)構(gòu),通過(guò)路由節(jié)點(diǎn)實(shí)現(xiàn)網(wǎng)絡(luò)中繼,拓寬了ZigBee傳感網(wǎng)絡(luò)的覆蓋范圍,對(duì)方圓幾公里的用水企業(yè)可以實(shí)現(xiàn)全范圍覆蓋。
1 系統(tǒng)要求與整體設(shè)計(jì)
智能水務(wù)系統(tǒng)由ZigBee傳感網(wǎng)絡(luò)和主控制平臺(tái)兩部分組成。TI公司針對(duì)ZigBee2007協(xié)議推出了SoC芯片CC2530和軟件協(xié)議棧Z-Stack,使用上述硬件和軟件資源,構(gòu)建無(wú)線(xiàn)傳感器網(wǎng)絡(luò)。傳感網(wǎng)絡(luò)中的ZigBee終端節(jié)點(diǎn)與各級(jí)水表數(shù)據(jù)相連,讀取水表度數(shù)。ZigBee各節(jié)點(diǎn)采用CC2530作為主控芯片,CC2530芯片提供ZigBee無(wú)線(xiàn)收發(fā)的射頻前端,CC2530芯片上同時(shí)集成了51單片機(jī),能夠?qū)崿F(xiàn)簡(jiǎn)單通信接口的編程。企業(yè)使用的水表通信接口有RS485、ModBus總線(xiàn)等,使用單片機(jī)模擬通信接口,實(shí)現(xiàn)與水表的無(wú)縫對(duì)接。ZigBee網(wǎng)絡(luò)使用樹(shù)狀拓?fù)浣Y(jié)構(gòu),由ZigBee路由節(jié)點(diǎn)完成網(wǎng)絡(luò)中繼的任務(wù)。整個(gè)網(wǎng)絡(luò)中惟一的ZigBee協(xié)調(diào)器節(jié)點(diǎn)通過(guò)RS232與主控制器相連。主控制器采用帶液晶顯示屏的ARM開(kāi)發(fā)板,完成ZigBee節(jié)點(diǎn)網(wǎng)絡(luò)地址的獲取、功能節(jié)點(diǎn)的綁定、ZigBee網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的獲取、周期性讀取各級(jí)水表讀數(shù)、水表讀數(shù)歷史紀(jì)錄保存和統(tǒng)計(jì)等工作。
系統(tǒng)設(shè)計(jì)框圖如圖1所示[1]。
2 硬件設(shè)計(jì)
系統(tǒng)的硬件設(shè)計(jì)分成兩部分。
第一部分是ZigBee終端和路由節(jié)點(diǎn)的設(shè)計(jì)。ZigBee終端和路由節(jié)點(diǎn)的單板以CC2530為核心芯片。CC2530芯片有兩個(gè)UART串口,可以通過(guò)RS232轉(zhuǎn)RS485芯片轉(zhuǎn)換后,連接兩個(gè)RS485總線(xiàn)的水表。每個(gè)終端節(jié)點(diǎn)和路由節(jié)點(diǎn)能夠連接兩個(gè)水表,有效降低了ZigBee節(jié)點(diǎn)的數(shù)量。路由節(jié)點(diǎn)和終端節(jié)點(diǎn)的區(qū)別在于ZigBee協(xié)議棧的軟件配置的區(qū)別。
第二部分是ZigBee協(xié)調(diào)器節(jié)點(diǎn)的設(shè)計(jì)。ZigBee協(xié)調(diào)器節(jié)點(diǎn)通過(guò)串口與ARM主控板連接。ZigBee協(xié)調(diào)器節(jié)點(diǎn)作為ZigBee網(wǎng)絡(luò)的核心,能夠查詢(xún)ZigBee網(wǎng)絡(luò)所有終端和路由節(jié)點(diǎn)的信息,并能發(fā)送執(zhí)行指令到所有節(jié)點(diǎn)。ARM主控板采用S3C2440作為核心CPU,主頻達(dá)400MHz,具有很強(qiáng)的處理能力。ARM開(kāi)發(fā)板的開(kāi)發(fā)過(guò)程為:首先用交叉編譯工具arm-linix-gcc編譯u-boot、Linux操作系統(tǒng)和文件系統(tǒng),操作系統(tǒng)編譯時(shí)需加載7寸LCD顯示屏的驅(qū)動(dòng)。再將三個(gè)可執(zhí)行文件安裝到開(kāi)發(fā)板,調(diào)試成功后,LCD顯示屏能夠顯示初始圖片,并且串口進(jìn)入命令行。然后進(jìn)入應(yīng)用層的調(diào)試階段,要在7寸LCD液晶屏上顯示Qt/Embedded界面,必須配置Qt/Embedded的運(yùn)行環(huán)境[2],方法為:通過(guò)掛載網(wǎng)絡(luò)文件系統(tǒng),將Qt4.7交叉編譯的庫(kù)文件傳輸?shù)紽lash,再修改文件系統(tǒng)的啟動(dòng)腳本rcS,并設(shè)置如下全局變量:庫(kù)文件目錄QTDIR、顯示設(shè)備文件QWS_DISPLAY、輸入設(shè)備文件QWS_MOUSE_PROTO等參數(shù)。最后,在ubuntu環(huán)境下的Qt Creator編程環(huán)境中仿真設(shè)計(jì)QT界面,經(jīng)過(guò)交叉編譯后,下載到ARM開(kāi)發(fā)板的文件系統(tǒng)中,直接運(yùn)行。QT界面可用拓?fù)鋱D實(shí)時(shí)、直觀地顯示各個(gè)節(jié)點(diǎn)的水表位置和水表數(shù)據(jù)。
3 軟件設(shè)計(jì)
智能水務(wù)系統(tǒng)的節(jié)點(diǎn)繁多,智能管理ZigBee節(jié)點(diǎn)是設(shè)計(jì)的重點(diǎn)。ARM開(kāi)發(fā)板作為主控制器,通過(guò)自定義的ZigBee無(wú)線(xiàn)網(wǎng)絡(luò)通信協(xié)議與直連的ZigBee協(xié)調(diào)器通信,查詢(xún)ZigBee網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài),并發(fā)送指令到指定的ZigBee節(jié)點(diǎn)。ARM開(kāi)發(fā)板與ZigBee協(xié)調(diào)器之間通信有兩個(gè)功能:①查詢(xún)ZigBee網(wǎng)絡(luò)各節(jié)點(diǎn)地址;②查詢(xún)各個(gè)水表讀數(shù)。ZigBee無(wú)線(xiàn)網(wǎng)絡(luò)通信協(xié)議的數(shù)據(jù)包格式是用戶(hù)自定義的。命令包格式和返回包格式如圖2、圖3所示。
每個(gè)ZigBee節(jié)點(diǎn)都有物理地址和網(wǎng)絡(luò)地址,節(jié)點(diǎn)的物理地址在使用ZigBee節(jié)點(diǎn)之前由用戶(hù)手動(dòng)輸入,節(jié)點(diǎn)的網(wǎng)絡(luò)地址由ZigBee網(wǎng)絡(luò)自動(dòng)分配。ZigBee物理地址的設(shè)置需根據(jù)用水企業(yè)中不同級(jí)別的水表編號(hào)對(duì)ZigBee節(jié)點(diǎn)的物理地址賦值,以便ARM開(kāi)發(fā)板在獲取所有節(jié)點(diǎn)的物理地址之后,能根據(jù)物理地址解析出水表的級(jí)別和編號(hào)。ARM板主控制器可以通過(guò)ZigBee協(xié)調(diào)器查詢(xún)每個(gè)節(jié)點(diǎn)的物理地址和網(wǎng)絡(luò)地址。ZigBee協(xié)調(diào)器向ZigBee網(wǎng)絡(luò)各個(gè)節(jié)點(diǎn)發(fā)送廣播幀,目的節(jié)點(diǎn)網(wǎng)絡(luò)地址設(shè)置為0xFFFF,查詢(xún)當(dāng)前網(wǎng)絡(luò)中所有節(jié)點(diǎn)的地址、及其父節(jié)點(diǎn)的地址。查詢(xún)地址命令即讀取網(wǎng)絡(luò)RNW命令包,格式為:&(1字節(jié))+WSN(3字節(jié))+RNW(3字節(jié))+"yyyyyyyy"(8字節(jié))+*(1字節(jié))。讀取網(wǎng)絡(luò)RNW命令的返回包格式為:&(1字節(jié))+WSN(3字節(jié))+RNW(3字節(jié))+(type)S(1字節(jié))+節(jié)點(diǎn)網(wǎng)絡(luò)地址(2字節(jié))+總節(jié)點(diǎn)數(shù)(1字節(jié))+節(jié)點(diǎn)類(lèi)型(3字節(jié))+節(jié)點(diǎn)物理地址(8字節(jié))+父節(jié)點(diǎn)網(wǎng)絡(luò)地址(2字節(jié))+PANID (2字節(jié))+"yyyyy"(5字節(jié))+*(1字節(jié))。ZigBee網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)收到查詢(xún)的廣播幀后,都會(huì)向網(wǎng)絡(luò)地址默認(rèn)為0x0000的協(xié)調(diào)器發(fā)送自己節(jié)點(diǎn)的網(wǎng)絡(luò)地址、節(jié)點(diǎn)類(lèi)型、節(jié)點(diǎn)物理地址、父節(jié)點(diǎn)網(wǎng)絡(luò)地址。ARM開(kāi)發(fā)板根據(jù)ZigBee協(xié)調(diào)器反饋上來(lái)的網(wǎng)絡(luò)地址和其父節(jié)點(diǎn)網(wǎng)絡(luò)地址,畫(huà)出當(dāng)前用水企業(yè)水表樹(shù)狀拓?fù)鋱D。
ARM開(kāi)發(fā)板獲取ZigBee網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn)地址之后,定時(shí)向ZigBee協(xié)調(diào)器查詢(xún)各個(gè)節(jié)點(diǎn)水表數(shù)據(jù),并在水表拓?fù)鋱D中實(shí)時(shí)顯示出來(lái)。ZigBee協(xié)調(diào)器依次輪詢(xún)ZigBee網(wǎng)絡(luò)中所有節(jié)點(diǎn)的網(wǎng)絡(luò)地址。查詢(xún)水表讀數(shù)的數(shù)據(jù)格式也需預(yù)先定義。讀取水表數(shù)據(jù) RWD的命令包格式為:&(1)+WSN(3)+RWD(3)+節(jié)點(diǎn)網(wǎng)絡(luò)地址(2)+"yyyyyy"(6)+*(1)。讀取水表數(shù)據(jù) RWD的返回包格式為:&(1)+WSN(3)+RWD(3)+(type)S(1)+節(jié)點(diǎn)網(wǎng)絡(luò)地址(2)+水表數(shù)據(jù)(4)+"yyyyyyyyyyyyyyyy"(16)+連接質(zhì)量(1)+*(1)。ZigBee協(xié)調(diào)器將輪詢(xún)的各個(gè)節(jié)點(diǎn)的水表讀數(shù)及時(shí)更新到協(xié)調(diào)器本地的存儲(chǔ)器中。
ARM開(kāi)發(fā)板Qt/Embedded界面設(shè)計(jì)中,設(shè)置定時(shí)向ZigBee協(xié)調(diào)器查詢(xún)節(jié)點(diǎn)地址的定時(shí)器,根據(jù)數(shù)據(jù)庫(kù)中存儲(chǔ)的最新ZigBee節(jié)點(diǎn)數(shù)據(jù),畫(huà)出ZigBee節(jié)點(diǎn)的樹(shù)狀拓?fù)鋱D。首先尋找以樹(shù)根ZigBee協(xié)調(diào)器(網(wǎng)絡(luò)地址0x0000)為父節(jié)點(diǎn)的子節(jié)點(diǎn),作為樹(shù)狀拓?fù)浣Y(jié)構(gòu)的第一層,再逐層找到樹(shù)狀拓?fù)涞母鲗庸?jié)點(diǎn)的網(wǎng)絡(luò)地址,最終完成整個(gè)樹(shù)狀拓?fù)涞睦L制。界面設(shè)計(jì)中同時(shí)也需要設(shè)置定時(shí)向ZigBee協(xié)調(diào)器查詢(xún)節(jié)點(diǎn)水表讀數(shù)的定時(shí)器,最新水表讀數(shù)數(shù)據(jù)存儲(chǔ)到本地?cái)?shù)據(jù)庫(kù),以便應(yīng)用程序進(jìn)行統(tǒng)計(jì)和分析。
4 實(shí)驗(yàn)結(jié)果
選用8個(gè)ZigBee節(jié)點(diǎn),14個(gè)水表,1個(gè)ARM開(kāi)發(fā)板作為本系統(tǒng)的實(shí)驗(yàn)設(shè)備,1個(gè)ZigBee節(jié)點(diǎn)作為協(xié)調(diào)器,與ARM開(kāi)發(fā)板直接連接,其余ZigBee節(jié)點(diǎn)分別燒錄路由節(jié)點(diǎn)和終端節(jié)點(diǎn)的代碼。ARM開(kāi)發(fā)板燒錄u-boot、Linux操作系統(tǒng)、文件系統(tǒng)3個(gè)可執(zhí)行文件和設(shè)計(jì)的Qt/Embedded界面程序。
首先啟動(dòng)ZigBee協(xié)調(diào)器,然后相繼啟動(dòng)ZigBee路由和終端節(jié)點(diǎn),各節(jié)點(diǎn)自動(dòng)組成樹(shù)狀網(wǎng)絡(luò)。對(duì)ARM開(kāi)發(fā)板上電,正常啟動(dòng)Linux操作系統(tǒng)和Qt/Embedded界面程序,界面程序發(fā)送讀取網(wǎng)絡(luò)RNW的指令,再等待從ZigBee協(xié)調(diào)器返回的各節(jié)點(diǎn)地址數(shù)據(jù),解析出當(dāng)前樹(shù)狀網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)圖,利用Linux操作系統(tǒng)中的MySQL數(shù)據(jù)庫(kù)存儲(chǔ)拓?fù)浣Y(jié)構(gòu)數(shù)據(jù),使得ARM開(kāi)發(fā)板重啟后,存儲(chǔ)的數(shù)據(jù)能自動(dòng)加載,并還原出拓?fù)浣Y(jié)構(gòu)。
Qt/Embedded界面程序中設(shè)置定時(shí)查詢(xún)功能,定時(shí)發(fā)送讀取水表數(shù)據(jù)RWD命令,獲取最新的各節(jié)點(diǎn)水表數(shù)據(jù),保存到MySQL數(shù)據(jù)庫(kù)。應(yīng)用程序可根據(jù)各節(jié)點(diǎn)水表數(shù)據(jù),進(jìn)行水平衡分析,若發(fā)現(xiàn)漏水節(jié)點(diǎn),及時(shí)發(fā)出警告。
5 結(jié)束語(yǔ)
本系統(tǒng)選用ZigBee節(jié)點(diǎn)和ARM開(kāi)發(fā)板聯(lián)合設(shè)計(jì),綜合了ZigBee傳感網(wǎng)絡(luò)智能采集數(shù)據(jù)和ARM核心處理器強(qiáng)大的處理能力。硬件上重點(diǎn)解決了ZigBee傳感節(jié)點(diǎn)和ZigBee協(xié)調(diào)節(jié)點(diǎn)主控制器的設(shè)計(jì),軟件上重點(diǎn)設(shè)計(jì)了ZigBee無(wú)線(xiàn)網(wǎng)絡(luò)通信協(xié)議和智能水務(wù)系統(tǒng)Qt/Embedded界面,創(chuàng)新性地提出了ZigBee網(wǎng)絡(luò)拓?fù)浣馕龊椭悄芩畡?wù)系統(tǒng)數(shù)據(jù)存儲(chǔ)統(tǒng)計(jì)分析的方法。系統(tǒng)聯(lián)調(diào)后功能正常、運(yùn)行穩(wěn)定。本系統(tǒng)的設(shè)計(jì)為物聯(lián)網(wǎng)在智能水務(wù)系統(tǒng)中的應(yīng)用提供了較完整的解決方案和系統(tǒng)化的設(shè)計(jì)思路,但是功能相對(duì)簡(jiǎn)單、粗糙,在實(shí)際企業(yè)應(yīng)用中,需在此框架設(shè)計(jì)的基礎(chǔ)上,進(jìn)一步優(yōu)化細(xì)節(jié)。
參考文獻(xiàn)(References):
[1] 盧愛(ài)紅,劉中原,馮蓉珍.基于ARM的自助出票機(jī)便攜式終端
設(shè)計(jì)[J].計(jì)算機(jī)時(shí)代,2013.9:28
[2] 盧愛(ài)紅.基于Qt/Embedded的水務(wù)數(shù)據(jù)監(jiān)測(cè)系統(tǒng)[J].計(jì)算機(jī)
時(shí)代,2014.12:22
[3] 吳麗琴,袁輝,翟國(guó)慶,束慧.基于WSN的水務(wù)管理系統(tǒng)設(shè)計(jì)
與實(shí)現(xiàn)[J].工業(yè)儀表與自動(dòng)化裝置,2013.6:20
[4] 楊明祥,蔣云忠,田雨,王浩.智慧水務(wù)建設(shè)需求探析[J].清華大
學(xué)學(xué)報(bào)(自然科學(xué)版),2014.54(1):133
[5] 劉勛,趙勇,雷新民.物聯(lián)網(wǎng)技術(shù)在智能水務(wù)建設(shè)中的應(yīng)用研
究[J].給水排水,2014.40(11):99
[6] MICHAEL Owens.The Definitive Guide to SQLite[M].US:
Apress,2006.