基于单片机的智能家居系统设计
扫描二维码
随时随地手机看文章
1 引言
随着科技的发展和人们生活水平的提高,人们对居住环境方便快捷的要求越来越高,智能家居系统应运而生。智能家居是现代电子技术、通讯技术及自动化技术相结合的产物。它能够实现对家电设备的自动控制和管理、对家庭的安全进行监测报警,能够为用户提供安全舒适、高效便利的生活环境。本文结合语音识别技术,利用SPCE061A 丰富的语音处理功能,在已有的电力线和电话线的基础上, 设计了一套智能家居系统, 该系统结构简单、功能完善并且具有较高的性价比。
2 系统架构
系统主要由主控制器、分控制器(89C51)、电话接口和电力线载波通信等几部分组成。本系统使用了大量的硬件电路来完成部分功能模块,其目的就是充分利用硬件电路的可靠性和稳定性以使系统达到较高的性能。系统的总体结构如下图1所示。
本系统主要完成远程控制家用电器和自动报警两个功能, 下面我们简要介绍一下系统的工作过程:
当用户通过远方任何一部电话拨打家中的电话时,系统检测到电话线上出现的振铃信号并开始计数。如果五次振铃无人接听, 主控制器则发出摘机信号, 实现模拟摘机,并播放语音提示。用户根据语音提示输入密码,DTMF 电路将接收到的DTMF 信号进行解码,并将解码后的数字信号送入CPU 验证密码是否正确, 三次输入密码错误则系统自动挂机。如果密码正确,则进一步提示用户输入控制命令,这时用户可以通过按键或者直接用口令对家用电器进行控制。
如果采用口令来控制,则口令经电话线,以及电话接口的语音通道进入,SPCE061A 单片机则将采集到的话音与预先存储的模板进行比较,进行语音识别并判断出用户的指令,然后发送相应的控制信号。控制信号被送入电力线调制解调器调制后,通过电力线接口电路耦合到电力线上进行传输,控制信息也就以广播形式发送出去。
由电力线传送的被调制信号由分控制器系统的电力线接口电路接收并被送入ST7537 进行解调,解调后的信号被送入分控制器。每个分控制器都有自己的固定地址,分控器读取解码后的地址信息,并判断与自己的固有地址是否一致,若一致则接收数据信息并执行相应的操作,从而实现了对相应家电的控制。操作完成后,分控制器向主控制器发回确认信息,再由主控制器控制语音提示电路发出操作完成或失败的语音提示,通知电话遥控者。
如果采用按键控制,用户发出的按键信号(DTMF)经解码后送入CPU,CPU 接收到信号后从中分析出地址信息和控制信息并发出控制信号。控制信号经ST7537 调制后通过电力线传输到分控制器,由分控制器执行相应的操作。
当传感器检测到警情时, 就会发出报警信号, 分控制器接收到报警信号, 则将报警信号耦合到电力线上。
中心控制器接收到报警信号后则自动拨打用户预先设置的电话号码, 电话接通后延迟两秒, 系统自动播放语音报警信息。
3 SPCE061A 芯片特性简介
SPCE061A 是一款基于μ 'nSP 内核的16 位单片机,其芯片特性如下:
1.工作电压:内核工作电压VDD 为3.0-3.6V(CPU),I/O 口工作电压VDDH 为2.4~5.5V(I/O);2. CPU 时钟:0.32MHz~49.152MHz;3. 内置 2K 字SRAM 和32K 闪存ROM;4. 系统处于备用状态下(时钟处于停止状态),耗电小于2 μ A@3.6V;5 . 具备触键唤醒的功能;6 . 3 2 位通用可编程输入/ 输出端口;7 . 2 个1 6 位可编程定时器/ 计数器( 可自动预置初始计数值) ;8. 7 通道10 位电压模- 数转换器(ADC)和单通道声音模- 数转换器;9. 2 个10 位DAC(数- 模转换)输出通道;10.14 个中断源可来自定时器A/B,时基,2 个外部时钟源输入, 键唤醒;1 1. 具备串行设备接口;12. 低电压复位(LVR)功能和低电压监测(LVD)功能;13. 内置在线仿真(ICE,In-Circuit Emulator)接口。
SPCE061A 的内部结构框图如图2 所示。
4 语音识别技术简介
语音识别技术就是一种让机器通过识别和理解过程把语音信号转变成相应的文本或命令的技术。机器对语音进行识别、处理的过程与人对语音进行识别、处理的过程基本上是一致的。目前主流的语音识别技术是基于统计模式识别的基本理论。一个完整的语音识别系统可大致分为语音特征提取、声学模型与模式匹配(识别算法)和语义理解三部分。其基本原理如下图所示。
从图中我们可以看出语音识别一般分为两个步骤:
第一步是系统“学习”或“训练”阶段,这一个阶段的任务是建立识别基本单元的声学模型以及进行文法分析的语言模型, 即构建参考模式库。第二步是“识别”或“测试”阶段,根据识别系统的类型选择能够满足要求的识别方法,采用语音分析方法分析出这种识别方法所要求的语音特征参数,按照一定的准则和测度与参考模式库中的模型进行比较, 通过判决得出结果。
在本应用中,语音识别技术方面采用凌阳SPCE061A作为关键器件,同时凌阳公司提供bsrv222SDL.lib 库函数支持,在使用时通过调用库函数里相关的API 函数来实现所要求的功能。
5 主要硬件模块设计
下面主要对主控制器和语音提示电路作介绍。
5.1 主控制器
系统主控制器主要由MIC 输入模块、控制模块、存储模块、功放和喇叭输出模块四部分组成,其结构如下。
(1) 控制单元与语音识别:由SPCE061A 单片机完成。
(2) MIC 输入模块:SPCE061A 的A/D 转换器有8个通道,其中有一个通道是MIC_IN 输入,专门对语音信号进行采样。选用驻极体话筒,其偏压由SPCE061A 的VMIC 脚提供。该模块电路比较简单,只需外接三个电阻和电容对电流信号进行滤波就可以了。
(3) 功放和喇叭输出模块:SPCE061A 提供双通道10 位的D/A 输出AUD1、AUD2,每个通道的输出能力是30mA。为了能驱动扬声器放音,我们将输出电路设计为由负载电阻和三极管8050 组成的功放电路。
(4) 存储模块:由于芯片内置的存储空间有限,为了运行复杂的识别程序,必须通过扩展必要的存储芯片来完成系统的功能。在本系统中我们采用SPBA01B 和W29C040 来对SPCE061A 进行Memory 扩展。
5.2 语音提示单元
本系统主要由语音识别电路和语音提示电路来完成人机交互,其中语音提示电路的电路原理图如图4 所示。
图4 语音提示电路
数码语音芯片选用的是单片语音录放集成电路ISD25120,它具有抗断电、音质好、使用方便、无需专用的开发系统等优点。录音时间为120s,能重复录放达10 万次。芯片采用多电平直接模拟量存储专利技术,省去了A/D、D/A 转换器。每个采样值直接存储在片内单个存储单元中, 因此能够非常真实、自然地再现语音、音乐、音调和效果声。
SPCE061A的IOA11~IOA15 与ISD25120 的地址线相连,用以设置语音段的起始地址。IOB11 和IOB13 用以控制录放音状态。IOB12 连接一按键,供录放音测试时使用。ANA IN 与ANA OUT 是模拟信号的输入端和输出端,它们之间连接耦合电容,通常取值为0.22~1uF。
语音信号由SP+ 和SP- 端经耦合器耦合到电话线或由扬声器直接播放。录音时,单片机通过口线设置语音段的起始地址,再使端PD 端和P/ R 端和CE 为低电平启动录音。结束时,单片机又让CE 端回到高电平,即完成一段语音的录制。放音时,根据需要播放的语音内容,找到相应的语音段起始地址,并通过口线送出。再将P/ R端设为高电平, PD 端设为低电平,并让CE 端产生一负脉冲启动放音,这时单片机只需等待ISD25120 的信息结束信号,即低电平EOM 的产生。结束信号为一负脉冲,在负脉冲的上升沿, 标志着该段语音播放结束。
6 软件设计
6.1 系统软件结构
软件的设计不仅要考虑到各个模块实现的功能,而且要对整个系统进行有效的管理和协调。在此基础之上,才能够从整个系统的角度全面完善地实现系统所需要的各项功能。本系统的软件主要包括一个主程序和四个子程序, 其总体结构如下图所示。
主程序主要负责对整个控制器的工作进行管理、协调和对子程序的调用以及对用户的各种服务的响应。
四个子程序分别是语音识别、DTMF 收发、语音录放、信号音检测四个子程序。限于篇幅,下面只对语音识别子程序的软件设计进行介绍。
6.2 语音识别子程序设计
语音识别程序设计包括三部分: 训练样本; 识别; 语音提示。
训练过程即提取语音样本的特征参数过程主要调用库函数BSR_Train 完成。为了防止误命令,每条语音命令训练2 遍,只有2 次命令相同时才成功,BSR_Train函数有8 种可能的返回值, 如: 0 - 训练成功; - 1 - 没有语音识别技术方面有bsrv222SDL.lib 库函数支持,在使用时通过调用库函数里相关的API 函数来实现所要求的功能。下面给出语音识别的流程图及具体代码。
图7 语音识别流程图
其中,BSR-GetResult 函数为启动辩识,当无命令识别出来时,返回0;识别器停止、未初始化或识别未激活返回-1 ;当识别不合格时返回-2 ;当识别出来时返回命令的序号。部分程序源代码如下:
7 结语
本系统主要有以下性能特点:实现了语音控制家用电器的启动和关闭;实现双向的功能:能够远距离控制家用电器,又能快速及时地传送报警信息;设计简单,系统组织灵活,控制范围可大可小,利用已有电力线和电话布置设施成本低,且不受供电范围和距离的限制;使用单片机实现语音识别控制功能,提高了系统的性价比。随着经济的发展,人们对物质文化需求的日益增长,智能家居系统必将受到人们的青睐,相信这种功能强大的单片机系统会有广阔的应用和发展前景。