摘 要: 主要介紹了單片機(jī)短信遠(yuǎn)程控制系統(tǒng)的設(shè)計(jì)。該系統(tǒng)以GSM移動通信網(wǎng)絡(luò)作為遠(yuǎn)程控制信號的通信平臺,用戶可通過手機(jī)等設(shè)備向遠(yuǎn)程控制系統(tǒng)發(fā)送特定的指令短信,遠(yuǎn)程控制系統(tǒng)可根據(jù)指令短信的內(nèi)容進(jìn)行判斷并執(zhí)行設(shè)定的命令,控制繼電器開關(guān)的跳變。該遠(yuǎn)程控制系統(tǒng)有較好的研究價(jià)值和發(fā)展前景。
關(guān)鍵詞: TC35;X5045;初始化;遠(yuǎn)程控制
0 引言
隨著通信技術(shù)的發(fā)展,無線通信網(wǎng)絡(luò)在當(dāng)今人們的生活中發(fā)揮著越來越重要的作用,尤其以GSM為代表的手機(jī)移動通信網(wǎng)絡(luò),在工業(yè)控制和遙控領(lǐng)域有不斷擴(kuò)大的趨勢。基于短信的遠(yuǎn)程控制是通過手機(jī)等設(shè)備將控制命令以短消息的方式發(fā)送至手機(jī)通信網(wǎng)絡(luò),手機(jī)通信網(wǎng)絡(luò)即可將控制命令轉(zhuǎn)發(fā)到遠(yuǎn)程控制器,而不需要進(jìn)行撥號連接,從而實(shí)現(xiàn)了對遠(yuǎn)程設(shè)備的控制[1-2]。本文就是根據(jù)這個(gè)原理設(shè)計(jì)了一套基于短信模塊的遠(yuǎn)程開關(guān)控制系統(tǒng),使用的是西門子公司推出的無線通信GSM模塊——TC35,自主研發(fā)的外圍開關(guān)電路實(shí)際應(yīng)用于一套海洋環(huán)境參數(shù)檢測系統(tǒng)的遠(yuǎn)程復(fù)位開關(guān)的控制。
1 TC35模塊
目前,國內(nèi)已經(jīng)開始使用的GSM模塊種類較多,常用的有Falcon的A2D系列、Wavecome的WMO2系列、西門子的TC35系列、愛立信的DM10/DM20系列、中興的ZXGM18系列等。其中,西門子推出的TC35系列模塊設(shè)計(jì)緊湊,集射頻電路和基帶于一體,向用戶提供標(biāo)準(zhǔn)的AT命令接口,兼容性強(qiáng),為數(shù)據(jù)、語音、短消息等提供快速、可靠、安全的傳輸,方便用戶應(yīng)用開發(fā)和設(shè)計(jì),因此其具有很高的性價(jià)比,并且已經(jīng)獲得國內(nèi)無線電設(shè)備入網(wǎng)證[3]。因此,本設(shè)計(jì)選用西門子TC35系列的XC-TC35_V3.0 GSM模塊。
本設(shè)計(jì)中使用的GSM模塊是XC-TC35_V3.0(簡稱TC35),其實(shí)物如圖1所示,圖中已經(jīng)就引腳資源做出了標(biāo)記,后面會給予介紹。
TC35工作在EGSM900和EGSM1800雙頻段,電源范圍為直流3.3~4.8 V,SIM卡電壓為3 V/1.8 V。
TC35的數(shù)據(jù)接口(UART CMOS電平)通過AT命令可以雙向傳輸指令和數(shù)據(jù)。它支持Text和PDU格式的SMS短信,其中,Text支持英文短信的格式,PDU支持中文短信的格式[4-5]。
引腳資源參見圖1。
?。?)電源接頭:5.5×2.1接口輸入電壓7~12 V,實(shí)物中標(biāo)配的是9 V電源。
?。?)電源輸入電壓排陣接口:上正下負(fù),輸入電壓7~12 V。
?。?)電源開關(guān)按鍵。
?。?)4 V電壓輸出排陣接口:上正下負(fù)。
(5)手動/自動啟動設(shè)置:上面兩針相連為手動啟動,右邊兩針相連為自動啟動(詳見使用說明)。本設(shè)計(jì)用于遠(yuǎn)程控制,所以使用自動啟動模式。
?。?)通信模式設(shè)置:與PC通信時(shí),6針全裸;與單片機(jī)通信時(shí),上面4針兩兩上下連接。本設(shè)計(jì)中是與STC89C52RC型單片機(jī)相連。
?。?)DB9串口頭:接PC串口,讓PC與TC35通信。
(8)手動啟動按鍵:手動啟動模式下使用。
(9)串口TTL接口:直接連接單片機(jī),對應(yīng)連接R—P3.0、T—P3.1、GND—GND。
?。?0)語音接口。
?。?1)網(wǎng)絡(luò)指示燈:尋找到網(wǎng)絡(luò)時(shí)指示燈為1亮3滅;沒有網(wǎng)絡(luò)連接時(shí)1亮1滅。
?。?2)來電指示燈:默認(rèn)時(shí)常亮,當(dāng)有來電、短信時(shí)燈會閃爍。
2 硬件電路設(shè)計(jì)
TC35使用的標(biāo)配電源是9 V直流電源,而單片機(jī)的電源是5 V直流電源,為避免使用兩個(gè)電源,在電路中設(shè)計(jì)了電源模塊。開關(guān)選用標(biāo)準(zhǔn)電壓為9 V的繼電器開關(guān)。因?yàn)樵O(shè)計(jì)的開關(guān)電路工作在海洋深處,不方便現(xiàn)場操作,考慮到系統(tǒng)可能會出現(xiàn)死循環(huán)(死機(jī))的情況,所以在電路中使用了X5045芯片的看門狗功能,為系統(tǒng)提供硬件復(fù)位。硬件電路設(shè)計(jì)原理圖如圖2所示。
電源模塊使用標(biāo)準(zhǔn)器件7805將9 V電壓轉(zhuǎn)換為5 V電壓。單片機(jī)選用STC89C52RC,本設(shè)計(jì)中選用P1.7引腳控制繼電器。
X5045是一種三合一功能監(jiān)控芯片,本文中使用其看門狗復(fù)位功能。用SPI總線與處理器通信,是兼有存儲監(jiān)測的單片機(jī)系統(tǒng)的最佳選擇。X5045的引腳封裝圖如圖3所示,其接口說明如下[6]:1為CS/WDI,使能及看門狗復(fù)位輸入;2為SO,數(shù)據(jù)輸出(可與SI復(fù)用);3為WP,寫保護(hù)(低電平有效);4為Vss,參考0電位;5為SI,數(shù)據(jù)輸入;6為SCK,時(shí)鐘輸入;7為RESET,復(fù)位信號輸出(必須接上拉電阻);8為VCC,電源電壓。
X5045與單片機(jī)接口電路如圖3所示,因該電路中只需要看門狗功能,所以沒有對芯片進(jìn)行寫保護(hù),直接將WP引腳接上高電平。另外復(fù)位信號引腳RESET與單片機(jī)的復(fù)位引腳相連,而且必須加上拉電阻。其他4個(gè)引腳與單片機(jī)I/O接口相連即可,可根據(jù)設(shè)定電路方便地選擇合適的I/O接口連接。
X5045在每一次通信之前,都必須輸入2 B的操作數(shù)據(jù)。其中有9 bit是操作地址,3 bit功能選擇位。地址結(jié)構(gòu)如下[6]:
0 0 0 0 A8 M2 M1 M0 A7 A6 A5 A4 A3 A2 A1 A0(A為地址,M為功能)
其第一個(gè)字節(jié)定義了不同的功能,功能選擇表如表1所示。
X5045內(nèi)置一個(gè)狀態(tài)寄存器,其為8 bit數(shù)據(jù),有單獨(dú)的功能操作數(shù)據(jù),用于設(shè)置看門狗和數(shù)據(jù)鎖存。當(dāng)讀寫狀態(tài)寄存器時(shí),地址位數(shù)據(jù)就成為狀態(tài)寄存器的數(shù)據(jù)鏡像。其數(shù)據(jù)結(jié)構(gòu)如表2[6]所示。
其中,7、6兩位必須是0,WD1、WD0是看門狗定時(shí)器復(fù)位時(shí)間選擇,WD1、WD0和定時(shí)器復(fù)位時(shí)間選擇的關(guān)系如表3所示。
BL1、BL0是數(shù)據(jù)分區(qū)保護(hù)選擇,本設(shè)計(jì)中只用到看門狗功能,所以設(shè)置BL1BL0=00,沒有對數(shù)據(jù)分區(qū)選擇保護(hù);WEL是寫保護(hù)位,0為禁寫,1為可寫,且運(yùn)行一次芯片讀寫操作后此位自動置0,所以編程中每運(yùn)行一次都要將該位置1;WIP是芯片讀忙位,0為就緒,1為芯片忙,進(jìn)行讀寫操作前做好先讀此位。
3 系統(tǒng)程序設(shè)計(jì)
程序設(shè)計(jì)過程中,看門狗電路是在系統(tǒng)發(fā)生錯(cuò)誤時(shí)才會被觸發(fā),從而復(fù)位電路。在程序開始,會在初始化中先對X5045進(jìn)行初始化,這樣看門狗就開始工作了。在后續(xù)的程序中,需要算好時(shí)間,在規(guī)定的時(shí)間內(nèi)去“喂狗”,這樣就可以保證系統(tǒng)程序的正常工作了。程序設(shè)計(jì)流程圖如圖4所示。
程序設(shè)計(jì)開始時(shí)要對設(shè)備進(jìn)行初始化,包括初始化串口、TC35和X5045。初始化串口即是對單片機(jī)串口的初始化,不做具體介紹。下面介紹TC35和X5045的初始化過程。
3.1 TC35初始化
前面已經(jīng)提到,TC35模塊支持Text和PDU兩種格式的SMS短信,并且提供了標(biāo)準(zhǔn)的AT命令接口。所以,先向TC35發(fā)送標(biāo)準(zhǔn)的AT命令,做簡單詢問,然后設(shè)定波特率,指令為“AT+IPR=4800”。設(shè)定短信格式為Text格式,“AT+CMGF=1”;設(shè)定字符集‘AT+CSCS=“GSM”’。向TC35發(fā)送的每條指令,其末尾都要有13、10、0,其中13表示回車;10表示換行;0為筆者編程自定義的,作為發(fā)送結(jié)束標(biāo)志。TC35接收到以上發(fā)送來的AT指令,均會響應(yīng):‘OK’、13、10,即命令有效。
初始化之前,需要設(shè)置幾個(gè)標(biāo)志位:
r_OK bit 20H.0;收到TC35發(fā)來OK的標(biāo)志
s_RAM bit 20H.3;1代表令串口輸出RAM數(shù)據(jù)
s_OVER bit 20H.4;1代表串口輸出完畢RAM數(shù)據(jù)
在本文設(shè)計(jì)的程序中,TC35初始化和讀短信程序中反復(fù)調(diào)用串口中斷程序。程序中所有的發(fā)送指令(數(shù)據(jù))和響應(yīng)指令接收數(shù)據(jù)都在調(diào)用中斷程序中執(zhí)行完成,大大減少了編程的復(fù)雜性,提高了編程和執(zhí)行效率。
3.2 X5045初始化
X5045作為一個(gè)獨(dú)立芯片,要使用其看門狗復(fù)位功能,就需要對其內(nèi)部的狀態(tài)寄存器進(jìn)行初始化設(shè)置。主要是先對芯片的讀寫功能進(jìn)行設(shè)置,然后再設(shè)置狀態(tài)寄存器的值。下面是部分初始化程序:
X5045_INIT:
CALL WRITE_ABLE//調(diào)用寫允許子程序
CALL READ_STATUS//調(diào)用讀當(dāng)前寄存器狀態(tài)子程序
MOV B, A
MOV A, 40H
MOV C, ACC.4
MOV B.2,C
MOV C,ACC.5
MOV B.3,C
CLR SCK
CLR CS
MOV A,#WREN_INST
CALL WRITE_EEPROM
MOV A,B
CALL WRITE_EEPROM
CLR SCK
SETB CS
CALL READ_BUSY
RET
狀態(tài)寄存器最高位為1,設(shè)置看門狗的復(fù)位時(shí)間是1 400 ms,設(shè)置WEL=1,所以要在STATBYT存入?yún)?shù)82H。X5045初始化完成后,看門狗開始工作,在1.4 s內(nèi)要給予一次“喂狗”,保證電路正常工作。當(dāng)系統(tǒng)出現(xiàn)死機(jī)或死循環(huán)時(shí),1.4 s內(nèi)沒有“喂狗”,看門狗復(fù)位,系統(tǒng)重啟。
3.3 短信讀取與執(zhí)行
初始化完成后,單片機(jī)會向TC35發(fā)送讀短信指令。根據(jù)TC35的響應(yīng),將TC35發(fā)送回來的字符存入定義好的串口緩沖接收區(qū),再對緩沖區(qū)中的數(shù)據(jù)進(jìn)行分析,判斷短信內(nèi)容是否符合設(shè)定的短信內(nèi)容。如果短信內(nèi)容不符合設(shè)定內(nèi)容,刪除本條短信,再去讀下一條短信;如果符合設(shè)定短信內(nèi)容,則執(zhí)行命令,然后刪除本條短信,再去讀下一條短信。如此單片機(jī)一直處在循環(huán)讀短信的狀態(tài)。在本設(shè)計(jì)中是對P1.7置0,這樣會讓繼電器開關(guān)跳變,從而達(dá)到遠(yuǎn)程控制的目的。
短信內(nèi)容是特定的,不是任意亂發(fā)的,這樣可有一定的安全保證。本文設(shè)計(jì)的短信內(nèi)容為8個(gè)字符:DLXINX01,前面6個(gè)是固定的,代表本機(jī)發(fā)布命令,后面兩個(gè)是可以變化的,00~99可以代表100種不同的命令。因篇幅限制,這里僅給出程序中反復(fù)調(diào)用的核心中斷程序:
UART_INT:
PUSHACC
PUSHPSW
SETBRS0
JBTI,$+5
AJMPRECV
CLRTI//+5發(fā)送中斷處理
MOVA,R3
JNBs_RAM,$+7
MOVR0,A
MOVA,@R0
JMPS_S
MOVCA,@A+PC
S_S: JNZS_BUF//將ROM中的數(shù)據(jù)發(fā)送到TC35
SETB s_OVER//讀短信時(shí),A取到了0,送到了中,
SBUF表示串口發(fā)送數(shù)據(jù)完畢
JMP$+5
S_BUF:MOV SBUF,A
INCR3
CALLRESET_WTD
POPPSW;+5
POPACC
RETI
;------------------------------------
RECV://TC35響應(yīng)單片機(jī)
CLR RI
MOV @R1,SBUF//將TC35發(fā)來的字符存入緩沖
區(qū),主程序開始,已經(jīng)將緩沖區(qū)首地址地址存入R1
CJNE@R1,#10,DY_HAO//10是串口通信的
最后一個(gè)字符,即是TC35返回的字符串的最后一個(gè)字符
MOVA,R1
MOVR0,A
DECR0
CJNE@R0,#13,DY_HAODECR0
CJNE@R0,#′K′,DY_HAO
DECR0
CJNE@R0,#′0′,DY_HAO
SETBr_OK//收到TC35發(fā)來的OK標(biāo)志,響應(yīng)成功
JMPRE_SAVE//保存當(dāng)前指針
DY_HAO:INCR1
CJNER1,#0E8H,RE_EXIT
JMPRE_RST
RE_SAVE:MOVA,R1
MOVR2,A
RE_RST:MOVR1,#SMS_BF
RE_EXIT:CALLRESET_WTD
POPPSW
POPACC
RETI
4 設(shè)計(jì)結(jié)果
短信開關(guān)控制電路的實(shí)物如圖5所示,圖5(a)是TC35模塊,圖5(b)是本文設(shè)計(jì)的開關(guān)控制模塊,按照圖2的電路原理圖將對應(yīng)的引腳連接好。編譯好的程序是從PC中通過下載軟件下載安裝到單片機(jī)中的。為了直觀地看到實(shí)驗(yàn)效果,在繼電器控制引腳接上一個(gè)LED燈,按圖5連接,測試遠(yuǎn)程監(jiān)控的實(shí)現(xiàn)狀態(tài)。繼電器下面設(shè)置4組跳針,兩根連接常開狀態(tài),兩根連接常閉狀態(tài)。將LED連接在常閉狀態(tài),處于常亮狀態(tài),如圖5(b)所示;僅當(dāng)給TC35發(fā)送一條短信且短信內(nèi)容“DLXINX01”時(shí),會看到TC35接收短信的指示燈會熄滅一下(表示已經(jīng)接收到短信),然后聽到繼電器跳變的聲音,同時(shí)LED熄滅,如圖5(a)所示。等設(shè)定的延時(shí)時(shí)間過去,繼電器再跳變回來,LED會重新點(diǎn)亮,變成圖5(b)的狀態(tài)。以上過程已通過實(shí)驗(yàn)驗(yàn)證,證明已經(jīng)實(shí)現(xiàn)了開關(guān)的短信遠(yuǎn)程控制。
5 結(jié)論
本設(shè)計(jì)是基于短信的遠(yuǎn)程控制系統(tǒng)進(jìn)行的,采用的都是低功耗電子元器件,可以有很長的運(yùn)行周期,并且成本低。使用的GSM信號模塊覆蓋范圍廣,因此應(yīng)用范圍也十分廣泛。當(dāng)前設(shè)計(jì)主要是基礎(chǔ)階段,僅考慮了手機(jī)的單方面控制,方便學(xué)習(xí)和掌握。后期可以適當(dāng)增加智能功能,實(shí)現(xiàn)信號的雙向交互,控制的途徑也能更廣泛,這有待進(jìn)一步去優(yōu)化和完善。值得一提的是,短消息在網(wǎng)絡(luò)流量較大時(shí)容易堵塞,所以在實(shí)時(shí)控制方面有一定局限性,但隨著3G和4G通信的發(fā)展,這一局限性也在逐步改善[2]。綜上所述,基于短信的遠(yuǎn)程控制系統(tǒng)具有良好的研究價(jià)值和應(yīng)用前景。
參考文獻(xiàn)
[1] 程全,李向東.基于GSM模塊與AT89C51的接口設(shè)計(jì)及應(yīng)用[J].微計(jì)算機(jī)信息,2006,22(9-2):293-295.
[2] 陳浩,李雪梅.一種基于短消息的智能家居遠(yuǎn)程控制器[J].綿陽師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2013,32(11):47-51.
[3] 潘斌,郭紅霞.短信收發(fā)模塊TC35i的外圍電路設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2004(7):38-41.
[4] 吳玉田,王瑞光,鄭喜鳳,等.GSM模塊TC35及其應(yīng)用[J].計(jì)算機(jī)測量與控制,2002,10(8):557-560.
[5] 陶廣冰.四路短信控制開關(guān)的制作[J].制作項(xiàng)目(電子制作),2012(9):67-71.
[6] 杜洋.監(jiān)控芯片X5045的應(yīng)用[EB/OL].百度文庫,http://wenku.baidu.com/link url=P2EfI5yEzVh7MB4ci26KFJ_4-6cbHY6lbswWIkVW9-tWfKjEa2bIFOVdkcJvS2TCc6_HfAVGx nM6xZYxXfSQTdY9c_0JWuGJHeO9LEcacae.