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