失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 语音识别智能家居控制设计

语音识别智能家居控制设计

时间:2022-08-17 07:59:16

相关推荐

语音识别智能家居控制设计

目录

一、方案流程及技术规格书设计

二、系统硬件电路设计

三、软件编写及调试

四、系统调试测试与分析

前言

随着科学技术的快速发展,人们对生活品质的要求也不断提高,开始追求更好更方便的生活方式。因此,智能家居系统应运而生。智能家居控制系统(smart home control systems),是以智能家居系统为平台,对家居电器及家电设备自动控制。提升家居智能、安全、便利、舒适。

传统的家居智能控制系统一般采用集中控制器为中心,采用界面按键操作的方式来控制家居家电。采用界面操作控制的弊端是操作复杂,必须在固定地点操作。

随着语音识别技术的快速发展,语音识别的准确率和可靠性大幅提高。语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。语音识别ASR(Automatic Speech Recognition)的最大优势在于使得人机用户界面更加自然和容易使用。

基于语音识别技术的上述特点,同时结合当代智能家居在控制中的实际需求,我们选择语音控制的智能家居系统。本系统具有良好的开发和应用前景,在智能家居这个概念广为人知的时代,语音控制技术与智能家居的融合,最终会让智能家居引领市场并且走向更为广泛的应用。

软件工具准备

软件:

电路设计:protel99 se(up主使用版本) 或者其他版本,或者其他电路设计软件;

单片机开发:Keil5;

调试测试:串口调试助手,逻辑分析仪等;

工具:

电路焊接:电烙铁,SMT(有条件的);

调试:

万用表、示波器(基础入门即可,可以白嫖学校或者公司)USB转串口工具、仿真器;

一、方案流程及技术规格书设计

方案流程设计

技术规格书设计

1.本设计采用LD3320语音识别芯片。LD3320是一款非特定人语音识别芯片其提供的语音识别技术,是基于“关键词语列表”的识别技术;ASR技术。

2.LD3320识别语音后,单片机根据语音控制家电设备开关

3.家电设备有灯(双色LED灯模拟)、窗帘(步进电机模拟)、空调(继电器输出)、热水器(继电器输出)。

4、家居环境监测传感器有火焰传感器、烟雾传感器、温湿度传感器、人体红外传感器。

5、当火焰传感器、烟雾传感器、异常时,启动喷水设备(继电器输出)灭火。当人体红外传感器检测到人时,启动蜂鸣器报警。

6、语音控制灯开关、亮度、颜色。窗帘开关、空调开关、热水器开关。

7、报警信息通过GSM模块发送到指定手机。

8、设备状态在LCD显示。

9、4个按键可以手动控制设备开关。

系统硬件电路设计

2.1微处理控制电路

设计采用韩国现代产MC96F6432单片机芯片。该芯片是8051内核的8位单片机,电路图如图所示:

单片机供电电压是2-5V,设计采用5V供电,图中VCC为5V。C14是电源滤波去耦电容。J20是仿真烧录口。

IO口连接介绍:

1、LCD显示

P30-P37:连接LCD数据线,8位并行通讯。

P17:RS 控制LCD命令或数据。

P16:RW 控制LCD读或写数据。

P15:E LCD使能。

P14:CS1 左屏选择。

P13:CS2 中间屏选择。

P12:CS1 右屏选择。

2、语音模块

P07-P06:Y_Lamp4-Y_Lamp3语音模块指示灯开关。

P55:Y_AC 语音模块指示空调开关。

P42:Y_Curton 语音模块指示窗帘开关。

P43:Y_Heat语音模块指示热水器开关。

3、步进电机控制

P10: C4 步进电机控制。

P20-P22:C3-C1步进电机控制。

5、传感器

P50:ROUT 人感传感器输出。

P11:HDO 火焰传感器输出。

P51:YDO 烟雾传感器输出。

6、按键

P23:HEAT_SW控制热水器开关。

P02:CURTON_SW控制窗帘开关。

P52:LAMP_SW 控制灯开关。

P03:AC_SW 控制空调开关。

7、外部设备控制

P54:Water 喷水设备控制。

P53:Alarm 报警设备控制。

P25:AC 空调开关控制。

P26: LEDG 绿灯控制。

P27:LEDR红灯控制。

7、通讯模块

