《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于TC35短信模塊的開關(guān)遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)
基于TC35短信模塊的開關(guān)遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)
2015年微型機(jī)與應(yīng)用第4期
王 超1,郭顯久1,2
(1.大連海洋大學(xué) 信息工程學(xué)院,遼寧 大連 116023; 2.遼寧省海洋信息技術(shù)重點(diǎn)實(shí)驗(yàn)室,遼寧 大連 116023)
摘要: 主要介紹了單片機(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)程控制
Abstract:
Key words :

  摘  要: 主要介紹了單片機(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模塊。

001.jpg

  本設(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所示。

002.jpg

  電源模塊使用標(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,電源電壓。

003.jpg

  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所示。

005.jpg

  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]所示。

006.jpg

  其中,7、6兩位必須是0,WD1、WD0是看門狗定時(shí)器復(fù)位時(shí)間選擇,WD1、WD0和定時(shí)器復(fù)位時(shí)間選擇的關(guān)系如表3所示。

007.jpg

  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初始化


004.jpg

  前面已經(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é)果


008.jpg

  短信開關(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.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。