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