基于LIN总线的语音控制智能家居系统毕业论文 精品.docx
《基于LIN总线的语音控制智能家居系统毕业论文 精品.docx》由会员分享,可在线阅读,更多相关《基于LIN总线的语音控制智能家居系统毕业论文 精品.docx(31页珍藏版)》请在冰豆网上搜索。
基于LIN总线的语音控制智能家居系统毕业论文精品
基于LIN总线的语音控制智能家居系统
speachrecognitioncontrolbasedonLIN-busintelligenthouseholdsystem
原创性声明
兹呈交的比赛设计论文,是本小组人员在导师的指导下,独立进行研究工作所取得的成果。
在论文写作中参考的其他个人或集体的研究成果,均在文中以明确方式标明。
本小组人员依法享有和承担由此论文而产生的权利和责任。
声明人签名:
日期:
年月日
摘要:
设计一种基于lin总线的语音控制智能家居系统,该系统采取分布式控制方式,即一个中央处理器,多个从机组成控制网络。
在本系统中,我们采取凌阳SPCE061A作为中央处理器,51单片机作为从机。
由凌阳SPCE061A对语音命令进行识别,识别结果通过LIN总线传给特定的从机,再由从机执行对家电操作。
语音识别部分采用特定人识别和命令分层技术,系统对家庭的各个成员语音命令进行采样,存储,从而实现家庭各个成员的语音识别。
关键字:
智能家居分布式控制语音识别lin总线特定人命令分层
Substract:
DesignaspeachrecognitionintelligenthouseholdsystemwhichisbaseonLINbus,thissystemusecontrolofdistributing,itmeansonecentralprocessorandothersubordinateprocessorsmakeupthecontrolnet.Inthissystem,WeuseSPCE061Aasthecentralprocessor,51MCUasthesubordinateprocessor.Themaintaskofcentralisspeachrecognition,thenpasstheresulttosubordinateprocessorsbyLINbus,thesubordinateprocessorscarryoutthehandle.Inthespeachrecognition,weusethespecifiedpeoplerecognitionandcommandlayeredtechnology,thesystemcarryoutthesamplingofsoundcommand,storing,andthenachievethespeachrecognitionofthehomepeople.
KEYWORDS:
IntelligenthouseholdsystemDistributingcontrol
SoundrecognitionLINbus
SpecifiedpeopleLayeredcommand
目录
1.引言1
2.系统方案设计1
3.工作原理2
4.功能特色指标2
5.方案比较和选择3
6.硬件电路设计4
7.系统软件设计9
8.系统调试与测试22
一、引言
智能电子技术在现实生活中的智能家居电子产品中得到广泛应用。
特别是计算机技术、网络通信技术、信息控制技术的迅猛发展与提高,促使家庭实现了生活现代化,居住环境舒适化、安全化。
这些高科技已经影响到人们生活的方方面面,改变了人们生活习惯,提高了人们生活质量,智能化家居也正是在这种形势下应运而生的。
智能家居的日渐兴起给人们的家居生活带来了全新的感受,家居智能化正成为一种趋势。
住宅智能化系统的概念是从上世纪70年代末起源于美国,随后,欧洲、日本等国家住宅智能化也得到了飞速发展。
在我国,智能家居这一概念推广较晚,约在90年代末住宅智能化系统进入国内,但其发展的速度非常快,全国已建立了一些具有一定智能化功能的住宅小区和家庭智能化住宅。
智能家居是通过统一的网络总线和控制平台将家庭的电器设备、灯光系统、安全系统、能源系统等连成一体的。
目前智能家居的发展趋势是由集中控制到分布控制。
与集中式控制相比,分布式控制不仅能减少布线,而且能提高系统的可靠性,当某一个节点出现故障时,只需将该节点从网络中拿走,而其它节点不受影响。
同样,在网络中接入新节点也非常方便,因为不需改动系统的软硬件。
一些对科技发展动向和市场趋势敏感的科研机构和有实力的公司,也已经看到这个市场的广阔前景,意识到这是一个难得的机遇,开始为研究和开发相关系统和产品进行先期的部署和规划,开始介入智能家庭网络这个全新的领域。
二、系统方案设计
本系统以凌阳SPCE061A加一个51单片机作为语音识别和中央处理器,采用LIN总线协议与多个51从机组成分布式控制网络。
各个从机安装在房子的各个重要处,例如主人房,客厅,厨房,阳台等。
中央处理器的任务是对家庭的各个成员语音命令进行识别,然后把地址命令与控制命令传到LIN总线上,再由连接在LIN总线上的各个从机进行匹配,由从机对家电做出具体的控制。
系统框图如图1所示。
图1系统框图
三、工作原理
凌阳SPCE061A是一个16位单片机,并且具有DSP处理功能。
在训练时,说话人的声音通过麦克风进入说话人语音信号采集前端电路,由语音信号处理电路对采集的语音信号进行特征化和语音处理,提取说话人的个性特征参数存储到FLASH中,形成说话人特征参数数据库。
在识别时,将待识别语音与说话人特征参数数据库进行匹配,匹配后发出相应的命令到LIN总线的主节点,主节点再按照LIN总线所规定的的协议发出相应的报文帧到LIN总线上,LIN各从节点接收到报文帧后匹配自己的ID,然后执行发过来的命令去驱动外部设备。
四、功能特色指标
功能特点之一:
语音命令控制
采用语音命令控制智能家具,摆脱传统的遥控器控制,使系统更具智能化。
而且语音系统还预设了应答命令,及时反馈目前命令的执行情况,人机交互友好。
通过预先对系统的训练,各个房间中的各种电器的语音操作命令通过凌阳单片机的采样,经过系统识别得到控制命令,实现对电器的控制。
功能特点之二:
LIN总线系统的扩展性良好,且不互相干扰
本次设计不仅仅是语音控制,而且还包括LIN总线的软件硬件设计。
根据LIN总线和本次设计的特点只要将主机发送的控制命令稍作修改增加,该总线就可以在不改变主机硬件的情况下增加相应节点从机(小于12个),从而控制更多其他传输速率要求不高的设备,例如可以加入控制洗衣机工作模式的从节点。
这体现了该系统的易扩展性。
功能特点之三:
较低成本
本次设计选用89S52单片机作为与LIN接口的MCU,语音识别控制使用凌阳单片机,在实现功能的前提下降低了成本。
五、方案比较和选择
1.语音控制模块:
方案一:
采用AT89S52片机控制,外加专门DSP处理芯片或者语音处理模块。
52单片机具有编程灵活,控制简单的特点,但外加的芯片或模块无疑增加的技术的难度,并且提高了制作的成本。
方案二:
采用凌阳单片机作为我们的控制电路核心,凌阳SPCE061A十六位单片机不仅内置32kFlash,而且集成了语音处理模块。
通过比较,方案一无论从技术上还是从经济上都没有方案二好,基于SPCE061A构建的语音控制系统具有成本低、使用方便、保密性好等优点。
所以选择方案二。
2.组网总线的选择:
智能家居系统最重要的就是能够统一控制,那就要求整个住宅的家具能够组成一个网络,采用何种总线组网决定了网络的稳定性与健壮性。
各种总线之间的比较如图2所示。
图2总线比较
从图中我们可以看到,UART、SPI以及I2C总线虽然传输速度快,但是线缆长度短,总线上子节点数量也不多,不适用于智能化家居网络。
CAN总线传输速度快,线缆长,支持扩展节点多,但是价格昂贵,对于家居网络的低端信号传输,CAN总线的作用就大打折扣。
LIN总线价格便宜,单主机模式,无需总线仲裁,控制简单,而且线缆长,支持扩展节点多,符合智能化家居网络要求。
综上,我们采用LIN总线来作为组建网络的协议。
3.LIN总线收发芯片模块:
方案一:
MC33399资料相对较少,且主要配合MOTOROLA型单片机使用,本次设计不使用MOTOROLA单片机,所以故不采用。
方案二:
现在市场上主流用TJA1020芯片作为收发芯片,其优势有能够直接控制稳压器,从而可以使用低成本稳压模块同类产品中耗电最低(整个节点只需3μA),发送数据(TXD)显性超时功能,防止网络锁死,通过各项独立测试的高电磁兼容性(EMC),并且TJA102还有详细的中文资料和相应的技术支持,这样方便我们的设计。
通过比较,方案二中TJA1020加上52系列单片机便可以构成一个LIN总线的节点,并且每个节点电路简单,编程控制方便,从经济和功耗的角度考虑,我们选择方案二。
六、硬件电路设计
本系统包括凌阳SPCE061A单片机硬件设计,SPR4096外扩Flash模块,LIN总线主从机电路模块的设计,系统电源设计及液晶显示电路模块的设计。
1凌阳SPCE061A单片机硬件设计
1.1凌阳SPCE061A单片机最小系统
SPCE061A最小系统当中,包括SPCE061A芯片外围的基本模块,晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如下图所示。
图3SPCE061A最小系统
1.2凌阳单片机语音采集模块
凌阳单片机语音采集模块由音频输出和音频输入两部分组成。
图5是音频输出电路图。
SPCE061A内置2路10位精度的DAC,只需要外接功放电路即可完成语音的播放。
图中的SPY0030是凌阳的一款音频放大芯片,可以工作在2.4~6V范围内,最大输出功率可达700mW。
图4音频输出电路图
SPCE061A芯片中已经集成了音频输入专用ADC以及AGC放大电路,因此芯片外部的电路比较简单,图6是61板的音频输入电路模块。
图5音频输入电路
2SPR4096外扩Flash模块
在本系统中,当我们对系统进行训练、识别、操作时,有一些语音提示,由于SPCE061A内部只有32k字的flash空间,除了一部分空间作为程序的存储之后,剩下的用来存储语音数据时远远不够的,于是系统外扩了flash。
SPR4096是凌阳公司推出一款flash芯片,其内部具有512Kbyte的flash空间,4Kbyte的SRAM,具有并行与串行接口。
该芯片可以通过凌阳公司开发的软件,配合上位机,可以将音频数据烧录到芯片相应的地址单元中去,同样,也可通过上位机将芯片内部的数据读取出来。
SPR4096内部具有串行总线接口,SPCE061A内部没有该接口,于是我们通过SPCE061A的I/O来模拟该时序,实现对模块的读写操作。
该模块与单片机的接口电路如下图所示。
图6SPR4096模组与单片机接口
3LIN总线主从机电路模块
本系统是通过LIN总线实现家居系统的终端控制,每个终端都采用89S52单片机以及一块LIN总线收发模块,实现主机对各个终端电器的控制。
LIN总线收发采用TJA1020,它是LIN主/从协议控制器和LIN物理总线之间的接口。
使用的波特率可从2.4到20kbps,睡眠模式下,TJA1020的功率消耗非常低。
主、从机电路图如图所示。
图7主机电路图
图8从机电路图
4系统电源电路设计
本系统采用的LIN总线需要12V电压,而从机需要5V及3.3V电源,因此,在中央控制器模块中需要一个电源转换模块满足电源电压的转换。
所以我们采用LM2596及LM1117-3.3实现电压的转换,电路图如图所示。
图9电源电路
5液晶显示电路模块设计
本系统从上电到识别过程,除了有语音提示外,还有屏幕文字提示。
在本系统中,我们使用的是12864液晶。
该液晶可以显示4行文字,每行可以显示8个中文字,使系统更具人性化,人机交互界面友好。
液晶电路设计如图所示。
图10液晶电路设计
七、系统软件设计
6语音训练与识别
语音识别方式有两种,一种是特定人识别(SD),特定人识别之前需要进行语音训练;另一种是非特定人识别(SI),非特定人识别不需进行语音训练。
本系统采用的是前一种识别模式。
特定人识别的原理如下图所示:
图11特定人识别原理
SPCE061A内部只有2K字的RAM,其只能支持5个语音命令,而在进行识别之前要进行语音模板训练,模板的数据也是放在内部的RAM中。
这些资源对于一个庞大的系统来说是远远不够的,于是我们将语音命令进行分层,并外扩了flash,也就是上文中提到的SPR4096模组。
4096具有512K字的flash空间。
由于每条语音命令模板占用100字的flash空间,所以4096除了存储语音模板,其他剩余的空间还可以用来存储提示音数据。
图12是语音分层示意图,每一层具有5条命令,总共有4层,第一层作为家庭成员入口层,第二层为家里各个重点地点层,第三层为电器层,第四层为电器操作层。
使用了分层后,扩展了语音命令,使得家庭的每个成员都能进行语音识别,此外,识别结构也变得非常清晰。
除第一层外,其余每一层都有一个返回命令,用户可以通过该命令返回上一层的识别。
图12语音分层识别
在没外扩flash之前,由于语音模板是存在SPCE061A内部的RAM中,一掉电就丢失,所以每次系统复位或者重新上电就必须重新训练,这在实际中使用非常不方便。
于是,我们在外部FLASH中分配一个存储空间,专门用来存储训练后的语音模板,在程序中设一个标志位,查看4096相应的地址单元否有数据,从而判断是否已经训练过,如果训练过,则只需把flash中的语音模板装载到SPCE061A中,从而避免每次复位和上电需要训练的麻烦。
图13是系统的语音系统总体流程图。
图13语音系统总流程
系统在第一次使用时需要经过一次训练,为了用户训练方便,我们给出了一个语音训练命令表,用户可以参照该表的命令进行训练,也可以用个性化的命令自行定义命令。
但是语音命令应该遵从简约、容记、容易分辨的原则,以提高系统的识别能力。
表1的语音命令经过我们的验证,系统能够很好地识别,准确识别率达98%以上,偶尔的无法识别是因为话筒接受不到语音命令或者是用户发出的语音命令与训练时相差太大等而引起的。
传统的语音训练设计,采用的是顺序训练的方式,则不管前后命令是否重复,都需要从头至尾逐个训练。
由于家庭内的不同地方往往大部分电器都是相同的,比如“卧室”与“客厅”、“厨房”等都有“灯管”,因此我们对训练进程进行了优化处理,只需要训练一次“灯管”语音命令,系统会自动将该“灯管”语模板存储到“卧室”、“客厅”、“厨房”、“阳台”对应的FLASH存储区域,识别时系统从不同的FLASH区域调用该语音模板,从而识别不同地方的电器。
由于考虑到一个家庭的用户所住的卧室不同,我们假设用户一“小明”在“卧室1”,用户二和用户三“爸爸”“妈妈”在“卧室2”,用户四和用户五“爷爷”“奶奶”在“卧室3”。
在训练里只要选择了是哪个用户,系统会将该用户训练的语音模板存储而不同的FLASH空间,在识别时会自动识别出该用户对应的“卧室”。
系统训练流程图如图14所示。
表1语音训练命令表
用户
地点
电器
操作1
操作2
操作3
操作4
小明
卧室1
电脑
开
关
NULL
NULL
空调
开
关
升温
下降
风扇
开
关
加速
减速
灯管
开
关
NULL
NULL
爸爸
妈妈
卧室2
电脑
开
关
NULL
NULL
空调
开
关
升温
下降
风扇
开
关
加速
减速
灯管
开
关
NULL
NULL
爷爷
奶奶
卧室3
电视
开
关
NULL
NULL
空调
开
关
升温
下降
风扇
开
关
加速
减速
灯管
开
关
NULL
NULL
全家
客厅
电视
开
关
NULL
NULL
空调
开
关
升温
下降
风扇
开
关
加速
减速
灯管
开
关
NULL
NULL
全家
厨房
抽烟机
开
关
高速
低速
微波炉
开
关
加时
减时
电饭锅
开
关
煮饭
煮粥
灯管
开
关
NULL
NULL
全家
阳台
洗衣机
开
关
正常
脱水
晾衣竿
上升
下降
NULL
NULL
窗帘
拉开
关闭
NULL
NULL
灯管
开
关
NULL
NULL
注:
表中的NULL是保留的用户命令,如用户需要,可以简单改动程序而增加更多的控制命令。
各个用户经过首次训练后,其语音特征会存到单片机中。
当用户需要对某个电器操作时,只需说出相应的语音命令,系统就能根据内部编码,将地址命令及控制命令发送到相应的从机,实现对特定电器的操作。
系统命令编码如表2所示。
表2电器操作从机通信编码
地点
地点编码(高3位)
电器操作
操作编码(低5位)
8位通信编码
卧室1
000
电脑(视)开
00000
0x00
电脑(视)关
00001
0x01
空调开
00010
0x02
空调关
00011
0x03
空调升温
00100
0x04
空调降温
00101
0x05
风扇关
00110
0x06
风扇开(1档)
00111
0x07
风扇2档
01000
0x08
风扇3档
01001
0x09
灯管开
01010
0x0a
灯管关
01011
0x0b
卧室2
001
电脑(视)开
00000
0x20
电脑(视)关
00001
0x21
空调开
00010
0x22
空调关
00011
0x23
空调升温
00100
0x24
空调降温
00101
0x25
风扇关
00110
0x26
风扇开(1档)
00111
0x27
风扇2档
01000
0x28
风扇3档
01001
0x29
灯管开
01010
0x2a
灯管关
01011
0x2b
卧室3
010
电脑(视)开
00000
0x40
电脑(视)关
00001
0x41
空调开
00010
0x42
空调关
00011
0x43
空调升温
00100
0x44
空调降温
00101
0x45
风扇关
00110
0x46
风扇开(1档)
00111
0x47
风扇2档
01000
0x48
风扇3档
01001
0x49
灯管开
01010
0x4a
灯管关
01011
0x4b
客厅
011
电脑(视)开
00000
0x60
电脑(视)关
00001
0x61
空调开
00010
0x62
空调关
00011
0x63
空调升温
00100
0x64
空调降温
00101
0x65
风扇关
00110
0x66
风扇开(1档)
00111
0x67
风扇2档
01000
0x68
风扇3档
01001
0x69
灯管开
01010
0x6a
灯管关
01011
0x6b
厨房
100
灯管开
01010
0x8a
灯管关
01011
0x8b
抽烟机开
01100
0x8c
抽烟机关
01101
0x8d
抽烟机高速
01110
0x8e
抽烟机低速
01111
0x8f
微波炉开
10000
0x90
微波炉关
10001
0x91
加1分钟
10010
0x92
减1分钟
10011
0x93
电饭锅开
10100
0x94
电饭锅关
10101
0x95
煮饭
10110
0x96
煮粥
10111
0x97
阳台
101
灯管开
01010
0xaa
灯管关
01011
0xab
洗衣机开
11000
0xb8
洗衣机关
11001
0xb9
正常模式
11010
0xba
脱水
11011
0xbb
晾衣竿上升
11100
0xbc
晾衣竿下降
11101
0xbd
窗帘拉开
11110
0xbe
窗帘关闭
11111
0xbf
图14语音训练流程
系统经过一次训练,以后开机后系统不再进入训练流程,直接进入识别流程,系统识别流程图如图15所示。
该识别过程采用逐层递进的方式,当遇到“返回”命令时则返回前一层命令的识别,当进入最后一层识别到用户的电器操作时,SPEC061A就会发送相应的操作编码到51主机,然后51主机再通过LIN发送编码到从机,控制从机执行相应的动作。
图15语音识别流程
7语音播放
SPCE061A可以播放多种格式的音频文件,这些音频格式都是凌阳特有的。
包括SCAM_A2000,SCAM_480,SCAM_A2000格式的音频采样率高,压缩比低,声音清晰,占用的空间在我们的预算范围之内,于是我们采用SCAM_A2000这种格式。
提示音源文件都是自己通过电脑录音,经过效果处理,格式转换后就可以用SPCE061A播放出来。
由于我们将音频数据文件放在外扩的flash芯片中,因此采用凌阳提供的SCAM_A2000手动播放方式。
在播放声音时要不停地将音频数据填充到SPCE061A指定的语音队列中,判断语音队列是不是已满,如果没满,判断地址是否已超出播放语音的结束地址,如果没有,从存储器中获得语音资源,填充语音队列,地址指针指向下一个地址单元准备继续取资源;如果已经超出结束地址,退出填充队列循环;如果语音队列已满,判断是否还在播放状态,如果是,解码播放,清看门狗;如果没有在播放状态,退出播放循环,返回主程序。
语音播放的步骤如下图所示:
图16语音播放步骤
8按键设计
为了方便用户使用,在语音识别与训练模块中设置了四个功能按键:
选择、确定、全部训练、逐个训练。
“选择”按键:
该按键主要是进行用户的选择。
如果用户不想对某个地点的电器进行控制,则在进行地点名称的训练时,在语音提示“请重新录入命令”播放完之前,按住该按键可跳过此地点命令的训练,接下来系统会自动跳过该地点对应的电器名称与电器操作的训练;在一个用户的训练结束阶段,系统会出现一个倒数提示,如果用户按下该按键,则进行下一个用户命令的训练,否则跳出训练流程进入识别流程;在识别流程,按下该按钮,系统会返回“选择用户”的界面,这样方便多个用户使用该系统;在识别流程,先按下“逐个训练”按键,就可以用“选择”按键进行选择需要训练或重新训练的用户。
“确定”按键:
该按键用于对“全部训练”与“逐个训练”进行确定。
当按下“全部训练”键后,只要按下“确定”键,系统就重新进行训练;当按下“逐个训练”键后,用“选择”按键先选择好用户,然后按下“确定”键,就可以对该用户的命令进行重新训练而不影响其它用户。
“全部训练”按键:
该按键在系统识别流程按下后,系统会进入倒数模式,在倒数5秒结束前,按下“确定”键系统会清空以前全部用户命令模板,然后用户可以重新进行命令训练。