P40:RXD串口接收脚。

P41:TXD串口发送脚。

2.2语音识别模块电路设计

LD3320语音电路设计为独立模块。LD3320的基本应用电路由单片机STC11L08和LD3320组成。主控MCU STC11L08来完成LD3320芯片寄存器的操作。如设置标志位,读状态,写数据到FIFO,识别结果,等等。例如,编辑关键词时,拼音串设置成LD3320寄存器来完成编辑关键词。寄存器可以分为以下几类,FIFO数据缓冲器,语音识别控制寄存器,音量控制,模拟电路和其他辅助寄存器。寄存器的读写操作有2种方式,分别是标准并行模式和串行SPI模式,本设计采用标准并行模式。该LD3320寄存器的地址空间为8位,从00H〜FFH。LD3320电路如图所示。

IO口连接介绍:

VDD/VDDIO:3.3V电源输入。

MIC[P、N](9、10脚):麦克风输入正负端。

MONO(11脚):单声道输入。

MBS(12脚):麦克风偏置。

LINE[L、R](13、14脚):立体声左右端

HPO[L、R](15、16脚):耳机输入左右端

EQ[1、2、3](20-22脚):喇叭音量外部控制

SPO[N、P](25、26脚):喇叭输出

LOUT(L、R)(27、28脚):lineout输出

RSTB(47脚):复位信号

INTB(48脚):中断信号

STC11L08电路如图所示:

IO口连接介绍:

LD_P0-P7(37-30脚) : 8位数据线。

LD_MD(6脚):读写模式控制,低电平是8位并行数据。

LD_CS,WR,RD,A0(19,13,12,18脚):LD3320读写控制。

2.3LCD显示电路

LCD19264显示电路如图:

R29是电位器,作用是调节显示对比度。R22是上电复位电路。R32是背光限流电阻。

IO口连接介绍:

RS、RW、E(5、6、7脚):LCD读写控制脚。

D0-D7(8-15脚):数据线。

CS1、CS2、CS3(16、17、18脚):屏幕选择脚,CS1低选择左屏,CS2低选择中间屏,CS3低选择右屏。

2.4按键电路

设计4个按键,单片机检测各个按键IO口电平,按键未按下时,高电平,按键按下时,低电平。按键控制对应设备开关。电路如图:

2.5LED模拟灯电路设计

设计LED红灯和绿灯模拟灯的颜色。灯的开关和亮度通过LEDR和LEDG控制。亮度设置有灭、暗、亮。设置灭时,LEDR,G输出低电平,设置暗时,LEDR,G输出50%占空比的方波,设置亮时LEDR,G输出高电平。

2.6步进电机驱动电路

步进电机使用ULN达林顿管驱动,电路如图3-6-1。VCC是5V供电电压。C1-C4是脉冲控制脚。在C1-C4输出特定时序的脉冲信号,就能控制步进电机顺时针转或反时针转,模拟窗帘开关。

2.7继电器及驱动电路设计

设计4个继电器驱动电路模拟喷水设备开关、防盗报警开关、空调开关、热水器开关。图中三极管驱动继电器断开或闭合,当控制脚输出高电平时,三极管导通,继电器闭合。电阻起限流作用。二极管防止反向高压。LED灯指示继电器状态,继电器闭合时,LED灯亮,断开时,LED灯灭。电路图如下:

2.8传感器电路设计

传感器电路有人体红外传感器、烟雾传感器、火焰传感器,VCC和地供电,ROUT、YDO、HDO接单片机输入脚,当感应到信号时,对应脚输出低电平。YAO和HAO是传感器模拟输出,本设计未使用。电路如图:

2.9 GSM模块电路设计

通信模块和单片机串口通信,VCC、GND给模块供电,U_RXD是模块串口接收脚,U_TXD是模块串口发送脚。电路如图。

通信模块芯片使用的是3.3V电压,所以IO口不能和单片机直接连接,需要电平转换电路。电路如图。

2.10 电源电路设计

系统采用外部9V电源适配器供电,9V直流电经过3端稳压模块7805的降压和稳压,输出5V电压给芯片和其他电路供电。电路如图。

通讯模块供电是3.3V,通过3.3V稳压芯片ASM1117输出3.3V电压。电路如图。

三、软件编写及调试

3.1主程序设计

