近年來,基于gsm模塊的短信收發(fā)功能的各種應(yīng)用系統(tǒng)如:被盜機(jī)動(dòng)車追蹤系統(tǒng)、家庭網(wǎng)絡(luò)系統(tǒng)等已逐漸成為關(guān)注的焦點(diǎn)[1-3]。對(duì)于這些應(yīng)用系統(tǒng)中如何通過短信收發(fā)模塊實(shí)現(xiàn)短信收發(fā)的功能是一個(gè)非?;径址浅jP(guān)鍵的問題。隨著通信技術(shù)的不斷成熟以及用戶對(duì)通信質(zhì)量越來越高的要求,現(xiàn)有的gsm網(wǎng)絡(luò)將不可避免的向w-CDMA(寬帶碼分多址)演變。cdma網(wǎng)絡(luò)覆蓋范圍廣、使用費(fèi)用低、技術(shù)完善、安全可靠,采用cdma網(wǎng)絡(luò)的短信息業(yè)務(wù)實(shí)現(xiàn)無線數(shù)據(jù)傳輸,既方便又可靠。
1系統(tǒng)設(shè)計(jì)
本系統(tǒng)主要是利用cdma移動(dòng)通信網(wǎng)絡(luò)的短信息業(yè)務(wù)完成數(shù)據(jù)的無線傳輸,免去了現(xiàn)場組網(wǎng)的初期建設(shè)費(fèi)用以及日后的網(wǎng)絡(luò)維護(hù)費(fèi)用。通過數(shù)據(jù)終端,將采集到的現(xiàn)場數(shù)據(jù)以短信息的形式發(fā)送到監(jiān)控中心,在監(jiān)控中心進(jìn)行數(shù)據(jù)處理、存儲(chǔ)、并提供相應(yīng)的查詢、統(tǒng)計(jì)、報(bào)表功能。監(jiān)控中心也可以通過向數(shù)據(jù)終端發(fā)送短信息,設(shè)定監(jiān)控終端配置信息或控制命令,更新數(shù)據(jù)終端的實(shí)時(shí)數(shù)據(jù)。系統(tǒng)組成包括現(xiàn)場設(shè)備、采集器、數(shù)據(jù)終端、監(jiān)控中心。原理框圖如圖1所示。
2數(shù)據(jù)終端的硬件設(shè)計(jì)
數(shù)據(jù)終端采用cygnalc8051f020作為控制主芯片,該芯片具有集成度高、功耗低(供電電壓為2.7~3.6v,典型工作電流為12ma,并具有多種節(jié)電休眠和停機(jī)模式)、處理能力強(qiáng)(采用流水線結(jié)構(gòu),機(jī)器周期由標(biāo)準(zhǔn)的12個(gè)系統(tǒng)時(shí)鐘周期降為1個(gè)系統(tǒng)時(shí)鐘周期,峰值性能可達(dá)25mips)的特點(diǎn),使其很適合應(yīng)用于需要高可靠性、低功耗的控制系統(tǒng)中。cygnalc8051f為兼容:mcs-51內(nèi)核的單片機(jī),內(nèi)置64kbflash程序存儲(chǔ)器和4352b數(shù)據(jù)ram,具有2個(gè)雙全工的uart。正是利用這2個(gè)串口實(shí)現(xiàn)了單片機(jī)與手機(jī)模塊和pc機(jī)的同時(shí)通訊。數(shù)據(jù)終端硬件結(jié)構(gòu)框圖如圖2所示。
2.1通信單元電路設(shè)計(jì)
通信單元采用cdma無線模塊來實(shí)現(xiàn)。cdma無線模塊作為終端的無線收發(fā)模塊,把單片機(jī)接收到的數(shù)據(jù)信息進(jìn)行編碼后以短信息的格式發(fā)送出去。cdma的無線模塊采用zteit的mg801a模塊,mg801a-cdma模塊是內(nèi)置軟件支持cdma20001xrev0標(biāo)準(zhǔn)和gota協(xié)議的工業(yè)級(jí)應(yīng)用模塊,工作頻段為800mhz。能完成語音、數(shù)據(jù)、傳真、短信息服務(wù)以及多種附加業(yè)務(wù)的功能。具有容量大、輻射小、低功耗、體積小等特點(diǎn)。模塊通過80腳的插座與外圍電路進(jìn)行接口,電路如圖3所示。該模塊的供電電壓為3.3~4.25v,典型值為3.8v。
2.1.1開關(guān)機(jī)控制
有兩種方法可以使模塊開機(jī),第一種方法是通過系統(tǒng)連接器上的on/off引腳,第二種方法是使用外部充電器。
系統(tǒng)連接器上的第51引腳是on/off引腳,在此引腳上加一瞬時(shí)低電平會(huì)使模塊開機(jī),模塊關(guān)機(jī)是通過at指令實(shí)現(xiàn)的,關(guān)機(jī)指令為at+zpwroff。第二種方法是使用外部充電器為模塊供電,如果外部電壓同時(shí)加于v_main(pin71,72,73,74,75)和vchg(pin79)就會(huì)使模塊開機(jī),當(dāng)充電電源移走后,模塊會(huì)關(guān)機(jī)。
2.1.2通訊
mg801a模塊提供串行異步通訊接口uart(他與串口的數(shù)據(jù)通訊遵從rs232接口協(xié)議),因?yàn)閱纹瑱C(jī)與模塊都是3v左右的供電電壓,都符合ttl電平標(biāo)準(zhǔn),所以可以直接連接,實(shí)現(xiàn)通訊功能。
2.1.3uim卡
uim卡是cdma手機(jī)運(yùn)用的一種智能卡。uim卡提供個(gè)人認(rèn)證信息,可以允許ms或手機(jī)連接網(wǎng)絡(luò)。uim卡可以允許用戶撥打或接聽電話和收發(fā)短信息。uim卡固定在卡座上,通過卡座的6個(gè)引腳與外部連接。mg801a模塊為了減少功耗為uim提供了一個(gè)使能引腳,在此可以不用,使uim卡一直處于工作狀態(tài)。
2.2穩(wěn)壓電源電路
數(shù)據(jù)終端的工作電壓為5vdc。另外,電源的指標(biāo)不僅僅有電壓的要求,而且功率容限等指標(biāo)都要滿足要求。故采用圖4的設(shè)計(jì)方案。在該系統(tǒng)中,開關(guān)電源芯片lm7805完成12v到5v的轉(zhuǎn)換,加兩個(gè)二極管起降壓保護(hù)的作用,為模塊供電。電源電路主要由lm7805和as117—3.o這兩個(gè)三端穩(wěn)壓電源模塊構(gòu)成,電源模塊as117—3.o接收lm7805輸入的5v電壓,輸出為整個(gè)單片機(jī)系統(tǒng)和uim卡的3v供電電壓。電源的輸出基本不會(huì)受外部輸入變動(dòng)的干擾,而且有效地消除了電磁干擾。
2.3單片機(jī)外圍電路
單片機(jī)采用cygnal公司的帶雙串口的c8051f020,一方面實(shí)現(xiàn)了對(duì)無線模塊的初始化和控制,另一方面實(shí)現(xiàn)了與帶有標(biāo)準(zhǔn)rs232串口的通訊。需要說明的是要加電平轉(zhuǎn)換電路,把ttl電平轉(zhuǎn)化為rs232電平,在本設(shè)計(jì)中選用的是sp3223芯片。c8051f020單片機(jī)在功能、性能上比以往的傳統(tǒng)單片機(jī)有了很大的提高,但復(fù)位和時(shí)鐘電路和以前單片機(jī)沒有區(qū)別。增加了jtag接口,能實(shí)現(xiàn)在線下載,在下調(diào)試功能,從而使整個(gè)開發(fā)過程簡單、可靠。
3系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)
系統(tǒng)軟件設(shè)計(jì)就在于單片機(jī)的編程,通過向mg801a模塊發(fā)送不同的at指令來實(shí)現(xiàn)不同的功能,如讀取短信息的內(nèi)容,刪除短信息、列出模塊中還未讀的短信息等。下面主要介紹at指令和雙串口cpu同時(shí)通訊的實(shí)現(xiàn)。
3.1at指令
at(attention)指令最初由hayes公司推出,主要用于對(duì)調(diào)制解調(diào)器的控制,現(xiàn)在已演化為一種標(biāo)準(zhǔn),所有移動(dòng)模塊都支持at指令。雖然不同廠家的手機(jī)模塊都參照gsm協(xié)議,但格式還是有所不同,開發(fā)過程中一定要認(rèn)真參考廠家給的資料。同時(shí)在開發(fā)過程中發(fā)現(xiàn)指令的執(zhí)行過程需要單片機(jī)與手機(jī)交互應(yīng)答完成,每一次發(fā)送或接收的字節(jié)數(shù)有嚴(yán)格的規(guī)定,二者必須依據(jù)這些規(guī)定實(shí)現(xiàn)數(shù)據(jù)交換,否則,通信就是失敗的。筆者經(jīng)過對(duì)幾種手機(jī)模塊反復(fù)測(cè)試,總結(jié)出一些規(guī)律,以下是對(duì)幾個(gè)問題的說明:
所有at指令的指令符號(hào)、常數(shù)、pdu數(shù)據(jù)包等都是以ascⅱ編碼形式傳送的,比如“a”的ascⅱ編碼為41h,“t”的ascⅱ編碼為54h數(shù)字,“o”的ascⅱ編碼為30h等。
單片機(jī)控制手機(jī)工作,如果要發(fā)送中文短信,使用的是gsm模塊必須短信息工作模式設(shè)置為pdu格式,即通過指令at+cmgf=0完成。使用mg801a模塊必須設(shè)置為中文unicode碼格式,即通過at+zmsgl=6,4完成。
單片機(jī)向手機(jī)發(fā)送一條指令后,必須以回車符作為該條指令的結(jié)束,回車的ascⅱ編碼為odh,回車符表示該條指令結(jié)束,如果沒有這個(gè)回車符,手機(jī)將不識(shí)別這條指令。
當(dāng)手機(jī)接收到一條完整的at指令后,手機(jī)并不立即執(zhí)行這條指令,而是:先把剛才接收到的at指令的全部ascⅱ編碼序列全部反發(fā)送出來(含odh);其次發(fā)送一個(gè)回車符和換行符的ascⅱ編碼,即odh和oah;最后才執(zhí)行該條指令。
3.2單片機(jī)雙串口同時(shí)通訊的實(shí)現(xiàn)
由于c8051f020單片機(jī)實(shí)現(xiàn)和上位機(jī)與手機(jī)模塊的同時(shí)通訊,所以采用一片具有雙串口的cpu,該cpu具有2個(gè)串口和2個(gè)串口中斷,串口1中斷處理與上位機(jī)的通訊,串口2中斷處理與手機(jī)模塊的通訊,串口1中斷設(shè)置為高優(yōu)先級(jí)中斷,每接收到或發(fā)送完1個(gè)字節(jié)都進(jìn)人中斷處理,處理完畢立即退出中斷,通訊波特率都為115200b/s,1個(gè)起始位和1個(gè)停止位。
編程語言采用c51語言,盡量采用模塊化、結(jié)構(gòu)化、對(duì)象化編程,使串口通訊程序和其他程序之間、2個(gè)串口通訊程序之間相互獨(dú)立,以減少發(fā)生錯(cuò)誤的機(jī)會(huì)。另外在串口通訊中,還要增加通訊超時(shí)處理機(jī)制,中斷處理中要注意數(shù)據(jù)和程序狀態(tài)的保護(hù),完善出錯(cuò)處理程序等。同時(shí)要解決時(shí)間沖突問題,硬件接收或發(fā)送一個(gè)字節(jié)的時(shí)間與軟件接收或發(fā)送一