,,
(1.西安航天自動(dòng)化股份有限公司,陜西 西安 710065;2.羅克韋爾自動(dòng)化(中國(guó))有限公司,陜西 西安 710075)
GSM的無(wú)線網(wǎng)網(wǎng)關(guān)設(shè)計(jì)
李墨翰1,張建奇1,黨洪濤2
(1.西安航天自動(dòng)化股份有限公司,陜西 西安 710065;2.羅克韋爾自動(dòng)化(中國(guó))有限公司,陜西 西安 710075)
針對(duì)智能家居、環(huán)境監(jiān)測(cè)等的實(shí)際要求,設(shè)計(jì)了一種遠(yuǎn)距離通訊的無(wú)線傳感器網(wǎng)網(wǎng)關(guān)。硬件上使用了CC2530外接CC2591為無(wú)線傳感網(wǎng)絡(luò)端,GPRS模塊M35為移動(dòng)網(wǎng)絡(luò)通信端,ATmega128A單片機(jī)作為協(xié)議轉(zhuǎn)換單元。利用AT指令集、Z-Stack協(xié)議棧等軟件,完成了從移動(dòng)網(wǎng)絡(luò)到無(wú)線傳感網(wǎng)絡(luò)的數(shù)據(jù)傳輸。通過(guò)網(wǎng)關(guān)可實(shí)現(xiàn)移動(dòng)手持設(shè)備到無(wú)線傳感網(wǎng)絡(luò)各個(gè)終端的查詢、控制以及報(bào)警等功能。
GSM;ZigBee;單片機(jī);網(wǎng)關(guān);短信
隨著物聯(lián)網(wǎng)技術(shù)的興起,無(wú)線技術(shù)開(kāi)始越來(lái)越受到人們的重視,ZigBee是一種新興的近距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率和低成本的無(wú)線網(wǎng)絡(luò)技術(shù),主要用于近距離無(wú)線連接。而GSM網(wǎng)絡(luò)通信的成熟技術(shù),使數(shù)據(jù)能夠跨越地域限制地傳輸?shù)竭h(yuǎn)程用戶監(jiān)控端?;贕SM網(wǎng)絡(luò)的工業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)備,將近距離的ZigBee無(wú)線通信技術(shù)與遠(yuǎn)距離GSM無(wú)線通信技術(shù)有機(jī)結(jié)合,實(shí)現(xiàn)了小范圍的分散數(shù)據(jù)點(diǎn)到遠(yuǎn)距離控制中心或移動(dòng)設(shè)備的控制監(jiān)視功能,能夠廣泛應(yīng)用在農(nóng)業(yè)物聯(lián)網(wǎng)[1]、智能家居[2]等場(chǎng)合。本網(wǎng)關(guān)具有結(jié)構(gòu)簡(jiǎn)單、工作穩(wěn)定可靠、功耗低和成本低等特點(diǎn)[3],符合物聯(lián)網(wǎng)發(fā)展方向。
GSM無(wú)線網(wǎng)網(wǎng)關(guān)能夠智能管理ZigBee無(wú)線終端,將終端上的傳感器信息或報(bào)警信息通過(guò)GSM網(wǎng),以發(fā)短信的方式,發(fā)送到遠(yuǎn)程控制中心或者移動(dòng)設(shè)備上,還可以通過(guò)短信的方式接收指令,并對(duì)ZigBee無(wú)線終端進(jìn)行控制或管理。GSM的無(wú)線網(wǎng)系統(tǒng)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)
GSM無(wú)線網(wǎng)網(wǎng)關(guān)硬件主要由ZigBee模塊、主控模塊、GSM通信模塊、時(shí)鐘模塊、存儲(chǔ)模塊以及供電模塊構(gòu)成。
ZigBee模塊核心采用TI公司的CC2530及CC2591來(lái)構(gòu)成,網(wǎng)關(guān)中的ZigBee模塊在無(wú)線網(wǎng)中扮演協(xié)調(diào)器角色[4],實(shí)現(xiàn)了無(wú)線網(wǎng)絡(luò)的組網(wǎng)管理以及數(shù)據(jù)采集的工作[5]。
主控模塊使用了Atmel公司的8位單片機(jī)ATmega128A;GSM通信模塊使用集成模塊M35,通過(guò)UART接口和單片機(jī)通信;時(shí)鐘模塊使用DS1302芯片外加紐扣電池,保證了系統(tǒng)時(shí)鐘不會(huì)因掉電而丟失,通過(guò)模擬I2C接口和單片機(jī)通信;存儲(chǔ)模塊使用了1GB的SD卡,通過(guò)SPI接口和單片機(jī)相連。電源模塊使用了NI的LM25575芯片,將24 V的輸入電壓轉(zhuǎn)換成5V,供系統(tǒng)使用。
軟件分為4個(gè)部分:GSM網(wǎng)短信收發(fā)控制部分,ZigBee無(wú)線網(wǎng)絡(luò)管理,時(shí)鐘及日志,網(wǎng)絡(luò)數(shù)據(jù)收發(fā)處理部分。
3.1 數(shù)據(jù)收發(fā)處理
一個(gè)GSM網(wǎng)關(guān)組成的網(wǎng)絡(luò)可以存在多個(gè)終端節(jié)點(diǎn),并且每個(gè)終端節(jié)點(diǎn)會(huì)以一定的頻率向網(wǎng)關(guān)傳遞數(shù)據(jù)信息。因此,網(wǎng)關(guān)的ZigBee協(xié)調(diào)器,需要以較高的頻率及速率處理來(lái)自每個(gè)終端節(jié)點(diǎn)的數(shù)據(jù),并且判斷其是否需要發(fā)送短信。
當(dāng)協(xié)調(diào)器接收到終端節(jié)點(diǎn)的數(shù)據(jù)后,數(shù)據(jù)不經(jīng)任何處理就傳送給ATmega128單片機(jī),由ATmega128單片機(jī)對(duì)數(shù)據(jù)進(jìn)行分析處理。這樣,協(xié)調(diào)器只負(fù)責(zé)ZigBee無(wú)線網(wǎng)絡(luò)的組網(wǎng)和維護(hù)工作,從而提高了協(xié)調(diào)器對(duì)無(wú)線數(shù)據(jù)的響應(yīng)速度。
GSM無(wú)線網(wǎng)關(guān)軟件采用前后臺(tái)設(shè)計(jì)的方法,其中,前臺(tái)程序,即中斷處理程序?qū)⒔邮盏降腪igBee模塊透?jìng)鲾?shù)據(jù),以及短信命令,進(jìn)行處理后把結(jié)果提交到后臺(tái);后臺(tái)程序,即程序的主循環(huán)部分,負(fù)責(zé)接收由前臺(tái)程序傳送的消息,并且作進(jìn)一步的處理。
在發(fā)短信時(shí),為了避免GSM模塊發(fā)送短信速度較慢帶來(lái)的消息覆蓋問(wèn)題,設(shè)計(jì)中采了多緩沖區(qū)機(jī)制。為前臺(tái)傳遞的短信等待、日志消息和短信命令3種類型的消息,建立了各自獨(dú)立的消息隊(duì)列,這樣可以保證消息的發(fā)送不會(huì)被覆蓋耽誤,從而確保了系統(tǒng)的可靠性與穩(wěn)定性。消息隊(duì)列采用FIFO的方式。
在收到用戶的短信時(shí),命令會(huì)發(fā)送到無(wú)線終端網(wǎng)絡(luò)的指定終端,并且根據(jù)反饋信息短信回復(fù)給用戶。短信命令隊(duì)列每一條消息都有2種狀態(tài),即待下發(fā)和已下發(fā),程序會(huì)對(duì)已下發(fā)的命令進(jìn)行定時(shí)掃描,當(dāng)回復(fù)超時(shí)時(shí)會(huì)給用戶發(fā)送報(bào)錯(cuò)短信。
根據(jù)以上設(shè)計(jì),主循環(huán)程序中只要不斷檢測(cè)3個(gè)隊(duì)列的長(zhǎng)度是否不為零,即表示隊(duì)列中有需要發(fā)短信,需要記錄日志的消息或者需要發(fā)送給ZigBee無(wú)線終端網(wǎng)絡(luò)的命令。在GSM網(wǎng)關(guān)程序主循環(huán)中不斷檢測(cè)隊(duì)列長(zhǎng)度,當(dāng)隊(duì)列長(zhǎng)度不為零時(shí),取出隊(duì)列元素進(jìn)行相應(yīng)操作,提高了系統(tǒng)的可用性。
GSM網(wǎng)關(guān)主循環(huán)程序中3個(gè)隊(duì)列處理過(guò)程類似,其中處理短信隊(duì)列的流程如圖2所示。
3.2 短信收發(fā)
GSM網(wǎng)關(guān)短信模塊的硬件主要由上海移遠(yuǎn)M35GSM模塊組成,外加SIM卡插槽,用來(lái)安裝手機(jī)SIM卡。
M35GSM模塊支持的協(xié)議包括PPP,TCP/IP,UDP,F(xiàn)TP和HTTP等。
GSM網(wǎng)關(guān)軟件主要通過(guò)串口與M35模塊進(jìn)行AT指令的收發(fā)[6-7]。
每當(dāng)前臺(tái)程序檢測(cè)到需要短信發(fā)送的信息(如報(bào)警信息、查詢信息和指令回復(fù)等)時(shí),便會(huì)向短信等待隊(duì)列和日志隊(duì)列中插入1條信息。
插入日志隊(duì)列及短信隊(duì)列的信息是相同的,但檢測(cè)日志隊(duì)列長(zhǎng)度的過(guò)程與檢測(cè)短信隊(duì)列的過(guò)程有所區(qū)別,基于以下考慮:由于短信需要通過(guò)串口向M35模塊發(fā)送AT指令,相對(duì)于寫(xiě)日志的過(guò)程而言,寫(xiě)日志是通過(guò)SPI高速總線完成的,所以寫(xiě)日志的速度明顯會(huì)比發(fā)送短信的速度要快。因此,本軟件在主循環(huán)中進(jìn)行了優(yōu)化,在處理每一條短信等待隊(duì)列信息的同時(shí),會(huì)處理日志隊(duì)列長(zhǎng)度的一半數(shù)據(jù)的日志請(qǐng)求,以最大限度地提高系統(tǒng)的響應(yīng)速度。
短信的發(fā)送需要設(shè)置短信的字符集格式、編碼和接收模式等參數(shù),在設(shè)置完畢后,需要向GSM模塊寫(xiě)入接收短信的手機(jī)號(hào)碼以及短信內(nèi)容,短信內(nèi)容采用Unicde編碼,以實(shí)現(xiàn)中文短信的發(fā)送[8]。
為了最大限度地提高系統(tǒng)的并行響應(yīng)速度,短信接收軟件同樣采用前后臺(tái)方式,即程序不會(huì)在短信發(fā)送的3~5s之間同步等待,中斷接收到短信及短信成功發(fā)送報(bào)告時(shí),消息數(shù)據(jù)交由后臺(tái)程序處理。
3.3 時(shí)鐘及日志
時(shí)鐘模塊硬件部分采用DS1302芯片實(shí)現(xiàn),和ATmega128通過(guò)模擬SPI口的方式通信。
時(shí)鐘模塊軟件部分為2步進(jìn)行:
a.初始化實(shí)時(shí)時(shí)鐘,對(duì)DS1302的相應(yīng)寄存器寫(xiě)入現(xiàn)在的時(shí)刻。
b.產(chǎn)生日志信息時(shí)讀取當(dāng)前時(shí)鐘值,DS1302讀取的時(shí)間為字符串。
網(wǎng)關(guān)使用SD作為日志信息的存儲(chǔ)介質(zhì),為了方便使用PC機(jī)讀寫(xiě)SD卡,網(wǎng)關(guān)在SD卡上實(shí)現(xiàn)了FAT32文件系統(tǒng)。FatFs是一個(gè)為小型嵌入式系統(tǒng)設(shè)計(jì)的通用FAT文件系統(tǒng)模塊。FatFs的編寫(xiě)遵循ANSIC,并且完全與磁盤(pán)I/O層分開(kāi)。因此,它獨(dú)立于硬件架構(gòu),可以被嵌入到低成本的微控制器中。
在使用時(shí),首先,要對(duì)FatFs文件系統(tǒng)的底層SPI驅(qū)動(dòng)進(jìn)行重寫(xiě),其次,需要根據(jù)使用的SD卡類型及標(biāo)準(zhǔn),編寫(xiě)SD卡初始化及復(fù)位代碼。系統(tǒng)所采用的SD卡遵循SD2.0標(biāo)準(zhǔn),因此,根據(jù)SD2.0的相關(guān)標(biāo)準(zhǔn)定義。SD卡的初始化的代碼為:
void SPI_Init(void)
{
SPI_PORT = (1<< SPI_SS) | (1< SPI_DDR = (1<< SPI_SS) | (1< } FatFs提供了讀寫(xiě)接口,用戶可以使用這些接口進(jìn)行相關(guān)FAT32命令操作,包括掛載工作區(qū)、創(chuàng)建文件和讀寫(xiě)文件等[9]。 日志記錄主要完成對(duì)報(bào)警信息的實(shí)時(shí)本地記錄,方便用戶作日后查看參考。日志記錄需要讀取當(dāng)前時(shí)間,并把發(fā)送的短信連同時(shí)間信息一同寫(xiě)入SD卡的指定文件中,程序流程如圖3所示。 圖3 寫(xiě)日志流程 FatFs調(diào)用接口如下: f_write(&logfl,buf,strlen(buf),&nwrite); f_sync(&logfl); f_write用于寫(xiě)入數(shù)據(jù),f_sync用于同步數(shù)據(jù),將數(shù)據(jù)即時(shí)刷新到硬件中。 3.4 ZigBee無(wú)線網(wǎng)絡(luò) ZigBee無(wú)線網(wǎng)絡(luò)共有3種設(shè)備類型,分別是協(xié)調(diào)器、路由器和無(wú)線終端節(jié)點(diǎn)。協(xié)調(diào)器負(fù)責(zé)建立網(wǎng)絡(luò)以及允許節(jié)點(diǎn)加入網(wǎng)絡(luò)、分配短地址等;路由器負(fù)責(zé)路由數(shù)據(jù),路由器沒(méi)有定時(shí)休眠功能;終端節(jié)點(diǎn)只有I/O功能,具備定時(shí)休眠能力。 ZigBee無(wú)線網(wǎng)絡(luò)協(xié)議通過(guò)TI的Z-Satck協(xié)議棧來(lái)實(shí)現(xiàn),無(wú)線網(wǎng)絡(luò)拓?fù)洳捎镁W(wǎng)狀網(wǎng)結(jié)構(gòu)。Z-Stack采用操作系統(tǒng)的思想來(lái)構(gòu)建,使用事件輪詢機(jī)制,當(dāng)各層初始化之后,系統(tǒng)進(jìn)入低功耗模式,當(dāng)事件發(fā)生時(shí),喚醒系統(tǒng),開(kāi)始進(jìn)入中斷處理事件,結(jié)束后繼續(xù)進(jìn)入低功耗模式。如果同時(shí)有幾個(gè)事件發(fā)生,判斷優(yōu)先級(jí),逐次處理事件。這種軟件構(gòu)架可以降級(jí)系統(tǒng)的功耗。同時(shí)只需要編寫(xiě)應(yīng)用層程序,就可以實(shí)現(xiàn)ZigBee無(wú)線網(wǎng)絡(luò)的應(yīng)用開(kāi)發(fā),而不需要將過(guò)多的精力投入到網(wǎng)絡(luò)協(xié)議的具體細(xì)節(jié)中[10]。 GSM無(wú)線網(wǎng)網(wǎng)關(guān)與無(wú)線終端通過(guò)以下數(shù)據(jù)結(jié)構(gòu)組織通信數(shù)據(jù): union RfRx_t{ uint8RxBuf[RF_MAX_PAYLOAD_SIZE];//802.15.4標(biāo)準(zhǔn)最大有效數(shù)據(jù)長(zhǎng)度 struct RFRXBUF{ //幀類型。0表示命令幀;1表示數(shù)據(jù)幀;2表示應(yīng)答幀 uint8frameType; //終端節(jié)點(diǎn)編號(hào) uint8stationNum; //終端節(jié)點(diǎn)類型 uint8stationType; //終端節(jié)點(diǎn)狀態(tài) uint8stationStatus; //數(shù)據(jù)類型 uint8dataType; //有效數(shù)據(jù)總長(zhǎng)度,應(yīng)答幀數(shù)據(jù)長(zhǎng)度為0 uint8dataLength; //有效數(shù)據(jù)緩沖區(qū),低位對(duì)齊,最后一字節(jié)存儲(chǔ)SUM校驗(yàn)碼 uint8data[RF_MAX_PAYLOAD_SIZE-6]; }RXDATA; }RfRx; 系統(tǒng)上電后,將根據(jù)程序配置數(shù)據(jù),在指定的信道中,建立網(wǎng)絡(luò)號(hào)為PANID的網(wǎng)絡(luò),部分源代碼如下: -DDEFAULT_CHANLIST=0X04000000//channel 26 -DZDAPP_CONFIG_PAN_ID=0X0022//PANID:0x0022 此時(shí),當(dāng)網(wǎng)絡(luò)中有無(wú)線終端節(jié)點(diǎn)上電,只要和網(wǎng)關(guān)有相同的信道號(hào)與網(wǎng)絡(luò)標(biāo)識(shí)號(hào),無(wú)線終端節(jié)點(diǎn)就會(huì)自動(dòng)加入到該網(wǎng)絡(luò)。若加入網(wǎng)絡(luò)成功,會(huì)觸發(fā)協(xié)議棧中的ZDO_STATE_CHANGE消息,通過(guò)應(yīng)用程序在應(yīng)用層接收到該消息,確認(rèn)后便可以正式開(kāi)始無(wú)線終端的工作流程。 當(dāng)無(wú)線終端加入網(wǎng)絡(luò)后,需要先與協(xié)調(diào)器實(shí)施綁定。綁定過(guò)程在協(xié)議棧應(yīng)用層實(shí)現(xiàn),無(wú)線終端讀取自身的撥碼值與短地址,按照上述協(xié)議數(shù)據(jù)結(jié)構(gòu),封裝成命令幀發(fā)送給協(xié)調(diào)器,部分源代碼如下: ScrSaddr=NLME_GetShortAddr();//取得短地址 Station_id=get_stationID();//取得站號(hào) BuildMsg(ScrSaddr,Station_id);//封裝命令幀 SendData(0x0000,RfTx.TxBuf,2+PACKET_WITHOUT_DATA+1);//向協(xié)調(diào)器報(bào)告 DeviceStatus=WAIT_CMD_CONFIRM;//進(jìn)入狀態(tài)機(jī)的WAIT_CMD_CONFIRM狀態(tài) //開(kāi)啟命令幀應(yīng)答超時(shí)定時(shí)器 osal_start_timerEx(App_TaskID,WAIT_CONFIRM_MS_EVT,WAIT_CONFIRM_TIMEOUT); 協(xié)調(diào)器接收到命令幀,經(jīng)確認(rèn)無(wú)誤后,在本地RAM中記錄站號(hào)與短地址的對(duì)應(yīng)關(guān)系,并回復(fù)命令應(yīng)答幀給相應(yīng)的無(wú)線終端節(jié)點(diǎn)。至此,無(wú)線終端節(jié)點(diǎn)的綁定過(guò)程結(jié)束。如當(dāng)協(xié)調(diào)器有控制數(shù)據(jù)需要下發(fā)時(shí),只需要先查表,根據(jù)站號(hào)查出對(duì)應(yīng)的短地址,便可發(fā)送至目的無(wú)線終端節(jié)點(diǎn)。 經(jīng)實(shí)際使用檢測(cè),GSM無(wú)線網(wǎng)網(wǎng)關(guān)可以通過(guò)短信實(shí)現(xiàn)遠(yuǎn)距離信息傳輸、控制等功能。網(wǎng)關(guān)的發(fā)射功率、接受靈敏度、通信距離、誤包率和速度滿足現(xiàn)場(chǎng)使用需求。系統(tǒng)具有低功耗、方便布置和編程使用簡(jiǎn)單可靠等優(yōu)點(diǎn),隨著物聯(lián)網(wǎng)技術(shù)的興起和發(fā)展,在智能家居、農(nóng)業(yè)物聯(lián)網(wǎng)方面具有良好的應(yīng)用前景。 [1] 孫丘偉,余 臻.基于GSM的短信報(bào)警收發(fā)平臺(tái)設(shè)計(jì)[J].福州大學(xué)學(xué)報(bào):自然科學(xué)版,2008,36(增刊1):44-48. [2] 沈兆軍,毛 敏.利用GSM短信息業(yè)務(wù)實(shí)現(xiàn)智能家居[J].微計(jì)算機(jī)信息,2006,22(3):211-213,216. [3] 宣彩平,王 皓,鄒國(guó)良.利用GSM無(wú)線模塊發(fā)送短消息[J].計(jì)算機(jī)應(yīng)用,2004,24(5):148-150. [4] 杜煥軍,張維勇,劉國(guó)田.ZigBee網(wǎng)絡(luò)的路由協(xié)議研究[J].合肥工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2008,31(10):1617-1621. [5] 楊 順,章 毅,陶 康.基于ZigBee和以太網(wǎng)的無(wú)線網(wǎng)關(guān)設(shè)計(jì)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,19(1):194-197. [6] 邢建春,方虎生,王 平,等.基于GSM通信技術(shù)的無(wú)線測(cè)控系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2004,12(4):345-348. [7] 馬士寶,張國(guó)玉,孫向陽(yáng),等.基于GSM模塊的無(wú)線報(bào)警系統(tǒng)設(shè)計(jì)[J].長(zhǎng)春理工大學(xué)學(xué)報(bào):自然科學(xué)版,2009,32(1):51-53. [8] 梁湖輝,張 峰,常 沖,等.基于ZigBee的變電站監(jiān)測(cè)報(bào)警系統(tǒng)[J].電力系統(tǒng)保護(hù)與控制,2010,38(12):121-124. [9] 張高群.電力系統(tǒng)應(yīng)用ZigBee技術(shù)初步研究[J].電子測(cè)量技術(shù),2008,31(11):83-86,106. [10] 何杏宇,張 浩,彭道剛.ZigBee技術(shù)在工業(yè)環(huán)境監(jiān)測(cè)系統(tǒng)中的應(yīng)用研究[J].機(jī)電一體化,2008,14(7):34-37. Design of Wireless Gateway for GSM LIMohan1,ZHANGJianqi1,DANGHongtao2 (1.Xi’an Aerospace Automation Co.,Ltd.,Xi’an 710065,China;2.Rockwell Automation (China),Xi’an 710075,China) For the practical requirements of the smart home,environmental monitoring,a wireless sensor network gateway,which has long-range communication capability is designed.In hardware designing,CC2530and CC2591work as wireless sensor network terminal,GPRS module M35achieved communication with the mobile network,and ATmega128A is used as network protocol conversion unit.Data transmission between the mobile network and the wireless sensor network is realized by the AT command set and the Z-Stack.The inquiry,controlling and alarm ofthe wireless sensor network terminals can be achieved by the mobile device through the wireless sensor network gateway. GSM;ZigBee;MCU;gateway;SMS 2014-02-10 TP273.5 A 1001-2257(2014)10-0017-04 李墨翰(1984-),男,陜西西安人,工程師,主要從事電子線路板設(shè)計(jì)及物聯(lián)網(wǎng)技術(shù)的研究工作;張建奇(1975-),男,陜西西安人,碩士,高級(jí)工程師,主要從事物聯(lián)網(wǎng)與自動(dòng)控制技術(shù)的研究工作;黨洪濤(1980-),男,陜西西安人,工程師,主要從事自動(dòng)控制技術(shù)的研究工作。4 結(jié)束語(yǔ)