沒錯!利用強大的GSM網(wǎng)絡(luò),就可以實現(xiàn)單片機和手機之間互發(fā)短信。
我們知道,單片機以其強大的低成本優(yōu)勢和強大的采集、控制、存儲功能在工業(yè)領(lǐng)域已經(jīng)被廣泛使用,而今天我們所要說的,并不是要介紹是如何的強大,也不標榜其在哪個領(lǐng)域的杰出貢獻,我們今天所要說的,就是給單片機插上無線的翅膀,給它配上“手機”,讓其利用成熟的GSM網(wǎng)絡(luò)和遠在海外的您收發(fā)短信。
試想一下,如果單片機自身具備了收發(fā)短信功能,那將是多么令人欣喜若狂的一件事,我們可以利用手機向單片機發(fā)送一條短信,單片機可以根據(jù)不同的短信內(nèi)容,進行不同的動作,比如控制某些管腳的電平,如果外部加個繼電器之類的,就可以用它來控制電源的開關(guān)等,單片機也可以將自身采集到的電壓、電流、壓力等模擬量值發(fā)送到指定的手機上。
下面我們具體來說一下如何使用單片機和手機進行短信收發(fā)!扒蓩D難為無米之炊”,我們也需要幾個“零件”:
1、 單片機:無所謂什么型號,只要能提供串口就行,具體選型主要看其穩(wěn)定性和自身要實現(xiàn)的功能,最后就是性價比了。
2、 GSM短信模塊:這個市面上很多,價格也是參差不齊,我這里選擇西安達泰電子的T09C短信模塊,個人覺得相對比較穩(wěn)定,主要是它提供標準的AT指令,這樣對于以后的產(chǎn)品升級或更換都有所保障;提供標準的RS232接口可以方便地與電腦的串口連接,通過提供的PC機測試軟件方便進行電腦調(diào)試,幫助我們盡快上手。好多公司的同類產(chǎn)品將AT指令封裝成自己的指令,這可能影響以后的產(chǎn)品改造和升級。
3、 相關(guān)配件:5V電源、GSM天線、SIM卡、一些電子元器件。其中的5V電源和GSM天線在購買時作為贈品已經(jīng)提供給我們了,SIM卡就到當?shù)匾苿臃⻊?wù)廳辦一張就行了,注意不能使用CDMA和3G卡,電子元器件主要部分是RS232轉(zhuǎn)TTL的電平轉(zhuǎn)換,我推薦常用的MAX232。
我想對于單片機和MAX232以及RS232接口之間的連接,搞過單片機的朋友都是輕車熟路了,為了節(jié)省互聯(lián)網(wǎng)資源,我就不再重復(fù)。而SIM卡和GSM以及電源的連接,T09C都提供相關(guān)的接口,即所謂的零插撥式的,絕不會插錯。
下面我主要來說一下如何使用單片機程序?qū)崿F(xiàn)短信收發(fā),今天我們只談?wù)動⑽亩绦诺氖瞻l(fā),中文短信收發(fā)相對比較麻煩一點兒,主要是中文的編碼部分,但其流程和英文短信是一致的(如需收發(fā)中文短信,請參見相關(guān)PDU短消息格式說明等相關(guān)文檔),這里只說一下短信收發(fā)的流程。
1、 短信發(fā)送(通過單片機串口收發(fā)指令,/**/內(nèi)為注釋,<CR>表示回車,ASC碼為0x0D+0x0A)
發(fā)送:AT<CR> /*檢測模塊是否工作正常*/
接收:OK /*串口返回OK表示模塊工作正常*/
發(fā)送:AT+CMGF=1<CR> /*配置模塊工作于TEXT模式,用于發(fā)送英文短信*/
接收:OK /*配置成功*/
發(fā)送:AT+CMGS=”131XXXX4321”<CR>/*配置要接收的手機號碼*/
接收:> /*返回“>”符,表示可以發(fā)送短信*/
發(fā)送:Message Content /*要發(fā)送的短信內(nèi)容“Message Content ”,
只能在接收到“>”符號后發(fā)送短信內(nèi)容*/
其中“”符號為短信結(jié)束符,ASC碼值為(0x1A),不作為短信內(nèi)容發(fā)送*/
接收:+CMGS:<mr><CR>
OK /*短信發(fā)送成功,<mr>為消息參考值,由模塊
自動分配*/
2、 讀取短信
接收:+CMTI: "SM",n<CR> /*收到新短信息提示*/
發(fā)送:AT+CMGR=n<CR> /*讀取第n條短信*/
接收:+CMGR: "REC UNREAD", "86XXXX4321","98/10/01,18 :22 :11+00", 80.22<CR>
OK /*短信讀取成功,“86XXXX4321”為
目標電話號碼,“80.22”為短信內(nèi)容*/
如何判斷當前接收到的短信為第幾條短信,從而使用AT+CMGR=n來讀取該短信呢?當然,我們可以使用串口中斷來接收串口數(shù)據(jù),當有新的短信到達時,串口會接收到諸如“+CMTI: "SM",n”的字符串,其中n就是新收到的短信存儲位置,通過字符串截取可以獲取n的值,這樣就可以利用AT+CMGR=n來讀取新收到的短信內(nèi)容了,然后通過字符串分隔,分別獲取短信接收時間、目標電話號碼、短信內(nèi)容等。
既然可以收發(fā)短信了,通俗點兒講,就是使單片機與手機之間建立了一條數(shù)據(jù)通道,可以利用這條數(shù)據(jù)通道來進行數(shù)據(jù)傳輸,如果通過手機向單片機發(fā)送不同的短信內(nèi)容,單片機根據(jù)短信內(nèi)容進行相關(guān)動作,比如控制外部繼電器等,那樣手機控制遠程設(shè)備將不再是夢想;同理,單片機也可以通過短信的形式,將采集到的相關(guān)信息發(fā)送到指定的手機上。 如果在PC機上通過RS232串口連接一臺T09C短信模塊, PC機上開發(fā)一套管理軟件,該軟件負責短信的收發(fā)及處理,這樣以來,不需要額外申請什么短信網(wǎng)關(guān)之類的,就可以建立強大的遠程監(jiān)控系統(tǒng)平臺
|