基于DTMF技術(shù)與射頻技術(shù)的遠程控制的實現(xiàn)
摘 要:介紹了以AT89S52單片機為控制核心,利用DTMF發(fā)送/接收一體芯片MT8880和公共電話網(wǎng)以及全球移動通信網(wǎng)(GSM),并加上ASk方式的無線射頻收發(fā)技術(shù)實現(xiàn)遠程控制。
公共電話網(wǎng)和全球移動通信網(wǎng)(GSM)的語音和數(shù)據(jù)量的傳輸主要通過DTMF技術(shù)實現(xiàn)。本文介紹了一種基于DTMF收發(fā)技術(shù)和無線射頻技術(shù)相結(jié)合實現(xiàn)遠程控制的方法。例如在辦公室打電話回家遠程查詢、開啟或關(guān)閉家里的各種電器設(shè)各,使生活變得更加舒適安全便捷;也可以應(yīng)用于對人有毒害的工作場合,工人可以通過遠程操作相關(guān)的設(shè)各完成特定的工作內(nèi)容。
1、 DTM F技術(shù)及其硬件電路設(shè)計
1.1 DTMF電話原理介紹
雙音多頻DTMF(Double Tone MultiFrequency)作為實現(xiàn)電話號碼快速可靠傳輸?shù)囊环N技術(shù),具有很強的抗干擾能力和較高的傳輸速度,可用作電話的音頻撥號,也可以在數(shù)據(jù)通信系統(tǒng)中用來實現(xiàn)各種數(shù)據(jù)流和語音等信息的遠程傳輸。
DTMF是用兩個特定的單音頻組合信號來代表數(shù)字信號以實現(xiàn)其功能的一種編碼技術(shù)。國際上采用的頻率有:697 Hz、770 Hz、852 Hz、941 Hz、1 209 Hz、1 336 Hz、1477 Hz和1633 Hz等8種。用這8種頻率可形成16種不同的組合,從而代表16種不同的數(shù)字或功能鍵,具體組合如表1所示。
表18種音頻的16種組合表
DTMF信號的產(chǎn)生原理:雙音頻信號是兩個正弦波信號的疊加,選定兩個頻率f1和f2后很容易地得到這種信號的數(shù)學(xué)表達式:
1.2電話通信的實現(xiàn)
1.2.1振鈴青的檢測
當(dāng)用戶被呼叫時,電話交換機發(fā)來鈴流信號,振鈴為(25±3)Hz的正弦波,諧鈴失真不大于10%,電壓有效值為(90±15)Ⅴ。振鈴以5 s為周期,即1 s送、4 s斷。根據(jù)振鈴信號電壓比較高的特點,可以先使用高壓穩(wěn)壓二極管進行降壓,然后輸人至光電耦合器。經(jīng)過光耦的隔離轉(zhuǎn)換,從光電耦合器輸出的波形是時通時斷的正弦波,經(jīng)過RC回路進行濾波輸出標(biāo)準(zhǔn)的方波。方波信號就可以直接輸出至單片機的中斷計數(shù)器輸人口,完成整個振鈴音檢測和計數(shù)的過程,如圖1所示。
1.2.2 自動摘掛機
程控電話交換機對電話摘機的響應(yīng)是電話線回路電流突然變大至約30 mA,即當(dāng)程控交換機檢測到電話線回路中的電流變大時,則認(rèn)為電話機已經(jīng)摘機。
自動摘掛機電路可以通過單片機控制一個繼電器的開關(guān),繼電器的控制端將一個約300Ω的電阻接人電話線兩端,從而完成模擬摘掛機,如圖1所示。
圖1 MT8880與單片機接口電路
1.2.3雙音頻解碼
本文使用電話專用的雙音頻編解碼芯片MT8880進行輸人雙音頻信號的解碼。經(jīng)過專用集成電路的解碼,信號轉(zhuǎn)換成為不同的碼制信號,可以直接被單片機讀取。
1.3 DTMF信號收、發(fā)芯片MT8880簡介
MT8880是加拿大MITEL公司生產(chǎn)的DTMF收發(fā)一體的集成電路,該芯片集成度高,內(nèi)部含有一個帶增益可調(diào)放大器的DTMF接收器和一個DTMF發(fā)送器。接收器采用集頻帶分離濾波器和數(shù)字解碼為一體的結(jié)構(gòu)形式。其中濾波電路采取高頻群和低頻群兩個六階開關(guān)電容濾波器,解碼采用數(shù)字計數(shù)器技術(shù)來確定輸人DTMF信號的頻率,并譯成4位二進制碼。發(fā)送器采用開關(guān)電容D/A變換器,可發(fā)出16種雙音多頻DTMF信號。接收部分用于完成DTMF信號的接收、分離和譯碼,并以4位并行二進制碼的方式輸出。
1.4 MT8880與單片機控制接口
MT8880使用標(biāo)準(zhǔn)的單片機控制接口,單片機可以精確地完成接收和發(fā)送功能,允許單片機訪問其內(nèi)部一個狀態(tài)寄存器、2個控制寄存器和2個數(shù)據(jù)寄存器。
MT8880內(nèi)部有2個數(shù)據(jù)寄存器,一個是只執(zhí)行讀操作的接收數(shù)據(jù)寄存器RDR;另一個是只執(zhí)行寫操作的發(fā)送數(shù)據(jù)寄存器TDR。另外,MT8880中還有2個4位的收、發(fā)控制寄存器ORA和CRB(這2個寄存器位于同一地址空間)。對CRB的操作通過CRA中的一個特定位b3來實現(xiàn),在寫CRA后,接著對同樣地址進行特定操作以把數(shù)據(jù)寫人CRB,再次寫時又指向CRA。在上電時,內(nèi)部設(shè)置電路先要清除控制寄存器,因此作為防范措施,軟件應(yīng)設(shè)置清除寄存器的初始化程序;而MT8880中的4位狀態(tài)寄存器SR則用來反映收、發(fā)信號的工作狀態(tài)。寄存器的選擇與操作由RS0和R/W口線來控制,當(dāng)需要接收DTMF信號時,首先往控制寄存器CRA和CRB寫人相應(yīng)的控制字,把MT8880芯片設(shè)置為DTMF模式,通過讀取狀態(tài)寄存器中的D2位,可以判斷是否收到一個有效的DTMF信號并已譯碼。若已收到則讀取內(nèi)部“接收數(shù)據(jù)寄存器”的內(nèi)容(從IV[T8880芯片的DO~D3腳讀出)。當(dāng)需要發(fā)送DTMF信號時,同樣應(yīng)先往控制寄存器CRA和CRB寫人相應(yīng)的控制字,把MT8880芯片設(shè)置為DTMF模式,通過讀取狀態(tài)寄存器中的Dl位,可以判斷是否發(fā)送完一個DTMF信號。若已發(fā)送完,則把下一個要發(fā)送的數(shù)字由Dl~D3腳寫人到內(nèi)部“發(fā)送數(shù)據(jù)寄存器”。如果MT8880芯片同時又被設(shè)置為中斷模式,則通過檢測IRQ端狀態(tài),也能判斷一個DTMF信號收到或發(fā)送完畢與否。其應(yīng)用電路見圖1。
1.5手機模塊與單片機控制接口
絕大多數(shù)的手機也與固定電話一樣有振鈴信號,也可以收發(fā)DTMF信號,只要對普通手機稍做改動即可,即把手機的鈴流信號接出來,同時把手機的耳機口分成兩路(一路為DTMF輸出即耳麥線,另一路為DTMF輸人即話筒線),手機模塊與單片機的接口電路如圖2所示。
圖2手機模塊與單片機接口電路
2、射頻技術(shù)及其硬件電路設(shè)計
微功率無線射頻技術(shù)主要用于特定環(huán)境下的數(shù)據(jù)傳輸,常用于現(xiàn)代家庭多路電源的集中控制、智能小區(qū)物業(yè)管理、防盜報警、無線水塔控制、無線抄表、航空、航模和遙控遙測等場合。
本文采用的無線編解碼芯片是PT2262/2272,是臺灣普城公司生產(chǎn)的一種CM05工藝制造的低功耗低價位通用編解碼電路,PT2262/2272最多可有12位(A0~All)三態(tài)地址端管腳(懸空、接高/接低電平),任意組合可提供531441個地址碼,PT2262最多可有6位(DO~D5)數(shù)據(jù)端管腳,設(shè)定的地址碼和數(shù)據(jù)碼從17腳串行輸出,可用于無線遙控發(fā)射電路。
本文使用的無線發(fā)射頭與無線接收頭是現(xiàn)成的模塊。單片機與無線發(fā)射頭的接口電路框圖如圖3所示。無線接收頭經(jīng)解碼輸出后驅(qū)動電路框圖如圖4所示。
圖3單片機與無線發(fā)射頭的接口電路框圖
圖4無線接收頭經(jīng)解碼輸出后驅(qū)動電路框圖
3、遠程控制應(yīng)用實現(xiàn)
為了實現(xiàn)對多點設(shè)備的控制,無線編碼芯片PT2262的地址線選用A0~A7地址腳和DO~D3數(shù)據(jù)腳,這12個口線均通過單片機AT89S52來控制。由于單片機很容易實現(xiàn)“0”和“1”控制,所以單片機對A0~A7這8個地址線的控制可實現(xiàn)256種狀態(tài),即最多可以控fitJ 256種設(shè)備(每一個PT2272解碼芯片輸出對應(yīng)于一種受控設(shè)各);同樣地,單片機對DO~D3這4條數(shù)據(jù)線的控制可實現(xiàn)16種狀態(tài),即對同一設(shè)各可實現(xiàn)最多16種方式的操作。本文實現(xiàn)的是異地遠程呼叫處理工廠各個無人操作車間的測試儀器,并能遙控操作進行相關(guān)的測試任務(wù)。系統(tǒng)框圖如圖5所示。
圖5 遠程控制應(yīng)用系統(tǒng)框圖
系統(tǒng)的工作流程如下:單片機主板可以接人固定電話線也可以接人一個手機模塊(專為沒有預(yù)裝固定電話的區(qū)域使用),操作員在異地拔打本地電話號碼(或手機號碼),單片機主板會自動檢測振鈴信號,然后自動摘機,并提示操作員輸人密碼。當(dāng)單片機主板驗證通過后,操作員就可輸人地址碼(對應(yīng)于一臺測試儀器,如001號)和操作碼(當(dāng)前測試機的測試任務(wù),如A字符,代表打開測試機電源),單片機主板識別后,通過編碼芯片送給無線發(fā)射頭,無線發(fā)射頭按特定的規(guī)則送出地址碼和操作碼,每一臺測試機上的無線接收頭都能接收到該無線信號,但只有與編碼芯片的地址匹配的那臺測試機才會響應(yīng)并執(zhí)行操作碼。
4、軟件實現(xiàn)
軟件部分主要分為三部分:(1)正確檢測到固定電話的振鈴音并自動摘機或手機模塊自動接通接聽中的鈴流信號;(2)對DTMF信號的接收和發(fā)送處理,實現(xiàn)身份認(rèn)證、向用戶發(fā)送提示音、接收用戶輸人的控制指令等。(3)控制編碼芯片地址線和數(shù)據(jù)線,從而把控制指令無線傳輸出去。
4.1固話振鈴音的檢測及處理
針對固定電話、結(jié)合圖1,單片機AT89S52的TEST腳檢測到固定電話振鈴檢測信號波形,AT89S52只要判斷TEST腳的電平變化即可以正確檢測外線是否有電話撥人,然后控制TRI腳吸合繼電器實現(xiàn)模擬摘機。
針對手機模塊、結(jié)合圖2,本文選用的是一款諾基亞手機(手機設(shè)為自動接聽模式),經(jīng)局部改造提到鈴流信號線送人單片機AT89S52的GSM-RING的lO腳上,常態(tài)下為高電平,當(dāng)有電話打過來時,GSM-RING的lO腳上得到的波形如圖6所示。所以單片機只要AT89S52判斷GSM-RING的lO腳的電平變化情況就可以了。
圖6手機模塊鈴流信號波形
4.2 DTMF信號的收發(fā)處理
當(dāng)固定電話或手機模塊自動摘機后,則啟用DTMF收發(fā)處理程序(主要是對MT8880芯片的處理),關(guān)鍵的程序代碼如下[3]·
“讀MT8880狀態(tài)或數(shù)據(jù)寄存器”函數(shù):
〃功能說明:讀取MT8880狀態(tài)寄存器
〃輸出參數(shù):返回MT8880的狀態(tài)寄存器值
//DTMF REG為與MCU的接口寄存器,在"DTMF H"有定義
uchar DTMF_CPR(void)
?。?/p>
uchar uc_data;
DTMF_Q2=1;
noD();
_nop_();
uc_data=DTMF_REG;IlC_data=uc_data&0x0f;pTMF_07v"=0;
return(uc_d·ata);
?。?/p>
“寫MT8880控制或數(shù)據(jù)寄存器時序”函數(shù):
//功能說明:MT8880的Q2時序控制
void DTMF_CPW(void)
?。?/p>
DTMF_Q2=1; //Q2=1產(chǎn)生Q2的上升沿
non_();//Q2的高電平持續(xù)
_nop_();
uc_data=DTMF_REG;//讀MT8880狀態(tài)寄存器
uc_data=uc_data&0x0f;//屏蔽高四位,只取低4位
DTMF_Q2=0;//Q2=0完成一個Q2時鐘
return(uc_data);
?。?/p>
“MT8880發(fā)送前的初始化”函數(shù):
//功能說明:發(fā)送前的初始化(對MT8880控制寄存器的
//操作)void DTMF-send-init(void)
?。?/p>
DTMF_REG=0x49;
//寫1001到MT8880控制寄存器CRA(允許發(fā)送)
DTMF_CPW(); //寫人控制器寄存器
DTMF_REG=0x40;//寫0000到MT8880控制寄存器CRB
DTMF_CPW(); //寫人控制器寄存器}
“MT8880接收前的初始化”函數(shù):
//功能說明:接收前的初始化(對MT8880控制寄存器
//的操作)void DIME rec init(void)
?。?/p>
DTMF_REG=0x4C;
//寫1100到MT8880控制寄存器CRA(使能中斷模式,接著寫CRB)
DTMF_CPW();
DTMF_REG=0x40; //寫 0000到MT8880控制寄存器
//CRB
DTMF_CPW();
?。?/p>
“MT8880接收1位DTMF”函數(shù):
//功能說明:接收1位DTMF信號
//返回參數(shù):接收到數(shù)據(jù)存于A//DTMF REG為與MCU的接口寄存器,在"DTMF.H"有定義
//READSR為讀狀態(tài)寄存器SR時臨時存儲器,在"DTMF.H"
//有定義
uchar DTMF_rec_1 byte(void)
?。?/p>
uchar uc_data;
DTMF_REG=Ox⒍;//CS=0 RS0=1 RW=1 Q2=0
READSR=DTMF_CPR(); //讀狀態(tài)寄存器SR
while(SRBZ! =1);
//判斷SR的b2=1嗎?=1說明收到有效數(shù)據(jù)
DTMF_REG=0x2f;
uc_data=DTMF_CPR();//讀取數(shù)據(jù)
return(uc_data);
)
“MT8880發(fā)送1位DTMF”函數(shù):
//功能說明:發(fā)送1位DTMF信號
//輸人參數(shù):待發(fā)送數(shù)據(jù)給A//DTMF-REG為與MCU的接口寄存器,在"DTMf. H"有定義//READSR為讀狀態(tài)寄存器SR時臨時存儲器,在"DTMF.H"
//有定義
void DTMF send_lbyte(uchar uc_data)
?。?/p>
DIME_ON();
DTMF_Q2=0;
DTMF RS0=0:
DTMF RW=0:
DTMF RFC=uc data:
DTMF CPM():
delay_ms(130);
//突發(fā)模式,送出后延時的100 ms再讀狀態(tài)寄存器
DTMF ̄REG=0x6f;//CS=0 RS0=1 RW=1 Q2=0
READSR=DTMF CPR():
}
4.3對編碼芯片地址線和數(shù)據(jù)線的控制
已正確識別用戶通過DTMF技術(shù)輸人的控制指令后,單片機只要控制8位地址線和4位數(shù)據(jù)線這12個lO口的高低電平就可以啟動無線傳輸。而在無線接收端是由硬件電路自動完成的,不需要軟件控制。
本文介紹的技術(shù)已在實際項目中運用,系統(tǒng)運行穩(wěn)定。如果增加語音提示功能,則整個系統(tǒng)能做得更加完善和更加人性化。要實現(xiàn)語音提示功能,只要增加一塊語音錄放芯片就可以了。