摘 要:以HT46RU232单片机为核心,配接DTMF的MT8870解码芯片和ISD2560语音芯片,使用电话通信网络,设计一个智能家居电话远程控制系统。用于校验用户身份、远程控制家用电器、语音提示引导操作、家电状态查询等。可使操作者根据各种提示音及时了解受控对象的有关信息,并通过电话远程控制多个受控对象,实现家电的远程智能化控制。具有推广价值。
关键词:单片机;电话网络;智能家居;远程控制
利用现有的个人通信终端,实现基于陆基移动通信网(PLMN)和公用电话交换网(PSTN)的电话远程控制系统,将传统的个体电器进行智能化的统一管理和控制,如家用电器的定时开启、家居环境的监听等,可使人们尽情享受高科技带来的简便而时尚的现代生活[1]。
1 电话远程控制系统的功能与体系结构
1.1 功能
(1)远程家电控制功能。通过电话终端通信设备对家中电器实现远程控制,如控制电饭煲煮饭、空调开机等。
(2)自动模拟摘挂机。在规定的振铃次数内,认为是正常来电,可正常通话;超过规定振铃计数,系统自动模拟摘机。
(3)主人身份校验。密码操作。
(4)语音提示。按提示音操作。
(5)声音监听。通过电话遥控家中座机模拟摘机,监听家居环境声音,随时了解家中情况。
(6)电器延时开、关。控制家电开关机的定时时间,更好地服务主人。
(7)状态查询。随时查询家用电器的工作状态。
1.2 体系结构
本系统以单片机为核心,加上振铃检测与模拟摘机电路、声音监听与语音提示电路、双音多频信号DTMF(Dual Tone Multi Frequency)解码电路、密码存储及家电控制电路等构成,系统总体框图如图1所示。根据电话机和交换机发出的不同信号音以及电话线各种状态的不同要求,结合实际情况对具体的单元功能模块作出软件或硬件上的不同分工。其中,信号音检测、自动摘挂机、控制电器、DTMF解码及密码存储等功能模块使用硬件电路实现,而信号音计数、密码校验、信息分析、电器状态查询、密码修改等功能模块使用软件编程完成。
2 硬件系统设计
2.1 单片机系统设计
本系统的一大特点是采用了盛群公司的HT46RU232单片机[2]。HT46RU232是一款8 bit的精简指令集单片机,有4 096×16 bit程序存储器 ROM、192×8 bit数据存储器RAM、 1个8 bit和2个16 bit的具有溢出中断的可编程定时/计数器、八层硬件堆栈、有可降低功耗的HALT和唤醒功能等。不但运算速度快,集成功能强大,而且价格更便宜,非常适合于家用电器及工业控制。HT46RU232有28脚和48脚DIP两种封装形式(主要是I/O引脚数目不同),本系统根据实际需要选用28脚封装,使硬件装置体积大为缩小,系统性价比更高。本文主要给出应用电路设计,其芯片介绍可参阅参考文献[3]。
设计系统采用单片机最小系统方式工作,如图2所示。单片机外接晶振和复位电路,PA、PB、PC、PD 4个口全部用作外接电路的输入/输出。其中,PC0、PC1和PC2用于振铃检测和模拟摘机,PB口和PA4、PA6、PA7用于语音提示及声音监听,PA0~PA3及PA5用于DTMF检测;PC3和PC4用于密码存储,PD0和PD1用于电器控制。需要注意的是,HT46RU232单片机晶振频率采用的是4 MHz或8 MHz,而复位采用的是低电压复位方式,与80C51单片机系统不同。
2.2 振铃检测及模拟摘机电路
振铃检测及模拟摘机电路主要包括振铃检测、模拟摘机和摘机监测三个功能[4],如图3所示。
(1)振铃检测:检测有无铃流。在电话线路未来铃流前,电话线路由电话交换机提供约48 V的直流电压,直流信号不能通过电容C4、C9,所以光耦U3不起作用,振铃信号检测端PC2输出高电平。当用户被呼叫时,电话交换机发来振铃信号,振铃为25±3 Hz 的正弦波,以5 s为周期,(1 s送,4 s断),振铃电压有效值为90±15 V。振铃信号通过C4、C9,再经过光耦U3的隔离转换,输出很标准的方波。方波信号由PC2端口输入单片机进行计数,完成振铃音次数的检测。
(2)模拟摘机:当单片机的振铃计数达到预定的次数(振铃计数可以由软件设定)仍无人摘机时,系统即认为不是进行正常通话,而是要进行家电的远程控制。则单片机通过输出口PC0发出一个低电平,光耦U2工作,Q2基极得到一个高电平,Q2、Q1导通,平时48 V的高电压通过Q1、发光二极管D4和R27后降为7 V~8 V的低电压,从而实现了模拟摘机功能。
(3)摘机监测:电路中的DW1、R7、R26、C13、U6 组成电话线路摘机监测,平时电话线路的48 V电压使得DW1击穿,光耦U6工作,PC1输出低电平。当系统接收到振铃信号且达到规定的振铃次数后模拟摘机时,电话线路上电压由原来的48 V下降到7 V~8 V,此时DW1 截止,U6停止工作,PC1输出高电平。即单片机测试到PC1脚的高电平,就可确定系统已经模拟摘机,从而进行下一步的语音提示功能操作及DTMF解码工作。
需要注意的是,振铃检测与模拟摘机部分是电话网络的48 V高电压,与系统其他部分的5 V电压不同,必须隔离。单片机与本部分电路连接所用的I/O口都采用了光电耦合,语音电路输出给本部分电路的音频信号采用变压器耦合才能正确传输。
2.3 语音提示及声音监听电路
语音提示是系统的重要组成部分,能为用户提供直观的反馈信息,引导用户更好地进行系统的操作。语音芯片能将需要的操作规则事先存于芯片中,根据不同的DTMF信号产生不同的提示信息,从而完成控制整个系统的目的。由于需要存储的信息容量比较大,本系统选用了ISD2560语音芯片,其电路如图4所示。
声音监听和语音提示都由PA4进行控制,监测家居环境的声音信号由安置在房间内的MIC 话筒产生,而语音信号由ISD2560语音芯片输出。当PA4为高电平时,三极管Q7截止,对声音信号和语音信号没有放大功能;当PA4为低电平时,三极管Q6、Q12导通,继电器K3动作,K3触头控制ISD2560 Q7的SP-接地,三极管Q7 导通,对信号有放大作用。通过电话线传输,此时用户在远处通过电话或手机就可实现对家居环境的监听或者自动语音提示。
ISD2560是高度集成的语音芯片,可录60 s的语音信息,只需外接少量的阻容元件即可进行录放音操作[5]。本系统采用了硬件方式录音,录音前先给A0~A9赋值,然后再开相应的端口就可以实现录音功能,录音结束芯片内部自动在该段的结束位置插入结束标志(EOM)。在系统运行过程中根据需要,从相应的录音地址中取出对应的语音信号进行播放,遇到EOM 标志即自动停止放音,从而引导用户进行下一步的操作。
需要注意的是,本程序中涉及的放音地址不是语音输入地址而是PB口给语音芯片送的地址。
2.4密码存储电路
本系统采用EEPROM存储密码。为了减小电路的体积及单片机I/O口,存储器采用了AT24C02串行EEPROM芯片。该芯片有2 KB的存储空间,当系统掉电后密码也不会丢失。密码存储电路如图5所示。
AT24C02 的1、2、3 脚是三条地址线,用于确定芯片的硬件地址。在与HT46RU232连接时全部接地,第8脚和第4 脚分别为正、负电源。第5脚DATA为串行数据输入/输出,数据通过这条双向I2C串行总线与单片机的PC4进行数据传送。第6脚CLK为串行时钟输入线,与单片机的PC3连接。DATA 和CLK都需外接一个10 k?赘的上拉电阻才能正常工作。可通过软件编程对密码进行存储和修改[6]。
2.5 DTMF 检测电路
DTMF检测电路是整个系统的关键部分,其工作情况直接决定了系统的可靠性。DTMF编解码方式在电话拨号系统中应用非常广泛,其突出的优点是抗干扰能力很强。本系统采用专用的双音频解码集成芯片MT8870[7],其电路如图6所示。图中,PA5 为单片机的中断引脚,当MT8870 接收来自电话线的双音多频信号并准备好输出时,产生中断信号。MT8870的2、3 脚接收来自电话机的双音多频脉冲信号,该信号先经其内部的拨号音滤波器和滤除拨号音信号,然后经前置放大后送入双音频滤波器,将双音频信号按高、低音频信号分开,再经高、低群滤波器,幅度检测器送入输出译码电路,经过数字运算后,在其数据输出端(11~14脚)输出相对应的8421 码。MT8870 的数据输出端Q1~Q4连到单片机的PA0~PA3口线上,由单片机识别出4 位代码。
需要注意,为了使单片机获取有效数据,MT8870 的STD 有效端经反相后接CPU 的引脚INT。当MT8870获取有效双音多频信号后,STD 电平由低变高,再反相为低,CPU 检测后,指示PA 口从Q1~Q4接收有效二进制代码。而无效的双音频信号(电话线路杂音、人们的语音信号等)是不会引起MT8870的STD端变化的。
2.6 继电器控制电路
本系统采用继电器来控制家用电器的开关。单片机的PD0和PD1输出低电平控制两路继电器,从而控制两路家电,如空调和电饭煲。根据需要,还可设定延时开、延时关的功能。电器控制电路如图7所示。若采用译码器进行扩展,可控制更多路的家电。
3 软件设计
为提高控制系统的可靠性、可维护性和编程效率性,控制系统的软件采用模块化结构,用C语言编写。在硬件的基础上,智能型电话遥控器的所有功能都由软件实现,通过软件编程可以控制电器的开关、延时开关、声音监听及语音提示等。软件模块包括振铃检测、模拟摘机、语音提示、密码存储、MT8870中断等[8]。图8为系统软件流程图。由于篇幅所限,下面只给出MT8870中断程序部分。
/************MT8870中断**************/
#pragma vector isr_int @ 0x004
void isr_int(void)
{
uchar i,k;
k=0;
j=0;
dat=_pa;
dat=dat&0x0f;
if (allow == 1)
{
function();
}
if (allow == 0)
{
GRingCount++;
if (GRingCount < 7)
{
if (dat == 10)
{
data1[GRingCount-1] = 0;
} else
{
data1[GRingCount-1] = dat;
}
} else {
if (dat == 0x0c)
{
for (i = 0; i < 6; i++)
{
if (ucGpassward[i] == data1[i])
{
k++;
_nop();
}
}
if (k==6)
{
allow=1;
GRingCount=0;
i=0;
k=0; //密码输入正确
ISDPlay(5);
//调第6段放音程序,提示进行下一步操作
} else
{
allow=0;
i=0;
k=0;
GRingCount=0;
j++;
if (j<3)
{
ISDPlay(1);
//调第2段放音程序,提示密码输入错误
}
if (j >= 3)
{
Holdon=1;
j=0;
} //密码输入错误三次则挂机
}
}
测试结果表明,本系统能够通过任一部电话、手机对家用电器进行远程遥控,实现了密码存储、修改及家居环境声音监听等功能,系统工作正常。
本文介绍的智能家居控制系统,充分利用现有电话网络的特点,不需专门布线,不占用无线电频率资源,不受距离和环境影响,节约了成本。采用了高性价比的HT46RU232单片机,与传统的80C51单片机相比,更具有竞争优势;系统具有远程家电控制、工作状态查询、环境声音监听等多项功能,操作过程需要验证密码,较好地避免了电话正常使用时对家用电器的误操作,可以让家居生活更加舒适、安全、高效。系统略作改进,也可适用于生活小区、工业企业等不同环境的监控管理,因此具有较高的实用性和推广价值。
参考文献
[1] 蒋昊,李哲英,蒋大明.基于电话交换机的远程家电控制系统[J].微计算机信息,2007,23(8-2):267-269.
[2] 钟启仁.HT46XX单片机原理与实践[M]. 北京:北京航空航天大学出版社,2008.
[3] HT46RU232八位单片机. http://www.holtek.com.cn/china/docum/uc/46x232.htm,2009-12-05.
[4] 刘芬,杨继生.智能电话网远程家电控制系统的设计[J]. 微型机与应用,2010(1):34-36.
[5] 程广才,蒋小松.ISD系列语音芯片的特性及应用[M].北京:电子工业出版社,2006.
[6] 张鹏. HOLTEK HT46系列单片机C语言实例教程[M].北京:北京邮电大学出版社,2010.
[7] 张庆龙. 单片机控制与网络传输应用[M]. 北京:中国电力出版社,2007.
[8] 王明秋.智能家居控制系统的设计与实现研究[D].武汉:华中师范大学,2006.