,,
(1.西安航天自動化股份有限公司,陜西 西安 710065;2.羅克韋爾自動化(中國)有限公司,陜西 西安 710075)
GSM的無線網網關設計
李墨翰1,張建奇1,黨洪濤2
(1.西安航天自動化股份有限公司,陜西 西安 710065;2.羅克韋爾自動化(中國)有限公司,陜西 西安 710075)
針對智能家居、環境監測等的實際要求,設計了一種遠距離通訊的無線傳感器網網關。硬件上使用了CC2530外接CC2591為無線傳感網絡端,GPRS模塊M35為移動網絡通信端,ATmega128A單片機作為協議轉換單元。利用AT指令集、Z-Stack協議棧等軟件,完成了從移動網絡到無線傳感網絡的數據傳輸。通過網關可實現移動手持設備到無線傳感網絡各個終端的查詢、控制以及報警等功能。
GSM;ZigBee;單片機;網關;短信
隨著物聯網技術的興起,無線技術開始越來越受到人們的重視,ZigBee是一種新興的近距離、低復雜度、低功耗、低數據速率和低成本的無線網絡技術,主要用于近距離無線連接。而GSM網絡通信的成熟技術,使數據能夠跨越地域限制地傳輸到遠程用戶監控端。基于GSM網絡的工業物聯網網關設備,將近距離的ZigBee無線通信技術與遠距離GSM無線通信技術有機結合,實現了小范圍的分散數據點到遠距離控制中心或移動設備的控制監視功能,能夠廣泛應用在農業物聯網[1]、智能家居[2]等場合。本網關具有結構簡單、工作穩定可靠、功耗低和成本低等特點[3],符合物聯網發展方向。
GSM無線網網關能夠智能管理ZigBee無線終端,將終端上的傳感器信息或報警信息通過GSM網,以發短信的方式,發送到遠程控制中心或者移動設備上,還可以通過短信的方式接收指令,并對ZigBee無線終端進行控制或管理。GSM的無線網系統如圖1所示。

