戴 建,史志才,吳 飛,王昌志,江 鳳
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院,上海201620)
從工業(yè)控制到農(nóng)業(yè)生產(chǎn),從辦公場所到日常家居,環(huán)境監(jiān)測與采集都發(fā)揮重要的作用。而對于大多數(shù)的檢測場所,面積一般在幾十到上百平方米。如果采用傳統(tǒng)的布線方式,不僅系統(tǒng)的硬件成本很高,而且會影響到環(huán)境的美觀[1]。
ZigBee是近些年新興的一種短距離雙向無線通信技術(shù)。相比于藍(lán)牙、WiFi和RFID等技術(shù),Zig-Bee具有功耗低、成本低、時延短、可靠性高、組網(wǎng)方式靈活等特點[2-3],其應(yīng)用領(lǐng)域和范圍也不斷擴(kuò)大。GSM是一種當(dāng)前極為廣泛的移動通訊標(biāo)準(zhǔn),具有網(wǎng)絡(luò)覆蓋率高、傳輸特性好的優(yōu)勢[4],是采集數(shù)據(jù)良好的無線傳輸方式。將GSM技術(shù)與ZigBee技術(shù)相結(jié)合可以充分利用這兩者的優(yōu)勢,具有很高的應(yīng)用價值和應(yīng)用前景。
系統(tǒng)主要由移動設(shè)備、控制器和多個傳感器終端組成,其結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure diagram of system
系統(tǒng)控制器主要由STM32處理器、LCD觸摸屏、存儲器、ZigBee協(xié)調(diào)器和GSM模塊等組成,是系統(tǒng)的核心模塊。其中,STM32處理器主要負(fù)責(zé)與LCD觸摸屏、存儲器、ZigBee協(xié)調(diào)器、GSM模塊等進(jìn)行數(shù)據(jù)交換,并對數(shù)據(jù)進(jìn)行處理。LCD觸摸屏既能夠顯示系統(tǒng)的狀態(tài)和數(shù)據(jù),又能夠通過其圖形化界面實現(xiàn)系統(tǒng)參數(shù)的設(shè)定。系統(tǒng)記錄的數(shù)據(jù)和重要參數(shù),如密碼、移動號碼、報警極限值等都儲存在存儲器中??刂破魍ㄟ^ZigBee協(xié)調(diào)器構(gòu)建感知數(shù)據(jù)的傳輸通道,接收來自傳感器終端的感知數(shù)據(jù)。ZigBee協(xié)調(diào)器可通過串口1將接收到的數(shù)據(jù)上傳到STM32處理器進(jìn)行處理。同時,ZigBee協(xié)調(diào)器也可將來自STM32控制器的數(shù)據(jù)發(fā)送到傳感器終端。GSM模塊構(gòu)建了系統(tǒng)控制器與移動通訊設(shè)備之間的數(shù)據(jù)傳輸通道,實現(xiàn)了數(shù)據(jù)的遠(yuǎn)程傳輸,在系統(tǒng)中主要通過短信的形式實現(xiàn)。GSM模塊既可以通過串口2與STM32控制器進(jìn)行數(shù)據(jù)交換,又可以通過GSM網(wǎng)絡(luò)與移動設(shè)備進(jìn)行通信。
傳感器終端包含多個ZigBee節(jié)點和傳感器,主要功能是環(huán)境數(shù)據(jù)的感知與采集,并通過ZigBee網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送到ZigBee協(xié)調(diào)器。同時,ZigBee節(jié)點可以接收來自ZigBee協(xié)調(diào)器模塊的命令。在接收到命令后,ZigBee終端模塊將做出數(shù)據(jù)更新等操作。
通過模塊化的設(shè)計方法,將系統(tǒng)硬件劃分為控制器模塊、ZigBee模塊、GSM模塊和傳感器模塊。
圖2 控制器模塊電路圖Fig.2 Circuit diagram of control module
如圖2所示,控制器模塊由STM32芯片及其外圍電路、LCD觸摸屏、存儲器組成。STM32是由意法半導(dǎo)體公司生產(chǎn)的基于ARM Cortex-M3體系的微控制器。STM32系列微控制器的突出優(yōu)點就是內(nèi)部高度集成,且提供高質(zhì)量的固件庫,方便開發(fā)[5]。將LCD觸摸屏單元的T_PEN輸出與微控制器的PC1引腳直接相連,當(dāng)有觸摸操作時,微控制器將會通過中斷響應(yīng)該操作,提高了系統(tǒng)的響應(yīng)速度和工作效率。模塊共有2個存儲器,W25X16用來存儲漢字庫及字符庫,24C16用來存儲系統(tǒng)的密碼、限值等工作參數(shù)。
ZigBee模塊包括ZigBee協(xié)調(diào)器和ZigBee節(jié)點兩部分。ZigBee協(xié)調(diào)器通過串口與STM32處理器相連,以星型網(wǎng)絡(luò)方式構(gòu)建ZigBee傳輸通道[6]。傳感器終端通過ZigBee節(jié)點接入該通道,與ZigBee協(xié)調(diào)器進(jìn)行數(shù)據(jù)傳輸。
如圖3所示,ZigBee模塊由CC2530芯片和外圍電路組成。CC2530是一款由TI公司生產(chǎn)的基于IEEE802.15.4協(xié)議的無線收發(fā)芯片。CC2530內(nèi)部集成了增強(qiáng)型8051控制內(nèi)核,結(jié)合TI公司開發(fā)的ZigBee協(xié)議棧,用戶可以很好地開發(fā)應(yīng)用程序。CC2530具有多種模式,具有模式間切換時間短、功耗低、傳輸穩(wěn)定可靠等特點[7]。ZigBee協(xié)調(diào)器與Zig-Bee節(jié)點在硬件設(shè)計上基本一致,不同點在于Zig-Bee協(xié)調(diào)器的對外接口只有串口線,而ZigBee節(jié)點的對外接口很多,以便接入傳感器終端底座。
圖3 ZigBee模塊原理圖Fig.3 Circuit diagram of ZigBee module
傳感器終端由ZigBee節(jié)點、底座和傳感器組成。為了便于系統(tǒng)功能的拓展,所有傳感器終端均采用相同的底座設(shè)計。底座上預(yù)留2種接口,一種接入ZigBee節(jié)點,一種接入傳感器。此外,底座上設(shè)計有數(shù)個撥碼開關(guān),通過撥碼開關(guān)的設(shè)置可以設(shè)定終端的功能和傳感器的種類。根據(jù)應(yīng)用場合的變化,傳感器可以是溫度傳感器、濕度傳感器、可燃?xì)怏w傳感器和煙霧傳感器等。
GSM模塊在硬件上采用的是SIM900A單元。SIM900A是一款由SIMCOM公司專為中國和印度市場設(shè)計的2頻GSM/GPRS模塊。SIM900A采用標(biāo)準(zhǔn)AT命令接口,可以向用戶提供GSM語音、短消息等多種業(yè)務(wù),具有多模式、多接口等特點[8]。同時,SIM900A內(nèi)嵌的TCP/IP協(xié)議和擴(kuò)展的TCP/IP AT命令使得通信變得更加簡便和可靠。在短信傳輸時,SIM900A 具有 MT、MO、CB、Text和 PDU 等多種模式,使用SIM卡作為數(shù)據(jù)存儲器。該系統(tǒng)正是通過短信對溫濕度進(jìn)行有效地監(jiān)測,SIM900A模塊功能框圖如圖4所示。
圖4 SIM900A模塊功能框圖Fig.4 Functional diagram of SIM900A module
系統(tǒng)軟件主要包括STM32控制器程序、ZigBee協(xié)調(diào)器程序和傳感器終端程序。其中ZigBee協(xié)調(diào)器主要完成數(shù)據(jù)傳輸?shù)闹修D(zhuǎn)作用,并不需要對數(shù)據(jù)進(jìn)行進(jìn)一步的加工或處理,所以在文中沒有作詳細(xì)介紹。
圖5 控制器程序流程圖Fig.5 Flow chart of controller
STM32控制器程序?qū)崿F(xiàn)與ZigBee協(xié)調(diào)器模塊和GSM模塊的數(shù)據(jù)交換、數(shù)據(jù)的處理與顯示,以及對觸摸屏輸入命令的識別與處理等。為了實現(xiàn)數(shù)據(jù)的及時有效處理,主程序中通過輪詢的方式檢測GSM模塊是否有新的命令。首先,控制器通過串口2向GSM發(fā)出查詢指令,GSM模塊在收到命令后會將最新收到的數(shù)據(jù)發(fā)回給控制器,控制器將會根據(jù)收到的數(shù)據(jù)做出相應(yīng)的判斷和操作,其程序流程圖如圖5所示。控制器通過串口1接收Zig-Bee協(xié)調(diào)器上傳的數(shù)據(jù)。當(dāng)接收數(shù)據(jù)正常時,系統(tǒng)會顯示和記錄數(shù)據(jù)。當(dāng)接收數(shù)據(jù)異常時,系統(tǒng)將會自動向設(shè)定的手機(jī)號發(fā)送提示短信,串口2中斷執(zhí)行流程如圖6所示??刂破骺赏ㄟ^觸摸屏中斷實現(xiàn)對系統(tǒng)參數(shù)(如目標(biāo)號碼、安全參數(shù)范圍等)進(jìn)行設(shè)定。當(dāng)有指令輸入時,觸摸屏激活外部中斷1,系統(tǒng)通過讀取觸摸屏信息對指令進(jìn)行識別并加以處理。
圖6 串口1執(zhí)行流程圖Fig.6 Flow chart of serial port 1
傳感器種類較多,為了實現(xiàn)傳感器終端的統(tǒng)一設(shè)計,采用模塊化的方法進(jìn)行設(shè)計。即將所有傳感器的數(shù)據(jù)采集方法都在程序中實現(xiàn),終端通過讀取撥碼開關(guān)數(shù)值判斷傳感器的類型,再執(zhí)行該傳感器數(shù)據(jù)的采集方式。傳感器終端的程序流程如圖7所示。
圖7 傳感器終端程序流程圖Fig.7 Flow chart of sensor terminal program
為了便于數(shù)據(jù)的識別和處理,傳感器終端與ZigBee協(xié)調(diào)器之間采用統(tǒng)一的數(shù)據(jù)傳輸格式,即:
起始符+8位終端編號+8位感知數(shù)據(jù)類型號+16位感知數(shù)據(jù)+結(jié)束符。
根據(jù)實際需要,設(shè)定采樣周期為5 s,即每5 s傳感器終端將對環(huán)境數(shù)據(jù)進(jìn)行一次采樣并將數(shù)據(jù)上傳到控制器。同時,如果ZigBee終端接收到控制器發(fā)出的指令后,將會做出相應(yīng)的操作。
系統(tǒng)主要以短信的方式進(jìn)行遠(yuǎn)程數(shù)據(jù)傳輸。短信的收發(fā)方式有3種,分別是Block方式、Text方式和PDU方式。在國內(nèi),目前只支持PDU方式進(jìn)行傳輸[9]。在PDU方式下,短信又可以采用3種編碼方式,分別是7 bit編碼、8 bit編碼和UCS2編碼[10]。其中,7 bit編碼用于收發(fā)普通ASCLL字符,8 bit編碼用于收發(fā)數(shù)據(jù)消息,USC2編碼用于收發(fā)Unicode字符。鑒于此,及從人性化的角度出發(fā),系統(tǒng)采用了USC2編碼。
當(dāng)有短信發(fā)送時,系統(tǒng)報告的內(nèi)容主要有數(shù)據(jù)類型、數(shù)據(jù)大小和安全指標(biāo)。例如:“溫度20℃,舒適”。接收數(shù)據(jù)則主要是通過關(guān)鍵字的查找來進(jìn)行判斷。例如接收到的短信為“查詢溫度”時,系統(tǒng)首先識別關(guān)鍵字“查詢”,然后識別關(guān)鍵字“溫度”,綜合判斷就可以知道該短信的命令是要求查詢當(dāng)前的溫度值。
介紹了一種通過GSM和ZigBee構(gòu)建室內(nèi)環(huán)境監(jiān)測與采集的設(shè)計方法與過程。通過該系統(tǒng)能夠很好地對室內(nèi)環(huán)境進(jìn)行遠(yuǎn)程監(jiān)測與采集。實踐證明該系統(tǒng)測量準(zhǔn)確、穩(wěn)定性好,能夠在家居、農(nóng)業(yè)、工業(yè)等領(lǐng)域應(yīng)用和推廣。
[1]陸夢來.基于ZigBee的智能家居網(wǎng)關(guān)的設(shè)計與實現(xiàn)[D].蘇州:蘇州大學(xué),2013.
[2]鄒恩,霍慶,黃浩揚(yáng),等.基于GSM網(wǎng)絡(luò)的遠(yuǎn)程遙控空氣開關(guān)系統(tǒng)[J].自動化與儀表,2014,29(6):27-30.
[3]閆偉,郝衛(wèi)東,陳志丹,等.基于ZigBee技術(shù)的智能家居系統(tǒng)研究與設(shè)計[J].微型機(jī)與應(yīng)用,2014,33(16):45-46.
[4]李陽輝.基于STM32和GSM的溫度遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計[J].自動化與儀器儀表,2015(1):56-59.
[5]陳啟軍,余有靈,張偉,等.嵌入式系統(tǒng)及其應(yīng)用[M].上海:同濟(jì)大學(xué)出版社,2011.
[6]張文梅.基于ZigBee的智能家居監(jiān)控系統(tǒng)設(shè)計[J].計算機(jī)應(yīng)用與軟件,2015,32(3):313-316.
[7]王龍山,馬珺.基于物聯(lián)網(wǎng)的家居綜合監(jiān)測系統(tǒng)[J].電子技術(shù)應(yīng)用,2013,39(2):78-81.
[8]吳昌東,袁紅兵,戴俊源.基于STM32與GSM的汽車報警系統(tǒng)設(shè)計[J].機(jī)械制造與自動化,2014,43(4):202-205.
[9]翟順,王衛(wèi)紅,張衎,等.基于SIM900A的物聯(lián)網(wǎng)短信報警系統(tǒng)[J].現(xiàn)代電子技術(shù),2012,35(5):86-89.
[10]陳亮,李汪洋,吳國樟,等.基于SMS遠(yuǎn)程監(jiān)控系統(tǒng)[J].計算機(jī)科學(xué),2011,38(10A):421-422.