因為手機工作的無線網絡覆蓋范圍廣,在信息傳遞方面性能穩定、可靠,所以把手機作為信息傳遞的載體,與單片機結合起來構成應用系統有著強大的生命力和廣闊的應用空間,特別是在遠程數據傳輸、遠程監控等領域更是受到電子設計應用工程師的關注。一些專業刊物也介紹了一些有關這方面的文章,然而由于手機的控制指令復雜,數據格式繁瑣,工程技術人員在進行單片機與手機的硬軟件接口設計時經常會遇到很多困難,有時還無資料可查。在完成一個項目的開發過程中,針對幾種手機進行了大量的測試和實驗,在此基礎上歸納出一些帶規律性的結論,對此結論,工程設計人員可拿來即用,大大縮短研發周期,現在把它公布出來,愿與廣大電子設計人員共享。
1 硬件接口技術方面
目前市場上流行的大部分手機幾乎都具有數據引出口,并基本上都支持與GSM短信息相關的AT控制指令(GSM-SMS-AT指令),手機通過數據口以串行方式接收指令并向外輸出數據。理論上講,在數據口中找出RxD、TxD和GND引腳與單片機的串口對應連接即完成了硬件接口。
然而,實際上由于不同品牌,不同型號手機的RxD、TxD和GND引腳并非一致,找查這三根線有時也非易事;況且手機數據口的電平既不是RS232電平,也不是TTL電平,與由5V供電的單片機串口還不能直接連接。最簡單可靠的方法是使用手機的數據線建立單片機與手機的硬件連接。手機數據線是專為連接PC機9針串口而設計的,信號電平為標準的RS232電平,只要單片機的串口也轉換為Rs 2 3 2電平,就可方便連接。9針串口引腳定義是固定的,即2腳為TxD(手機發送),3腳為RxD(手機接收)、5腳為GND。這樣,無論什么型號的手機與單片機的連接就成了固定連接,不需要知道手機數據口信號的具體定義,二者通過數據線的連接電路如圖1所示。
需要注意的是:不同手機數據線內部電平轉換芯片的供電方式是不同的,有的是通過手機直接供電;有的是通過竊取PC機串口某些引腳(通常為4、6、7、8引腳)的電流經內部整流濾波穩壓后提供。判斷的方法是將數據線一端插到手機數據口,測量另一端2腳與5腳之間的電壓,如果有一7V左右的電壓,則為前者,如果測不出電壓,則為后者,對于后者則需要單片機為4、6、7、8引腳任意一引腳提供+5V電壓即可,如圖1中虛線所示。
2 軟件接口技術及控制原理
單片機與手機的軟件接口其實就是單片機通過與GSM短信息有關的AT指令控制手機的控制技術,如讀取手機的短消息內容,刪除短消息內容,列出手機中還未讀的短消息等。關于AT指令的功能描述見參考文獻[1,2]的文章內容,此處不再贅述。然而,執行一條指令,也并非某些資料中介紹得那么簡單。事實上,指令的執行過程需要單片機與手機交互應答完成,每一次發送或接收的字節數有嚴格的規定,二者必須依據這些規定實現數據交換,否則,通信就是失敗的。筆者經過對幾種手機反復測試,總結出來一些規律,如表1所列。
對幾個問題說明如下。
①所有AT指令的指令符號、常數、PDu數據包等都是以ASCII編碼形式傳送的,比如“A”的ASCII編碼為41H,“T”的AscII編碼為54H,數字“0,,的AsCⅡ編碼為30H等。
②單片機控制手機工作,必須把手機的短信息工作模式設置為PDu格式,即通過指令AT+cMGF=O完成。
③單片機向手機發送每一條指令后,必須以回車符作為該條指令的結束,回車的ASCII編碼為0DH。例如,單片機向手機發送“AT+CMGF=0”這條指令,其ASCII編碼序列為“41H、54H、2BH、42H、4DH、47H、46H、3DH、30H、0DH”,最后一個字節0DH就是回車符,表示該條指令結束,如果沒有這個回車符,手機將不識別這條指令。
④當手機接收到一條完整的AT指令后,手機并不立即執行這條指令,而是先把剛才接收到的AT指令的全部ASCII編碼序列全部反發送出來(含0DH),然后發送一個回車符和換行符的ASCII編碼,即0DH和0AH,最后執行該條指令。
⑤手機向單片機傳送短信息內容時,其PDu數據包的內容是以十六進制表示的數據,但并不是直接向單片機傳遞十六進制數據,而仍然是把每一位十六進制數以AscII編碼來發送。這樣,二個字節的十六進制數就變成4字節的ASCII碼。但是,PDU數據包中的數據字節長度部分仍然是實際字節長度,而不是變成AscII碼的字節長度,這在編程時應特別注意,否則,接收的數據就不完整。單片機接收到PDU數據包數據后,必須將其恢復成十六進制數據,其算法如下:設a為接收的ASCII碼,b為轉換后的十六進制數。如果a39H,則b=a-30H-07H,最后把前后兩個數合并為一個字節。
⑥手機向單片機應答PDU數據包的字節數不包括前9字節數據(短信服務中心地址),但向單片機傳送PDU數據包時,包括這9個字節的數據。例如,如果手機應答的PDU數據長度為50,而實際向單片機傳送的十六進制數據為59字節,ASCII碼為2×59字節,所以,單片機必須按2×59字節接收PDU數據。
3 應用實例
利用上述原理和接口技術開發了一個項目:高速公路顯示導引系統。安裝在高速公路上的LED顯示屏實時顯示前方路段車輛通行態勢和天氣氣候情況,提醒并引導駕駛人員,正確駕駛。
該系統的使用一定程度上消除了許多交通事故隱患,從而保障了道路的暢通和人民生命財產的安全。該系統由控制中心和若干個顯示屏組成。控制中心實時將最新信息發送到各顯示屏。構建控制中心與顯示終端的通信鏈路,傳統的方法要么鋪設光纜用有線方式實現,要么構建專用無線網用無線方式實現。因為高速公路的特殊性,控制中心與顯示終端之間的距離通常很遠,兩種方案都必須投入大量資金和巨大的施工工作量。如果采用GSM公眾無線傳輸網絡,控制中心以短信息的形式把顯示信息發送到顯示終端的技術方案,則具有投資小,施工方便,工作可靠,運行費用低等諸多優點。
在控制中心,微機編輯好短信息后通過手機這個載體發送出去。在顯示終端,單片機通過讀取手機的短信息把它顯示到LED顯示屏上。項目的核心技術是單片機與手機的接口和PDU數據包中的漢字信息編碼。因為短信息中的漢字僅僅是一個編碼,單片機應用系統將編碼變為漢字點陣數據,必須配置漢字字庫。按GSM07.05協議規定,短信息中的漢字編碼為Unicode編碼,如果構建一個Unicode編碼的漢字字庫,確實是一件繁瑣的工作,因此,在設計單片機應用系統時,采用如下兩點技術措施。
①單片機系統配置的字庫為GB-2312編碼的漢字庫,即區位碼漢字庫,該漢字庫在網上可免費下載,固化到Flash存儲芯片中即可。當然這樣做的前提是PDU數據包中的漢字編碼必須為漢字內碼而非Unicode編碼。
②控制中心編輯PDU數據包數據時,采用自定義數據方式,其中,代表漢字的數據,直接取用漢字的機內碼即可,免去了把機內碼再轉換為Unicode編碼之苦。實踐證明,這是可行的。
采用以上技術措施的優點,一是省去了兩種編碼的相互轉換;二是保證了數據的保密性,非系統內用戶無法接收,即使接收也無法顯示。
該項目研制成功投入使用后,因顯示終端只接收不發送,幾乎沒有運行成本。發送端(控制中心)可采用月租方式,也能把運行費用降低到最低限度。因此該項目得到用戶滿意的評價。
責任編輯:gt
-
單片機
+關注
關注
6044文章
44632瀏覽量
639194 -
手機
+關注
關注
35文章
6907瀏覽量
158437
發布評論請先 登錄
相關推薦
評論