基于虛擬串口的GPS/GSM遠(yuǎn)程定位技術(shù)
1.3 主控單元
主控單元采用AT89S52單片機(jī)作為控制器,單片機(jī)通過(guò)串口與GPS模塊以及GSM模塊進(jìn)行通信。在此需要兩個(gè)串口,而AT89S52單片機(jī)本身只有一個(gè)串口,常規(guī)的解決方法是采用具有雙串口的單片機(jī)或者ARM等控制器,或者通過(guò)硬件來(lái)擴(kuò)展串口。前者會(huì)使系統(tǒng)的硬件成本大大提高,而后者不僅會(huì)增加系統(tǒng)的成本,還會(huì)增大系統(tǒng)硬件的體積。本文采取的解決辦法是,AT89S52單片機(jī)本身的串口用于跟GPS模塊進(jìn)行通信,而利用I/O口P1.4和P3.2編程實(shí)現(xiàn)一個(gè)虛擬串口與TC35i模塊進(jìn)行通信。由于單片機(jī)內(nèi)部定時(shí)/計(jì)數(shù)器只能實(shí)現(xiàn)較小時(shí)間的定時(shí),所以巧妙利用了單片機(jī)的T2定時(shí)/計(jì)數(shù)器(P1.0)對(duì)Jupiter 21OEM板的1PPS秒脈沖輸出進(jìn)行計(jì)數(shù)方便地實(shí)現(xiàn)5 min定時(shí),用于收發(fā)短信所需的定時(shí)。該部分還擴(kuò)展了報(bào)警電路和控制開(kāi)關(guān)通斷等功能電路,這是由監(jiān)控中心通過(guò)撥打遠(yuǎn)程目標(biāo)端的電話來(lái)控制的。同時(shí),還保留了單片機(jī)的剩余I/O口用于系統(tǒng)的進(jìn)一步擴(kuò)充。
2 系統(tǒng)軟件設(shè)計(jì)
2.1 單片機(jī)部分軟件設(shè)計(jì)
單片機(jī)部分的程序流程圖如圖2所示。該部分程序采用C語(yǔ)言編程實(shí)現(xiàn),主要包括定位信息的提取、虛擬串口通信以及短消息的發(fā)送三個(gè)部分。
2.1.1 定位信息的提取
單片機(jī)采用4 800 b/s波特率與GPS模塊進(jìn)行異步串行通訊,從GPS模塊輸出的是NMEA-0183語(yǔ)句格式的數(shù)據(jù)。該語(yǔ)句格式的數(shù)據(jù)以“$”開(kāi)頭,包括$GPRMC,$GPGGA,$GPGSV,$GPVTG,$G-PGSA,$GPGLL等語(yǔ)句。系統(tǒng)設(shè)計(jì)中只從中提取出$GPRMC語(yǔ)句,再進(jìn)一步提取出里面包含的經(jīng)緯度、速度、時(shí)間等信息,已經(jīng)可以滿足系統(tǒng)的需求。該部分的軟件流程圖如圖3所示。
2.1.2 虛擬串口
單片機(jī)與GSM模塊之間通過(guò)虛擬串口進(jìn)行通信,以解決AT89S52單片機(jī)固有串口不足的問(wèn)題,通信波特率取為9 600 b/s。虛擬串口就是利用單片機(jī)I/O編程實(shí)現(xiàn)一個(gè)串口的功能,這樣就以較少的資源實(shí)現(xiàn)了系統(tǒng)的功能,克服了傳統(tǒng)的采用具有雙串口的控制器或者利用硬件進(jìn)行串口擴(kuò)展的方法其成本高、體積大的缺點(diǎn)。程序中采用定時(shí)器工作于方式2進(jìn)行一個(gè)數(shù)據(jù)位傳輸時(shí)間的定時(shí),用于嚴(yán)格控制一個(gè)數(shù)據(jù)位的傳輸時(shí)間。單片機(jī)采用11.059 2 MHz晶振,這樣定時(shí)器的初值為256-(1 000 000/9 600)/(12/11.059 2)=160,即十六進(jìn)制的0xA0。實(shí)驗(yàn)結(jié)果證明,采用該方法進(jìn)行串口通訊,數(shù)據(jù)傳輸穩(wěn)定、可靠。采用虛擬串口發(fā)送、接收一個(gè)字符的程序流程圖分別如圖4,圖5所示。
2.1.3 發(fā)送短消息
主要是由單片機(jī)根據(jù)發(fā)送短消息的特定步驟,采用AT命令控制GSM模塊發(fā)送短消息,是系統(tǒng)設(shè)計(jì)中最重要的內(nèi)容之一。該部分程序設(shè)計(jì)中,由于會(huì)涉及到單片機(jī)與GSM模塊的多次交互過(guò)程,而GSM模塊響應(yīng)較單片機(jī)來(lái)的慢,特別是涉及到FLASH或SIM卡的操作及網(wǎng)絡(luò)的交互時(shí),必須要考慮到GSM模塊的響應(yīng)時(shí)間問(wèn)題。系統(tǒng)中采用TEXT模式發(fā)送短消息,步驟如下:
1.設(shè)置短信中心號(hào)碼:AT+CSCA=+8613500591500CR>//代表福州移動(dòng),CR>代表回車,下同
2.設(shè)置短信發(fā)送模式:AT+CMGF=1CR>//設(shè)置短信發(fā)送模式為TEXT模式
3.設(shè)置TEXT模式參數(shù):AT+CSMP=17,167,0,0CR>//最后一個(gè)參數(shù)是數(shù)據(jù)編碼類型,0表示默認(rèn)字符集(GSM);(167代表有效期24 h)
4.設(shè)置使用的字符集:AT+CSCS=GSMCR>//設(shè)置為GSM字符集
5.輸入目標(biāo)號(hào)碼:AT+CMGS=13599071***CR>//1359907l***為目標(biāo)號(hào)碼
6.輸入短信內(nèi)容再輸人Ctrl+Z>,即ASCII碼0x1A。
評(píng)論