圖1 系統結構
GSM無線網網關硬件主要由ZigBee模塊、主控模塊、GSM通信模塊、時鐘模塊、存儲模塊以及供電模塊構成。
ZigBee模塊核心采用TI公司的CC2530及CC2591來構成,網關中的ZigBee模塊在無線網中扮演協調器角色[4],實現了無線網絡的組網管理以及數據采集的工作[5]。
主控模塊使用了Atmel公司的8位單片機ATmega128A;GSM通信模塊使用集成模塊M35,通過UART接口和單片機通信;時鐘模塊使用DS1302芯片外加紐扣電池,保證了系統時鐘不會因掉電而丟失,通過模擬I2C接口和單片機通信;存儲模塊使用了1GB的SD卡,通過SPI接口和單片機相連。電源模塊使用了NI的LM25575芯片,將24 V的輸入電壓轉換成5V,供系統使用。
軟件分為4個部分:GSM網短信收發控制部分,ZigBee無線網絡管理,時鐘及日志,網絡數據收發處理部分。
3.1 數據收發處理
一個GSM網關組成的網絡可以存在多個終端節點,并且每個終端節點會以一定的頻率向網關傳遞數據信息。因此,網關的ZigBee協調器,需要以較高的頻率及速率處理來自每個終端節點的數據,并且判斷其是否需要發送短信。
當協調器接收到終端節點的數據后,數據不經任何處理就傳送給ATmega128單片機,由ATmega128單片機對數據進行分析處理。這樣,協調器只負責ZigBee無線網絡的組網和維護工作,從而提高了協調器對無線數據的響應速度。
GSM無線網關軟件采用前后臺設計的方法,其中,前臺程序,即中斷處理程序將接收到的ZigBee模塊透傳數據,以及短信命令,進行處理后把結果提交到后臺;后臺程序,即程序的主循環部分,負責接收由前臺程序傳送的消息,并且作進一步的處理。
在發短信時,為了避免GSM模塊發送短信速度較慢帶來的消息覆蓋問題,設計中采了多緩沖區機制。為前臺傳遞的短信等待、日志消息和短信命令3種類型的消息,建立了各自獨立的消息隊列,這樣可以保證消息的發送不會被覆蓋耽誤,從而確保了系統的可靠性與穩定性。消息隊列采用FIFO的方式。
在收到用戶的短信時,命令會發送到無線終端網絡的指定終端,并且根據反饋信息短信回復給用戶。短信命令隊列每一條消息都有2種狀態,即待下發和已下發,程序會對已下發的命令進行定時掃描,當回復超時時會給用戶發送報錯短信。
根據以上設計,主循環程序中只要不斷檢測3個隊列的長度是否不為零,即表示隊列中有需要發短信,需要記錄日志的消息或者需要發送給ZigBee無線終端網絡的命令。在GSM網關程序主循環中不斷檢測隊列長度,當隊列長度不為零時,取出隊列元素進行相應操作,提高了系統的可用性。
GSM網關主循環程序中3個隊列處理過程類似,其中處理短信隊列的流程如圖2所示。
3.2 短信收發
GSM網關短信模塊的硬件主要由上海移遠M35GSM模塊組成,外加SIM卡插槽,用來安裝手機SIM卡。
M35GSM模塊支持的協議包括PPP,TCP/IP,UDP,FTP和HTTP等。
GSM網關軟件主要通過串口與M35模塊進行AT指令的收發[6-7]。
每當前臺程序檢測到需要短信發送的信息(如報警信息、查詢信息和指令回復等)時,便會向短信等待隊列和日志隊列中插入1條信息。
插入日志隊列及短信隊列的信息是相同的,但檢測日志隊列長度的過程與檢測短信隊列的過程有所區別,基于以下考慮:由于短信需要通過串口向M35模塊發送AT指令,相對于寫日志的過程而言,寫日志是通過SPI高速總線完成的,所以寫日志的速度明顯會比發送短信的速度要快。因此,本軟件在主循環中進行了優化,在處理每一條短信等待隊列信息的同時,會處理日志隊列長度的一半數據的日志請求,以最大限度地提高系統的響應速度。
短信的發送需要設置短信的字符集格式、編碼和接收模式等參數,在設置完畢后,需要向GSM模塊寫入接收短信的手機號碼以及短信內容,短信內容采用Unicde編碼,以實現中文短信的發送[8]。
為了最大限度地提高系統的并行響應速度,短信接收軟件同樣采用前后臺方式,即程序不會在短信發送的3~5s之間同步等待,中斷接收到短信及短信成功發送報告時,消息數據交由后臺程序處理。
3.3 時鐘及日志
時鐘模塊硬件部分采用DS1302芯片實現,和ATmega128通過模擬SPI口的方式通信。
時鐘模塊軟件部分為2步進行:
a.初始化實時時鐘,對DS1302的相應寄存器寫入現在的時刻。
b.產生日志信息時讀取當前時鐘值,DS1302讀取的時間為字符串。
網關使用SD作為日志信息的存儲介質,為了方便使用PC機讀寫SD卡,網關在SD卡上實現了FAT32文件系統。FatFs是一個為小型嵌入式系統設計的通用FAT文件系統模塊。FatFs的編寫遵循ANSIC,并且完全與磁盤I/O層分開。因此,它獨立于硬件架構,可以被嵌入到低成本的微控制器中。
在使用時,首先,要對FatFs文件系統的底層SPI驅動進行重寫,其次,需要根據使用的SD卡類型及標準,編寫SD卡初始化及復位代碼。系統所采用的SD卡遵循SD2.0標準,因此,根據SD2.0的相關標準定義。SD卡的初始化的代碼為:
void SPI_Init(void)
{
SPI_PORT = (1<< SPI_SS) | (1< SPI_DDR = (1<< SPI_SS) | (1< } FatFs提供了讀寫接口,用戶可以使用這些接口進行相關FAT32命令操作,包括掛載工作區、創建文件和讀寫文件等[9]。 日志記錄主要完成對報警信息的實時本地記錄,方便用戶作日后查看參考。日志記錄需要讀取當前時間,并把發送的短信連同時間信息一同寫入SD卡的指定文件中,程序流程如圖3所示。 圖3 寫日志流程 FatFs調用接口如下: f_write(&logfl,buf,strlen(buf),&nwrite); f_sync(&logfl); f_write用于寫入數據,f_sync用于同步數據,將數據即時刷新到硬件中。 3.4 ZigBee無線網絡 ZigBee無線網絡共有3種設備類型,分別是協調器、路由器和無線終端節點。協調器負責建立網絡以及允許節點加入網絡、分配短地址等;路由器負責路由數據,路由器沒有定時休眠功能;終端節點只有I/O功能,具備定時休眠能力。 ZigBee無線網絡協議通過TI的Z-Satck協議棧來實現,無線網絡拓撲采用網狀網結構。Z-Stack采用操作系統的思想來構建,使用事件輪詢機制,當各層初始化之后,系統進入低功耗模式,當事件發生時,喚醒系統,開始進入中斷處理事件,結束后繼續進入低功耗模式。如果同時有幾個事件發生,判斷優先級,逐次處理事件。這種軟件構架可以降級系統的功耗。同時只需要編寫應用層程序,就可以實現ZigBee無線網絡的應用開發,而不需要將過多的精力投入到網絡協議的具體細節中[10]。 GSM無線網網關與無線終端通過以下數據結構組織通信數據: union RfRx_t{ uint8RxBuf[RF_MAX_PAYLOAD_SIZE];//802.15.4標準最大有效數據長度 struct RFRXBUF{ //幀類型。0表示命令幀;1表示數據幀;2表示應答幀 uint8frameType; //終端節點編號 uint8stationNum; //終端節點類型 uint8stationType; //終端節點狀態 uint8stationStatus; //數據類型 uint8dataType; //有效數據總長度,應答幀數據長度為0 uint8dataLength; //有效數據緩沖區,低位對齊,最后一字節存儲SUM校驗碼 uint8data[RF_MAX_PAYLOAD_SIZE-6]; }RXDATA; }RfRx; 系統上電后,將根據程序配置數據,在指定的信道中,建立網絡號為PANID的網絡,部分源代碼如下: -DDEFAULT_CHANLIST=0X04000000//channel 26 -DZDAPP_CONFIG_PAN_ID=0X0022//PANID:0x0022 此時,當網絡中有無線終端節點上電,只要和網關有相同的信道號與網絡標識號,無線終端節點就會自動加入到該網絡。若加入網絡成功,會觸發協議棧中的ZDO_STATE_CHANGE消息,通過應用程序在應用層接收到該消息,確認后便可以正式開始無線終端的工作流程。 當無線終端加入網絡后,需要先與協調器實施綁定。綁定過程在協議棧應用層實現,無線終端讀取自身的撥碼值與短地址,按照上述協議數據結構,封裝成命令幀發送給協調器,部分源代碼如下: ScrSaddr=NLME_GetShortAddr();//取得短地址 Station_id=get_stationID();//取得站號 BuildMsg(ScrSaddr,Station_id);//封裝命令幀 SendData(0x0000,RfTx.TxBuf,2+PACKET_WITHOUT_DATA+1);//向協調器報告 DeviceStatus=WAIT_CMD_CONFIRM;//進入狀態機的WAIT_CMD_CONFIRM狀態 //開啟命令幀應答超時定時器 osal_start_timerEx(App_TaskID,WAIT_CONFIRM_MS_EVT,WAIT_CONFIRM_TIMEOUT); 協調器接收到命令幀,經確認無誤后,在本地RAM中記錄站號與短地址的對應關系,并回復命令應答幀給相應的無線終端節點。至此,無線終端節點的綁定過程結束。如當協調器有控制數據需要下發時,只需要先查表,根據站號查出對應的短地址,便可發送至目的無線終端節點。 經實際使用檢測,GSM無線網網關可以通過短信實現遠距離信息傳輸、控制等功能。網關的發射功率、接受靈敏度、通信距離、誤包率和速度滿足現場使用需求。系統具有低功耗、方便布置和編程使用簡單可靠等優點,隨著物聯網技術的興起和發展,在智能家居、農業物聯網方面具有良好的應用前景。 [1] 孫丘偉,余 臻.基于GSM的短信報警收發平臺設計[J].福州大學學報:自然科學版,2008,36(增刊1):44-48. [2] 沈兆軍,毛 敏.利用GSM短信息業務實現智能家居[J].微計算機信息,2006,22(3):211-213,216. [3] 宣彩平,王 皓,鄒國良.利用GSM無線模塊發送短消息[J].計算機應用,2004,24(5):148-150. [4] 杜煥軍,張維勇,劉國田.ZigBee網絡的路由協議研究[J].合肥工業大學學報:自然科學版,2008,31(10):1617-1621. [5] 楊 順,章 毅,陶 康.基于ZigBee和以太網的無線網關設計[J].計算機系統應用,2010,19(1):194-197. [6] 邢建春,方虎生,王 平,等.基于GSM通信技術的無線測控系統設計[J].計算機測量與控制,2004,12(4):345-348. [7] 馬士寶,張國玉,孫向陽,等.基于GSM模塊的無線報警系統設計[J].長春理工大學學報:自然科學版,2009,32(1):51-53. [8] 梁湖輝,張 峰,常 沖,等.基于ZigBee的變電站監測報警系統[J].電力系統保護與控制,2010,38(12):121-124. [9] 張高群.電力系統應用ZigBee技術初步研究[J].電子測量技術,2008,31(11):83-86,106. [10] 何杏宇,張 浩,彭道剛.ZigBee技術在工業環境監測系統中的應用研究[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-),男,陜西西安人,工程師,主要從事電子線路板設計及物聯網技術的研究工作;張建奇(1975-),男,陜西西安人,碩士,高級工程師,主要從事物聯網與自動控制技術的研究工作;黨洪濤(1980-),男,陜西西安人,工程師,主要從事自動控制技術的研究工作。
4 結束語