系统采用MC96F6432单片机,外围设备有语音模块输入,火焰传感器输入,烟雾传感器输入,人感传感器输入,按键,LCD显示,步进电机控制,灯控制,空调继电器控制,热水器继电器控制,防盗报警继电器控制,灭火继电器控制。

上电时,单片机初始化和外围设备初始化完成后,进入正常工作。单片机读取语音控制状态,根据状态控制灯光、空调继电器、窗帘步进电机、热水器继电器家电设备。单片机读取火焰传感器、烟雾传感器信号,控制灭火设备。单片机读取人感信号,控制报警继电器。LCD显示设备状态,报警信号通过GSM模块发送到指定手机。

系统流程图如图

3.2LCD显示程序设计

HS19264是字符点阵液晶,显示屏分3部分,通过CS1,CS2,CS3低电平选择。按16x16汉字计算,可以显示12x4=48个汉字。LCD控制线是RS,RW,E,控制写命令还是写数据。汉字、字符、数字需要建立字模。LCD取对应字模显示对应点,合起来就能显示对应文字。图是LCD显示流程图。

19264LCD显示代码:

/**底层驱动 ******************/

/*RS P17输出高低电平*/

void set_RS(unsigned charRS)

{

if(RS == 0)

P17 = 0;

else

P17 = 1;

}

/*RW P16输出高低电平*/

void set_RW(unsigned charRW)

{

if(RW== 0)

P16 = 0;

else

P16 = 1; }

/*E P15输出高低电平*/

void set_EN(unsigned charEN)

{

if(EN == 0)

P15 = 0;

else

P15 = 1;

}

/*CS1 P14输出高低电平*/

void set_CS1(unsigned charCS1)

{

if(CS1== 0)

P14 = 0;

else

P14 = 1;

}

/*CS2 P13输出高低电平*/

void set_CS2(unsigned charCS2)

{

if(CS2== 0)

P13 = 0;

else

P13 = 1;

}

/*CS3 P12输出高低电平*/

void set_CS3(unsigned charCS3)

{

if(CS3== 0)

P12 = 0;

else

P12 = 1;

}

/*LCD数据线P3口输出数据*/

void set_data(unsigned chardata)

{

P3= data ;

}

/*显示开关*/

void lcd_command_onoff(unsigned charonoff)

{

set_RW(0);

set_RS(0);

set_EN(0);

set_data(onoff+0X3E);

set_EN(1);

set_EN(0);

}

/*设置显示起始位置*/

void lcd_command_startline(unsigned charstartline)

{

set_RW(0);

set_RS(0);

set_EN(0);

set_data(startline+0Xc0);

set_EN(1);

set_EN(0);

}

/*设置显示页*/

void lcd_command_setpage(unsigned charpage)

{

set_RW(0);

set_RS(0);

set_EN(0);

set_data(page+0Xb8);

set_EN(1);

set_EN(0);

}

/*设置显示列*/

void lcd_command_setyadd(unsigned charyadd)

{

set_RW(0);

set_RS(0);

set_EN(0);

set_data(yadd+0X40);

set_EN(1);

set_EN(0);

}

/*向LCD DDRAM 写1BYTE 数据*/

void lcd_writedata(unsigned chardata)

{

set_RW(0);

set_RS(1);

set_EN(0);

set_data(data);

set_EN(1);

set_EN(0);

}

/*LCD初始化*/

void lcd_init(void)

{

lcd_command_onoff(1);

lcd_command_startline(0);

lcd_clear_scr();

}

/*LCD选择屏幕1、2、3*/

void lcd_setscr(unsigned charscr)

{

if(scr==1)

{

set_CS1(0);

set_CS2(1);

set_CS3(1);

}

else if(scr==2)

{

set_CS1(1);

set_CS2(0);

set_CS3(1);

}

Else

{

set_CS1(1);

set_CS2(1);

set_CS3(0);

}

}

/*LCD清屏1、2、3*/

void lcd_clear_scr(void)

