齊連眾,喻武龍,黃相杰
(北京理工大學(xué)珠海學(xué)院信息學(xué)院,廣東 珠海 519085)
目前,隨著通信網(wǎng)絡(luò)的普及以及日趨完善的城市覆蓋面積,使遠(yuǎn)程監(jiān)控民用化成為可能。研發(fā)性能優(yōu)良的遠(yuǎn)程監(jiān)控系統(tǒng)是非常具有市場價值的。遠(yuǎn)程監(jiān)控系統(tǒng)的構(gòu)建是計算機控制技術(shù)、通信技術(shù)和傳感器技術(shù)的綜合應(yīng)用,通過采用基于GPRS網(wǎng)絡(luò)的遠(yuǎn)程監(jiān)控系統(tǒng),用戶只需使用支持GPRS業(yè)務(wù)的手機或互聯(lián)網(wǎng),即可實現(xiàn)遠(yuǎn)程實時監(jiān)控。GPRS具有資源利用率高、傳輸速率高、接入時間短等特點。在遠(yuǎn)程突發(fā)性數(shù)據(jù)實時傳輸中更是具有不可比擬的優(yōu)勢,特別適合于間斷的、突發(fā)性的或頻繁的小量數(shù)據(jù)的實時終端傳輸,或偶發(fā)性大數(shù)據(jù)量的傳輸。
GPRS有效地解決了在遠(yuǎn)程圖像傳輸及GPS遠(yuǎn)程監(jiān)控系統(tǒng)中可能遇到的一系列問題,由于GPRS數(shù)據(jù)通信是按收發(fā)數(shù)據(jù)量計費,而不是按收發(fā)時間長短計費,所以客戶可以“永遠(yuǎn)在線”并可節(jié)省費用。實現(xiàn)了對下位機終端的全程、實時監(jiān)控[3]。
遠(yuǎn)程監(jiān)控終端(下位機)主要由MCU、圖像采集模塊、GPRS模塊、GPS模塊、紅外監(jiān)測模塊、外部儲存器等部件組成。外部EEPROM通過SPI串口連接MCU,用于系統(tǒng)引導(dǎo)程序裝載,參數(shù)和圖像數(shù)據(jù)等的保存。系統(tǒng)的工作過程為:上電或復(fù)位后,系統(tǒng)自動將EEPROM中的程序下載到MCU中,然后開始執(zhí)行程序。通過AVR單片機控制GPRS模塊、GPS模塊,利用移動SIM卡撥號通過GPRS網(wǎng)絡(luò)實現(xiàn)數(shù)據(jù)的無線遠(yuǎn)程傳輸,監(jiān)控中心(上位機)對收到的信息進(jìn)行處理,同時監(jiān)控中心也可通過GPRS網(wǎng)絡(luò)對監(jiān)控終端(下位機)進(jìn)行遠(yuǎn)程控制。系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
圖像捕獲單元采用GXT-M201串口JPEG彩色攝像模組,由圖像傳感器、OV528 IC及EEPROM三部分組成,支持不同分辨率可變JPEG編碼質(zhì)量設(shè)置。當(dāng)捕獲圖像后,通過JPEG算法壓縮圖像并將數(shù)據(jù)通過I2C總線存入EEPROM中,等待MCU對其調(diào)用。
圖像傳輸時序如圖2所示,RS-232單字節(jié)傳送有1個起始位,8個數(shù)據(jù)位和1個停止位組成。起始位固定為0,停止位固定為1。低位隨起始位后面先傳送。
圖2 RS-232單字節(jié)時序圖
指令字時序如圖3所示,以同步指令(AA0D00000000h)為例,1個指令由6個連續(xù)的單字節(jié)組成。
圖3 RS-232同步指令時序圖
GPRS模塊選用BenQ M22,支持GPRS CLASS4,即下行速 42.8kbps,上行速度 21.4kbps。連接為半串口形式與MCU通信。該模塊內(nèi)置TCP/IP協(xié)議,省去了外部繁瑣的編程;集成了標(biāo)準(zhǔn)的RS232接口以及SIM卡,采用AT指令集通過串口對它進(jìn)行設(shè)置[4]。
在應(yīng)用設(shè)計中,當(dāng)MCU需要通過串口與模塊進(jìn)行通訊時,可以只用3個引腳:TXD,RXD和GND。但當(dāng)需要通過模塊上網(wǎng)時,應(yīng)該盡量使用全部的串口信號引腳,包括:DTR,RTS,DCD,CTS,DCD,TXD,RXD,RI,GND。其中RI變化是表示有來電呼入,可以連到MCU的中斷引腳,或者連到MCU的其他輸入引腳供MCU查詢其狀態(tài)。另外,MCU可以利用DTR信號,使模塊工作在Slow Clocking模式。在此模式下,模塊的13MHz晶振會周期性的停振以省電,而32.768kHz的晶振正常工作,從而保證了正確日歷時鐘。要使模塊進(jìn)入 Slow Clocking模式,MCU拉高DTR,即由“ON”變?yōu)椤癘FF”就可以了,此時模塊的工作電流為4mA。要退出Slow Clocking模式,MCU拉低DTR,即由“OFF”變?yōu)椤癘N”,等待4ms后,模塊就會進(jìn)入正常工作模式。
應(yīng)用HOLUX GR-87 GPS模塊對下位機的位置狀態(tài)信息進(jìn)行采集。AVR單片機通過串口接收GPS信息,可以提取經(jīng)度、緯度、速度、時間等數(shù)據(jù)。一方面,下位機終端通過數(shù)據(jù)接口為導(dǎo)航系統(tǒng)提供GPS數(shù)據(jù);另一方面,將數(shù)據(jù)儲存在外部存儲器中或通過GPRS模塊發(fā)送到遠(yuǎn)程監(jiān)控中心服務(wù)器,使得監(jiān)控中心能實時得到所有下位機的位置狀態(tài)信息。
GPS數(shù)據(jù)采用中斷方式接收,首先是通過串行口發(fā)送控制命令完成GPS采樣周期的設(shè)置、GPS輸出數(shù)據(jù)選擇、通訊波特率設(shè)置等。然后通過串行口接收GPS定位信息。這里GPS輸出數(shù)據(jù)采用NMEA-0183(Ver2.0)格式,輸出數(shù)據(jù)為多組,在本系統(tǒng)中,選取其中一組GPRMC數(shù)據(jù)即可滿足設(shè)計要求。MCU對所接收的GPS信息進(jìn)行解析,獲得經(jīng)度、緯度、速度、方向、時間等數(shù)據(jù),存入緩沖區(qū),等待對其調(diào)用。
初始化格式:$PGRMI$GPALM、<1>、<2>、<3>、<4>、<5>、<6>、*hh<CR> <LF>
<1>緯度ddmm.mmm格式(初始化必須被寫入)
<3>經(jīng)度ddmm.mmm格式(初始化必須被寫入)
<5>當(dāng)前UTC日期,kkmm yy格式
<6>當(dāng)前UTC時間hhmm ss格式
位置信息格式:$GPGGA、<1>、<2>、<3>、<4>、<5>、<6>、<7>、<8>、<9>、M,<11>、<12>*hh<CR><LF>
<2>經(jīng)度dd mm mmmm格式(非0)
<4>緯度ddd mm mmmm格式(非0)
<6>GPS狀態(tài)批示0—未定位1—無差分定位信息 2—帶差分定位信息
<8>精度百分比
<9>海平面高度
<10>*大地隨球面相對海平面的高度
<11>差分GPS信息
系統(tǒng)啟動時自動執(zhí)行存放在EEPROM中的預(yù)設(shè)AT指令程序(可通過超級終端進(jìn)行預(yù)設(shè))以初始化車載終端與監(jiān)控中心的TCP/IP通信。
AT+IPR=<rate>;//改變通信速率后會自動寫到模塊的NVRAM中,支持掉電保存功能。本文設(shè)置為115200。
AT#APNSERV=“CMNET”;//設(shè)置 GPRS接入點
AT# ConnectionStart;//連接 GPRS網(wǎng)登錄Internet,成功返回動態(tài)分配的IP地址
AT# TCPSERV=“10.0.123.245”//設(shè)置服務(wù)器 IP 地址,即監(jiān)控中心的IP地址
AT# TCPPORT=“6000”//設(shè)置服務(wù)器與單片機通信的Socket端口
AT# otcp://打開與遠(yuǎn)程服務(wù)器的TCP連接
需要說明的是,首先由終端設(shè)備發(fā)出主動連接申請信息,而后遠(yuǎn)程監(jiān)控中心接收并識別設(shè)備ID號,返回響應(yīng)信息,成功連接后,由終端設(shè)備定時向監(jiān)控中心服務(wù)器發(fā)送連接請求,保持設(shè)備始終在線。這樣,就可以隨時地向終端發(fā)送控制命令,如拍照、獲取GPS信息或控制繼電器工作等。
TCP連接成功后,進(jìn)入數(shù)據(jù)傳輸狀態(tài),這時監(jiān)聽MCU(下位機)與監(jiān)控中心(上位機)發(fā)送的指令,通過串口向GPRS模塊發(fā)送圖像數(shù)據(jù)和 GPS數(shù)據(jù),GPRS模塊通過Socket將數(shù)據(jù)發(fā)送到監(jiān)控中心,與此同時監(jiān)控中心返回應(yīng)答。數(shù)據(jù)傳完后圖像處理模塊向GPRS模塊發(fā)送終止字符<ETX>,GPRS Modem又回到AT指令接收狀態(tài)??紤]到GPRS模塊內(nèi)嵌的TCP/IP協(xié)議棧的緩存區(qū)是有限的,若串口寫入速率高于GPRS傳輸速率,部分?jǐn)?shù)據(jù)將會被新寫入的數(shù)據(jù)覆蓋掉,造成傳輸數(shù)據(jù)丟失。為避免此種情況的發(fā)生,設(shè)計中采用數(shù)據(jù)分包法控制數(shù)據(jù)流,數(shù)據(jù)包的大小設(shè)置為960字節(jié)。監(jiān)控中心服務(wù)器接收完一個數(shù)據(jù)包后返回應(yīng)答幀,GPRS模塊再發(fā)送下一個數(shù)據(jù)包。若超時未返回應(yīng)答幀,則重新發(fā)送此數(shù)據(jù)包。這樣有效地避免了丟包,保證了圖像等大量信息傳輸?shù)姆€(wěn)定性。其封包形式與程序流程圖如圖4和圖5所示。
圖4 封包形式
圖5 流程圖
監(jiān)控中心通過網(wǎng)絡(luò)接收或發(fā)送TCP協(xié)議的IP包,實現(xiàn)與MCU終端的通訊。采用Visual C++實現(xiàn)Socket編程,創(chuàng)建監(jiān)控中心服務(wù)器。接收MCU終端的實時圖像信息及GPS定位信息,并將GPS數(shù)據(jù)導(dǎo)入第三方電子地圖導(dǎo)航軟件。對MCU終端的狀態(tài),運行狀況進(jìn)行實時監(jiān)視、控制等,為用戶提供位置查詢、電子地圖服務(wù)、圖像信息獲取及遠(yuǎn)程控制。
臨控中心界面如圖6所示。
圖6 監(jiān)控中心界面
測試數(shù)據(jù)結(jié)果如表1所示。
表1 測試數(shù)據(jù)結(jié)果
測試結(jié)果與當(dāng)?shù)匾苿有盘栙|(zhì)量有關(guān),該測試數(shù)據(jù)是在本市測試多個點的平均值。
本文的遠(yuǎn)程監(jiān)控系統(tǒng)采用了GPRS通信技術(shù),拋棄了傳統(tǒng)的獨占電路交換模式,采用分組交換技術(shù),每個用戶可同時占用多個無線信道,同一無線信道又可以由多個用戶共享,有效地利用了信道資源,而且覆蓋率極廣,因此非常適合對多終端監(jiān)控的需要。監(jiān)控信息可發(fā)至互聯(lián)網(wǎng)監(jiān)控中心,亦可發(fā)至用戶的手機等移動終端。采用AVR單片機實現(xiàn)對監(jiān)控終端的控制,利用較低的成本整合了通信與控制功能。集監(jiān)控、定位、信息存儲及遠(yuǎn)程傳輸于一體,有效地解決了遠(yuǎn)程監(jiān)控系統(tǒng)中可能遇到的一系列問題。具有成本低、硬件結(jié)構(gòu)簡單、運行穩(wěn)定可靠、傳輸速度快、開發(fā)周期短等優(yōu)點。
[1]胡志坤.Visual C++通信編程工程實例精解[M].北京:機械工業(yè)出版社,2007.
[2]王正軍.Visual C++6.0程序設(shè)計從入門到精通[M].北京:人民郵電出版社,2006.
[3]Sergio Scaglia.嵌入式 Internet TCP/IP基礎(chǔ)、實現(xiàn)及應(yīng)用[M].潘琢金,徐蕾,拱長青,等譯.北京:北京航空航天大學(xué)出版社,2008.
[4]包東智.通用分組無線交換業(yè)務(wù)[J].現(xiàn)代通信,2001(6):20-23.
[5]吳志華,申功勛,唐李征,等.嵌入式GPS由GPRS接入Internet的實現(xiàn)[J].微計算機信息,2007,23(3):256-258.
[6]王磊,馮占軍.基于GPRS網(wǎng)絡(luò)的嵌入式無線數(shù)據(jù)采集系統(tǒng)設(shè)計[J].測控技術(shù),2007,26(9):17-19.
[7]廖嘉,周興斌.基于ARM9的嵌入式GPRS的設(shè)計與實現(xiàn)[J].計算機與現(xiàn)代化,2009(2):129-131.
[8]黃承安,張躍,云懷中.基于GPRS的遠(yuǎn)程儀表監(jiān)控系統(tǒng)[J].電測與儀表,2003,40(8):42-45.
[9]李項根,陳軍,吳朝暉.基于ARM-Linux的車載信息平臺的研制[J].浙江大學(xué)學(xué)報:工學(xué)版,2006,40(9):1531-1535.
[10]靳晶,胡盛祥,胡平.基于GPS/GPRS車載終端的研究與開發(fā)[J].微計算機信息,2006,22(9):284-286.
[11]張正桓,張其善.基于GPRS的車載信息平臺的研制與關(guān)鍵技術(shù)[J].北京航空航天大學(xué)學(xué)報,2005,31(1):98-101.
[12]Fredriksson L B,Kvaser A B Kinnahult.CAN for critical embedded automotive networks[J].IEEE Microsystem,2002,22(4):28-35.
[13]王松宏,李德華.基于GPRS的車輛監(jiān)控系統(tǒng)車載移動終端的設(shè)計[J].計算機應(yīng)用研究,2005,22(6):184-186.
[14]Yang Bo,Xu Cheng,Li Renfa.The design of CAN device driver in embedded Linux operating system[J].Science Technology and Engineering,2004,12(4):1019-1023.