畢 楊,郭少祖
(西安航空學(xué)院 電子工程學(xué)院,西安 710077)
隨著我國社會(huì)經(jīng)濟(jì)的發(fā)展,電動(dòng)車己成為人們?nèi)粘3鲂幸环N重要的交通工具,但電動(dòng)車被盜案件卻時(shí)有發(fā)生,因此,電動(dòng)車的車輛安全問題成為人們關(guān)注的焦點(diǎn)?;贕SM技術(shù)的電動(dòng)車防盜系統(tǒng),能夠有效改善電動(dòng)車防盜功能,滿足人們對(duì)電動(dòng)車的安全需求。
本文采用STC51單片機(jī)進(jìn)行系統(tǒng)控制,利用不同的LED及蜂鳴器顯示系統(tǒng)當(dāng)前的工作狀態(tài)[1],使用希姆通公司的SIM900a作為GSM模塊,用于發(fā)送報(bào)警信息。
本文采用的STC89C52RC單片機(jī)具有8k字節(jié)的閃存,512字節(jié)的RAM,32位I/O端口,看門狗定時(shí)器,三個(gè)16位定時(shí)/計(jì)數(shù)器,四個(gè)外部中斷,1至7個(gè)矢量化的4級(jí)中斷結(jié)構(gòu)(與傳統(tǒng)的51單片機(jī)結(jié)構(gòu)兼容),全雙工串行端口。
單片機(jī)最小系統(tǒng)如圖1所示。對(duì)51系列單片機(jī)來說,一個(gè)最小系統(tǒng)一般通常包括單片機(jī)、晶振電路以及復(fù)位電路三個(gè)部分。單片機(jī)的復(fù)位電路類似于計(jì)算機(jī)的重新啟動(dòng)功能,當(dāng)單片機(jī)系統(tǒng)工作時(shí),如果程序由于環(huán)境原因而發(fā)生異常,按下復(fù)位按鈕后程序?qū)念^開始自動(dòng)重啟[2]。晶體振蕩器等效于一個(gè)通過并聯(lián)連接電容器和電阻器以及串聯(lián)電容器而構(gòu)成的兩端網(wǎng)絡(luò)。
圖1 單片機(jī)最小系統(tǒng)
GSM模塊主要用于在單片機(jī)的控制下及時(shí)向用戶進(jìn)行信息發(fā)送。單片機(jī)上的P3.0和P3.1引腳連接到與GSM模塊相對(duì)應(yīng)的串行通信口TX及RX引腳上。單片機(jī)STC89C52通過串口向GSM模塊發(fā)送相應(yīng)的指令進(jìn)而控制GSM模塊的行為,警報(bào)功能是通過感應(yīng)式或按鍵觸發(fā)將警報(bào)信息發(fā)送給指定用戶來實(shí)現(xiàn)的。GSM模塊電路如圖2所示。
圖2 GSM模塊電路
振動(dòng)感應(yīng)模塊由電壓比較器LM393和振動(dòng)開關(guān)SW-18010P共同組成,振動(dòng)模塊電路如圖3所示。LM393的AC及IN均為低電平,當(dāng)發(fā)生震動(dòng)時(shí),震動(dòng)開關(guān)變?yōu)殚]合狀態(tài),電路導(dǎo)通,LM393的2號(hào)引腳從高電平轉(zhuǎn)變成低電平信號(hào),LM393發(fā)現(xiàn)AC電平小于IN腳的電平后,OUT腳會(huì)輸出高電平給單片機(jī),從而實(shí)現(xiàn)振動(dòng)檢測(cè)功能,電路1腳即OUT口接在單片機(jī)P0.6口。
圖3 振動(dòng)模塊電路
當(dāng)檢測(cè)到震動(dòng)后,單片機(jī)接收到LM393的信號(hào),單片機(jī)的P0.4口輸出低電平給蜂鳴器模塊,此時(shí)三極管導(dǎo)通,蜂鳴器就可以發(fā)出聲音,設(shè)計(jì)中還給出了三個(gè)不同顏色的LED來顯示整個(gè)電路系統(tǒng)的當(dāng)前狀態(tài),分別接在P2.0,P2.2,P2.5這三個(gè)引腳。蜂鳴器與LED顯示部分的電路如圖4所示。
圖4 蜂鳴器模塊與LED模塊
按鍵電路由3個(gè)按鍵組成,K1,K2,K3分別用來布防、撤防以及手動(dòng)發(fā)送短信,分別接在單片機(jī)的P1.0-P1.2口上,如圖5所示。
本設(shè)計(jì)使用GSM模塊來實(shí)現(xiàn)信息傳輸,系統(tǒng)主要由檢測(cè)振動(dòng)信號(hào)、報(bào)警功能和LED及蜂鳴器報(bào)警電路組成。在緊急情況下自動(dòng)感應(yīng)或手動(dòng)觸發(fā)按鈕時(shí),通過震動(dòng)感應(yīng)來持續(xù)監(jiān)測(cè)并及時(shí)觸發(fā)警報(bào)功能,并且GSM網(wǎng)絡(luò)模塊用于將存儲(chǔ)在單片機(jī)上的警報(bào)信息以短消息的形式傳輸?shù)筋A(yù)設(shè)的手機(jī)號(hào)碼,及時(shí)獲取警報(bào)信息,可以有效減少用戶損失。軟件設(shè)計(jì)框圖如圖6所示。
圖5 單片機(jī)P1.0-P1.2接口
圖7 AT指令系統(tǒng)結(jié)構(gòu)圖
圖6 系統(tǒng)設(shè)計(jì)框圖
為了實(shí)現(xiàn)電動(dòng)車振動(dòng)報(bào)警功能,單片機(jī)存以接收?qǐng)?bào)警信息用戶的手機(jī)號(hào)碼和報(bào)警消息的內(nèi)容,并通過單片機(jī)向GSM模塊發(fā)送預(yù)定的命令,控制GSM模塊向手機(jī)用戶發(fā)送存儲(chǔ)的短信。AT命令主要用于控制解調(diào)器的響應(yīng),撥號(hào)和其他功能。GSM調(diào)制解調(diào)器實(shí)際上是使用GSM移動(dòng)通信系統(tǒng)的調(diào)制解調(diào)器,因此,GSM調(diào)制解調(diào)器的控制也是AT命令[3]。在GSM模塊發(fā)送報(bào)警信息時(shí),GSM模塊的工作方式的設(shè)置比較簡(jiǎn)單,可以直接通過單片機(jī)向和GSM模塊連接的串口緩沖區(qū)寫入相應(yīng)的AT命令來設(shè)置GSM模塊的的工作狀態(tài),然后從單片機(jī)存儲(chǔ)中讀取要接收?qǐng)?bào)警的手機(jī)號(hào)碼和報(bào)警信息內(nèi)容,把它們寫入串口緩沖區(qū)完成短信的發(fā)送。AT指令系統(tǒng)結(jié)構(gòu)框見圖7所示。
AT命令集是調(diào)制解調(diào)器通信接口的行業(yè)標(biāo)準(zhǔn),而AT命令是調(diào)制解調(diào)器可以識(shí)別和執(zhí)行的命令。AT命令非常易于掌握,可以配置調(diào)制解調(diào)器,使用通訊軟件與遠(yuǎn)程系統(tǒng)通訊并撥叫電話或接聽電話。常用AT指令如表1所示。
表1 AT常用的控制指令
AT命令的基本格式為AT+不同的符號(hào)可以構(gòu)成不同的命令,符號(hào)后添加預(yù)設(shè)的指令可以實(shí)現(xiàn)不同的功能[4]。從命令的不同使用方式來區(qū)分,AT命令可以分成為:(1)測(cè)試命令在AT后添加“=”即可構(gòu)成測(cè)試命令的形式;(2)讀取命令在AT后添加“?”即可構(gòu)成讀取命令的形式;(3)執(zhí)行命令在AT指令后加上“=”及命令參數(shù)即可。還有一些命令沒有參數(shù)就可以直接運(yùn)行,比如“AT+CMGR”。
當(dāng)前,SIM900a通常用于發(fā)送短消息的編碼方法是文本和PDU(協(xié)議數(shù)據(jù)單元)模式。文本模式下發(fā)送和接收文本消息的代碼相對(duì)簡(jiǎn)單,應(yīng)用程序也非常簡(jiǎn)單,但主要缺點(diǎn)是TEXT模式下無法發(fā)送和接收中文消息。PDU模式不僅發(fā)送和接收英文消息,還可以發(fā)送和接收中文消息。PDU模式可以使用三種編碼方法:7位,8位和UCS2編碼。7位編碼用于傳輸純ASCII字符,并將一串7位字符(最高位為0)編碼為8位數(shù)據(jù)。所有8個(gè)字符都可以壓縮為7到8位編碼,通常用于發(fā)送數(shù)據(jù)消息(例如圖片和鈴聲),而UCS2編碼用于發(fā)送Unicode字符。PDU字符串中的用戶信息段的最大容量為140字節(jié),因此在這三種編碼模式下可以發(fā)送的短消息中的最大字符數(shù)分別為160、140和70。PDU模式將一個(gè)英文字符,一個(gè)中文字符以及一個(gè)數(shù)據(jù)字節(jié)全部計(jì)為一個(gè)字符。
PDU編碼協(xié)議中,如果想要從SMSC號(hào)碼是+8613512345678的用戶發(fā)送信息至號(hào)碼為+8613587654321的用戶,短信內(nèi)容為“西航”,從手機(jī)發(fā)出的PDU串就可以是08 91 68 31 15 32 54 76 F8 01 00 0D 91 68 31 85 67 45 23 F1 00 08 04 89 7F 82 2A 。
上述編碼含義中“08 91 ”表示短消息中心地址信息的長(zhǎng)度為8和消息中心號(hào)碼類型;”68 31 15 32 54 76 F8”表示發(fā)送短信的用戶號(hào)碼為8613512345678;“01 00 0D ”基本參數(shù)傳輸使用的相對(duì)的格式選擇為”00”模式,0消息的基準(zhǔn)值;“91 68 31 85 67 45 23 F1”為接收短信的用戶號(hào)碼;“00”表示選擇GSM的基礎(chǔ)協(xié)議標(biāo)識(shí)類型;“08”是用戶信息編碼方法UCS2編碼;“04”實(shí)際用戶信息長(zhǎng)度為4個(gè)字節(jié);“89 7F 82 2A ”為用戶發(fā)送為“西航”的短信。
通過編寫單片機(jī)P3.0和P3.1組成的UART串口與GSM模塊的串口通信程序,從而實(shí)現(xiàn)單片機(jī)對(duì)GSM模塊的控制。
在了解了GSM模塊中常用的AT指令后,就可以編寫SIM900a的程序了。此設(shè)計(jì)中使用的命令為“AT+CMGF=1 ”,它的功能是選擇了文本格式用來發(fā)送短信。其次“AT+CSCS=“UCS2” “命令的功能是獲取并設(shè)置電話的當(dāng)前字符并將其設(shè)置為UCS2格式,“AT+CSMP=17,0,2,25 ”是參數(shù)設(shè)置短信文本模式[5],“AT+CSMP=PhoneNO”和“AT+CSMP=somebody”是接收短信用戶的號(hào)碼和發(fā)送的短信內(nèi)容,PhoneNO以及somebody為聲明的參數(shù),通過將手機(jī)號(hào)碼及短信內(nèi)容進(jìn)行轉(zhuǎn)碼后賦值給這兩個(gè)參數(shù)。比如接受號(hào)碼是18392013607,轉(zhuǎn)碼完成后就成為0031 0038 0033 0039 0032 0030 0031 0033 0036 0030 0037,短信內(nèi)容為 “請(qǐng)注意,有異常!”,轉(zhuǎn)碼后“8BF76CE8610FFF0C67095F025E38FF01”,進(jìn)行延時(shí)以及與LED等功能的結(jié)合,至此GSM模塊部分的程序就完成了。
圖8 GSM測(cè)試軟件界面
在測(cè)試GSM模塊時(shí),需要使用GSM模塊測(cè)試軟件。將SIM卡插入到SIM900a的卡槽中,把GSM模塊的串口通過串口線連接在電腦上,選擇對(duì)應(yīng)的端口及波特率,輸入要接收短信的號(hào)碼以及發(fā)送的短信內(nèi)容,如圖8所示。點(diǎn)擊開始監(jiān)聽就可以觀察到SIM900a的初始化等AT指令,點(diǎn)擊發(fā)送短信即可完成測(cè)試,接收到內(nèi)容為“西航”的短信。
本系統(tǒng)通過連接設(shè)計(jì)好的各部分模塊,成功實(shí)現(xiàn)了電動(dòng)車在發(fā)生震動(dòng)時(shí)采用短信報(bào)警的功能。整個(gè)系統(tǒng)具有成本低,靈敏度高等特點(diǎn),能夠改善電動(dòng)車的防盜功能,有效降低電動(dòng)車失竊案件的發(fā)生。