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