{

INT8U i,j;

for(i=0;i<=7;i++)

{

set_CS1(1);

set_CS2(0);

set_CS3(0);

lcd_command_setpage(i);

lcd_command_setyadd(0);

for(j=0;j<64;j++)

{

lcd_writedata(0x00);

}

}

for(i=0;i<=7;i++)

{

set_CS1(0);

set_CS2(1);

set_CS3(0);

lcd_command_setpage(i);

lcd_command_setyadd(0);

for(j=0;j<64;j++)

{

lcd_writedata(0x00);

}

}

for(i=0;i<=7;i++)

{

set_CS1(0);

set_CS2(0);

set_CS3(1);

lcd_command_setpage(i);

lcd_command_setyadd(0);

for(j=0;j<64;j++)

{

lcd_writedata(0x00);

}

}

}

/*显示数字 显示8X16点字符 */

void lcd_write_0816(unsigned charpage,unsigned charyadd,unsigned charfanxiang,const unsigned char*disp)

{

unsigned chari=0,j=0;

for(j=0;j<2;j++)

{

lcd_command_setpage(page+j);

lcd_command_setyadd(yadd);

for(i=0;i<8;i++)

{

if(fanxiang==0)

{lcd_writedata(disp[j*8+i]);}

else

{lcd_writedata(~(disp[j*8+i]));}

}

}

}

/*显示汉字,显示16X16点字符 */

void lcd_write_1616(unsigned charpage,unsigned charyadd,unsigned charfanxiang,const unsigned char*disp)

{

unsigned chari=0,j=0;

for(j=0;j<2;j++)

{

lcd_command_setpage(page+j);

lcd_command_setyadd(yadd);

for(i=0;i<16;i++)

{

if(fanxiang==0)

{lcd_writedata(disp[j*16+i]);}

else

{lcd_writedata(~(disp[j*16+i]));}

}

}

}

3.3步进电机驱动程序设计

采用4相8拍步进电机,其原理是轮流通过电流,正转顺序是A,AB,B,BC,C,CD,D,DA。反转顺序是A,DA,D,CD,C,BC,B,AB。转速的快慢是由输出脉冲频率决定。

步进电机代码:

/*输出脉冲驱动*/

unsigned charMotorCtr(void)

{

if (stop_flag==1) //停止转动

{

P22= 0;

P21= 0;

P20= 0;

P10= 0;

return;

}

switch(step_index) //根据驱动时序,输出一个单脉冲信号波形

{

case 0: //0 ,(A 相)

P22= 1;

P21= 0;

P20= 0;

P10= 0;

break;

case 1: //0、1, (AB 相)

P22= 1;

P21= 1;

P20= 0;

P10= 0;

break;

case 2: //1,(B 相)

P22= 0;

P21= 1;

P20= 0;

P10= 0;

break;

case 3: //1、2 , (BC 相)

P22= 0;

P21= 1;

P20= 1;

P10= 0;

break;

case 4: //2, (C 相)

P22= 0;

P21= 0;

P20= 1;

P10= 0;

break;

case 5: //2、3, (CD 相)

P22= 0;

P21= 0;

P20= 1;

P10= 1;

break;

case 6: //3, (D 相)

P22= 0;

P21= 0;

P20= 0;

P10= 1; break;

case 7: //3、0, (DA 相)

P22= 1;

P21= 0;

P20= 1;

P10= 1;

}

if (turn==0) //转动方向控制,0-正转;1-反转

{

step_index++; //正转时序

if (step_index>7)

step_index=0;

}

else

{

step_index--;//反转时序

if (step_index<0)

step_index=7;

}

}

3.4LCD驱动程序设计

LED模拟灯光控制,LED状态有亮,暗,灭3种状态,LED的IO口输出高电平,灯亮,输出低电平,灯灭,输出PWM波,灯暗。图是LED控制流程图。

四、系统调试测试与分析

4.1电路焊接

用电烙铁将单片机,液晶显示,继电器,LED灯,稳压电源模块,按键,语音模块,传感器模块,按键,电容,电阻等焊接到线路板。实物如图所示。

4.2系统调试

连接电脑和烧写器,下载程序到单片机,上电初始化完成后,设备都在关闭状态。普通话说出以下单词,控制设备开。

1.开红灯。

2.开绿灯。

3.开空调。

4.开热水器。

5.开窗帘。

本智能家居系统设计报警功能,当火焰传感器检测到异常时,会显示火警,人体传感器检测到异常时,显示盗警。人移动到人体传感器前,显示盗警并继电器报警。如图。

如果觉得《语音识别智能家居控制设计》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。