基于CDMA模塊的車載監(jiān)控終端的設計方案
【摘要】結(jié)合現(xiàn)有的車載監(jiān)控終端的解決方案,確定了基于CDMA 模塊的車載監(jiān)控終端的總體設計方案,介紹了系統(tǒng)的組成、功能模塊,給出了系統(tǒng)的硬件設計以及相應功能單元軟件的設計。
隨著無線通信技術(shù)的發(fā)展, 智能交通系統(tǒng)(Intelligent TransportSystem,即ITS)已得到廣泛應用。ITS 總體來說包括四部分:交通信息采集部分、車輛調(diào)度控制部分、電子收費系統(tǒng)與交通信息服務。其中四個部分都需要車載終端的參與,車載終端是ITS 系統(tǒng)中非常重要的部分。傳統(tǒng)的車載監(jiān)控終端系統(tǒng)通常采用GSM/GPS 方案。這種方案成本較低,在一些領域有了成功應用。車載終端最重要的功能是交通信息采集,提供車輛的準確定位和車輛運行情況(包括速度信息、行進方向等)。而定位信息和速度信息通常都是靠外置的GPS 模塊獲取,但在車輛駛?cè)胨淼阑蛘咄7旁诟邩桥?,車輛處于GPS 衛(wèi)星的覆蓋盲區(qū),這段時間內(nèi)的調(diào)度中心無法準確得到車輛的交通信息,影響了監(jiān)控調(diào)度系統(tǒng)的可靠性。本文提出了一種以ATMEL 公司89S51 為控制器,CDMA 模塊DTGS800 為通信、定位系統(tǒng)平臺的車載監(jiān)控終端系統(tǒng)。
1.DTGS-800 簡介
DTGS800 是AnyDATA 公司生產(chǎn)的一款CDMA 無線通信模塊。
DTGS800 工作在832MHz 頻段,功耗為0.32W,擁有高達153kbps 的數(shù)據(jù)傳輸速率,可通過AT 命令進行遠程控制,內(nèi)置TCP/IP 協(xié)議棧,提供短消息服務。模塊內(nèi)部集成了具有g(shù)psOne 功能的芯片, 能夠采用gpsOne 解決方法實現(xiàn)定位功能。
DTGS800 的模塊主要接口包括:通用異步串行口UART,通用I/O口GPIO、編解碼器接口CODEC、用戶接口User Interface、PM 接口。
2.系統(tǒng)硬件設計
車載監(jiān)控終端主要用來與監(jiān)控中心進行實時的信息交互, 包括:
獲取車輛的位置信息、速度信息;發(fā)布調(diào)度信息;在車輛出現(xiàn)異常情況下進行遠程控制。另外給車輛司機提供移動通信服務,可利用此模塊撥打和接聽電話,甚至可以進行三方通話。其硬件系統(tǒng)是一個綜合利用電子技術(shù)和通信技術(shù)的嵌入式單片機系統(tǒng),主要由控制器和通信模塊兩部分組成。
控制器是車載監(jiān)控終端的核心,它對整個系統(tǒng)的安全運行、可靠性有很大影響。本設計中CPU 選用了ATMEL 公司的8 位單片機89C51RD2, 它是CMOS 單片8 位微控制器80C51 的高性能CMOSFLASH 版本。其特性包括:1 個64-Kbyte FLASH 存儲區(qū),用于存儲代碼和數(shù)據(jù);256 字節(jié)的內(nèi)部RAM,1 個9 源4 級中斷控制器和3 個定時/計數(shù)器;1 個1792 字節(jié)的XRAM,1 個硬件看門狗定時器,SPI 接口,鍵盤,1 個更加通用的串行頻道,便于多處理器通信(EUART)和加速機制(X2 Mode)。
這款CPU 采用全靜態(tài)設計,減少了系統(tǒng)功耗,允許時鐘頻率降至任何數(shù)值而不導致數(shù)據(jù)損失。另外有兩種軟件可選的工作模式,降低8 位時鐘分頻器的活動狀態(tài),進一步減少了功耗??臻e模式下,CPU 被凍結(jié),而外設和中斷系統(tǒng)繼續(xù)工作。在掉電模式,RAM 內(nèi)容被保存,而其他所有功能都無效。
系統(tǒng)的框架圖如下所示:
圖1 系統(tǒng)結(jié)構(gòu)框架圖
3.系統(tǒng)軟件設計
系統(tǒng)以任務的形式對軟件功能進行模塊劃分,軟件實現(xiàn)的任務包括:任務調(diào)度;車輛位置信息、速度信息的獲??;短信息的接受、處理與發(fā)送;電話的撥打與接聽;屏幕顯示。
程序流程為:車輛發(fā)動之后,系統(tǒng)上電,首先進行系統(tǒng)初始化,然后開定時中斷與串口中斷,啟動完畢后啟動進入中斷監(jiān)聽狀態(tài),每隔10ms 掃描一次串口buffer 中的數(shù)據(jù),并根據(jù)不同的狀態(tài)調(diào)用不同的接口函數(shù)實現(xiàn)各種功能。車輛監(jiān)控終端最重要的任務就是實時交通信息的獲取和傳輸數(shù)據(jù), 下文著重介紹GPS 信息的獲取和短消息的接收與發(fā)送。
3.1 串口中斷函數(shù)
在本系統(tǒng)中,處理器對DTGS800 模塊的控制是通過串口發(fā)送AT 指令實現(xiàn)的, 當發(fā)送某種AT 命令后,DTGS 模塊會通過串口與處理器進行數(shù)據(jù)交換。因此,如何進行串口數(shù)據(jù)管理是系統(tǒng)性能優(yōu)劣的關(guān)鍵。在本文的設計中,采用了基于中斷的管理方式,并設置了一個200Bytes 的串口緩沖區(qū),以循環(huán)隊列的形式實時讀取串口的接收數(shù)據(jù)。實現(xiàn)的步驟如下:
3.1.1 定義全局變量
#define REC_BUF_LEN 200
idata volatile BYTE datain;輸入數(shù)據(jù)的長度
idata volatile BYTE dataout;;輸出數(shù)據(jù)的長度
BYTE xdata dat[REC_BUF_LEN]; 串口緩沖區(qū)
3.1.2 操作函數(shù)的實現(xiàn)
bit BuffOut(BYTE *dp);從緩沖區(qū)讀出數(shù)據(jù)
bit BuffIn( BYTE *dp);向緩沖區(qū)寫入數(shù)據(jù)
3.1.3 中斷函數(shù)
處理器與DTGS800 模塊之間通過串口通信,當接收短信息,有來電提醒時,都會引發(fā)串口中斷,因此串口中斷函數(shù)的核心就是將接受數(shù)據(jù)存儲到循環(huán)隊列中。其實現(xiàn)的流程圖如下:
圖2 中斷函數(shù)流程圖
3.1.4 接口函數(shù)
在實際工作狀態(tài)下,通話任務,短信息任務都需要通過串口向DTGS800 模塊發(fā)送數(shù)據(jù), 這些任務的實質(zhì)都是向串口發(fā)送字節(jié)數(shù)據(jù)。因此接口函數(shù)最重要的就是定義發(fā)送字節(jié)函數(shù),定義如下:
void WriteToComm(BYTE c)
{
SBUF = c;
while (! TI);
TI = 0;
}
3.2 系統(tǒng)任務設計
根據(jù)不同的任務定義了不同的系統(tǒng)狀態(tài),其中一部分定義如下:
typedef enum
{
SYS_NET_FAIL, 網(wǎng)絡不通
SYS_MISSED_CALL, 未接來電
SYS_CALL_SPEAKING, 通話中
SYS_END_CALL, 掛電話
SYS_GET_GPS_INFO, 獲得GPS 數(shù)據(jù)
SYS_SMS_INFO, 短消息接收
SYS_SMS_DISPLAY, 短信息顯示
}sys_app_sta;
系統(tǒng)啟動完畢以后,進入main 函數(shù)中的死循環(huán),對不同狀態(tài)響應不同的任務。以未接來電為例,定義如下函數(shù):
if(cmp_com_str(“MISSED_CALL ”,Locat,1)) 判斷狀態(tài)
{
Missed_call_deal(); 未接來電處理函數(shù)
dataout = Locat;//go
Reccnt = Reccnt -4;
clrline(line_1);
display_app(0x82, “未接電話:”); 顯示函數(shù)
start_nom_ref();
Sys_state = SYS_IDLE_STATE; 進入空閑態(tài)
break;
}
3.2.1 定位任務
定位任務負責采集車輛的交通信息,包括經(jīng)度、維度、速度、行進方向等,在發(fā)送定位命令之前首先查詢模塊的工作狀態(tài),然后通過串口發(fā)送AT 命令進行定位請求,如果串口接收到“OK”信息,則系統(tǒng)進入到SYS_GET_GPS_INFO 狀態(tài)。
接收的數(shù)據(jù)首先存儲在串口的buffer 中,定義了如下GPS 數(shù)據(jù)處理函數(shù):
typedef struct
{
BYTE UTC[10]; //時間
BYTE Latitude[10]; //緯度
BYTE Longitude[11]; //經(jīng)度
BYTE rec_flg; //狀態(tài)
BYTE Velocity[5]; //速度
BYTE Direction[5]; //方向
}GPS_STR;
void Gps_Data(WORD head) 將數(shù)據(jù)讀入到GPS 數(shù)據(jù)buffer 中
void GpsData_PRO(void) 解析GPS 中的相關(guān)信息以方便進一步處理;
GPS 數(shù)據(jù)解析完成以后,再利用短消息的形式將車輛的交通信息發(fā)送到監(jiān)控中心。
3.2.2 短信息任務
DTGS800 提供了兩種不同的短信息服務協(xié)議,一種為簡單協(xié)議,適合于一些簡單的應用,一種為擴展協(xié)議,收發(fā)的格式比較復雜。本系統(tǒng)采用了擴展的SMS 協(xié)議。
3.2.2.1 短消息發(fā)送流程
1)給模塊發(fā)送命令“AT+CAD? ”檢測模塊的工作狀態(tài),如果返回值為1 表示模塊工作正常;如果為0 則表示模塊暫時不可用,等待幾秒空閑后再進行檢測;2)給模塊發(fā)送命令“AT+SMSS? ”,通過返回值檢測模塊的狀態(tài),如果模塊返回值為3,表示模塊等待接受發(fā)送的數(shù)據(jù);3)發(fā)送解析的GPS 信息,又一次給模塊發(fā)送命令“AT+SMSS? ”,如果模塊返回值為1,表示發(fā)送信息成功;4)調(diào)用顯示函數(shù),在屏幕上顯示“短信息發(fā)送成功”。
3.2.2.2 短消息接受流程
1)判斷系統(tǒng)狀態(tài),如收到短信,給模塊發(fā)送命令“AT+SMSR”,讀取收到的短信息;2) 對收到的短信息做數(shù)據(jù)處理, 存放在Buffer 中; 調(diào)用函數(shù)UnicodeToGB()將收到的Unicode 碼轉(zhuǎn)化為GBK 碼;3)調(diào)用顯示函數(shù)循環(huán)顯示未讀取的短信息,當用戶讀取信息后,系統(tǒng)返回到空閑態(tài),等待下一步的指令。
4.結(jié)論
通過系統(tǒng)實測,發(fā)現(xiàn)本車載監(jiān)控終端系統(tǒng)可以很好的實現(xiàn)車輛交通信息的采集,接收監(jiān)控中的調(diào)度信息、控制信息,具有通信可靠、良好的擴展性等特點。