APP下载

基于STC单片机的智能声控自动化台灯

2018-10-31李健钊罗炜杰黄潇曼熊明星

智能计算机与应用 2018年6期

李健钊, 罗炜杰, 黄潇曼, 熊明星

(广东工业大学 华立学院 机电与信息工程学部, 广州 511325)

引言

目前,由于经济的迅速发展,人们的生活水平不断提高,对生活空间的要求也呈现出多元化与智能化新趋势。而智能家居的实质和目的就是为人们提供更加安全、便捷、舒适的生活,这恰恰顺应了现今市场对高效、优质生活的普遍呼声,符合了这一社会需求。而智能声控台灯作为本文研究开发的新型智能家用电器,在使用上比普通的声控灯更加智能、实用,可以智能地识别用户说出的语音口令,并将其转化为语音字符后再与语音识别模块中预先设定的语音字符进行匹配,当两者成功匹配后,便可控制该智能声控台灯完成相应工作,这有效地弥补了现在声控灯对外界环境信息辨识度低的缺点,避免了不必要的能源浪费,从而达到了完备节能效果。不仅如此,智能声控自动化台灯与现在市场上的普通台灯相比,则更能满足人们对高科技融入现代居家生活的理想预期与热切需求。因此,该产品在智能家居的照明领域具有良好的实际应用和推广价值。为此,本文将对此展开研究论述如下。

1 硬件设计

1.1 系统结构设计

本文研发提出了由单片机主控模块为核心,包括语音模块、舵机模块、LED灯构成的智能声控自动化台灯控制系统设计,该系统的整体框架结构如图1 所示。

图1 系统结构框图

由图1可知,当语音识别模块接收到由单片机预先传输到LD3320芯片内的关键词时,语音识别模块会对单片机发送电平信号以触发中断,单片机接收到信号后会对指定引脚输出对应的电平信号指令,从而控制舵机模块执行灯罩开/关、强光LED灯板的开/关与亮度的明暗调节处理。

1.2 STC11L08XE单片机主控模块设计

控制模块选用单片机作为主控模块。所采用的 STC11L08XE 单片机是一种带32 K字节可编程/可擦除只读存储器EEPROM和8 K Flash程序存储器的单时钟/机器周期(1T)单片机,具有高速、低功耗、低成本、抗干扰能力强等特点。其内嵌有高可靠复位电路,使用时重点针对着高速通信、智能控制、强干扰场合[1]。STC11L08XE单片机主控最小系统原理电路设计如图2所示。

图2 单片机主控最小系统电路图

时钟信号的产生分为内部时钟和外部时钟2种不同方式。外部高精度晶体/时钟,内部R/C振荡器,常温下内部R/C振荡器频率为:4~8 MHz。内部集成MAX810专用复位电路和一个对内部VCC进行掉电检测的掉电检测电路,掉电检测电路可设置为中断或复位,这2个电路让用户使用起来非常方便以及安全[1]。

在单片机的XTAL1和XTAL2引脚之间接一个22.118 4 MHz晶振,同时分别在2个引脚上接入22 pF的电容,便能使晶振快速起振,同时维持振荡信号的稳定。为了保证声控台灯在噪杂的环境中依然能够正常使用,故使用了一个自锁开关连接在STC11L08XE单片机的INT1引脚与电源负极之间,方便台灯开关状态的切换,同时也不会影响台灯的声控操作。

1.3 语音识别模块设计

语音识别模块的核心组成就是一块LD3320语音识别芯片。该模块的主要作用是在识别并接收到由单片机预先写入的关键词字符后,对单片机发送电平信号,触发其中断。

LD3320芯片是一款语音识别的常用芯片, 该芯片定制有语音识别处理器和一些外部电路,包括内置有高精度A/D、D/A通道,音频输入输出接口等, LD3320主要由输入电源、语音识别运算器、 时钟电路以及语音信号通道组成[2]。

设计中采用ASR( Auto Speech Recognition)技术。利用语音识别技术,根据人所独有的语音频谱特征,自动识别外界语音,通过判断接收到的音频是否与先前设置的语音关键词相同,使用语音命令来控制台灯的一种高科技智能芯片[3]。语音识别芯片工作时是将通过MIC输入的声音进行频谱分析,随后提取出语音特征,并与关键词语列表中的关键词语做出对比匹配,匹配后找出相似度最高的关键词语作为识别结果输出[4]。由于 LD3320 内部已经集成了目前相对快速、稳定的优化算法,因而不需要外接 Flash 和RAM等存储设备,同时LD3320 也不需要用户事先训练来完成非特定人声的语音识别,因此 LD3320 的语音识别率更稳定,更贴切于民用需求,准确率也更高[2]。

在语音识别模块中,研究将LD3320芯片用并行的方式直接与STC11L08XE单片机连接,与单片机共用同一个外部22.118 4 MHz晶振,LD3320的A0引脚与单片机的P20引脚相接,用于判断是数据段、还是地址段。MBS引脚用于麦克风偏置,同时连接一个RC电路以保证为麦克风输出浮动电压[4]。LD3320芯片中控制信号RDB、WRB以及中断返回信号INTB分别与单片机中的RD、WR、INT0引脚相连,已实现当麦克风收到指令后由LD3320对单片机发出中断指令并传输数据的功能;同时为了确保该系统的稳定性,在CSB、RSTB(复位信号)处采用10 K电阻上拉。EQ1、EQ2、EQ3为喇叭音量的外部控制电路[3]。

1.4 舵机模块设计

舵机模块的设计是本系统智能设计的一个重要部分。该模块的核心部件为单片机控制的舵机,本方案采用的是S3003舵机,工作电压为4.8~6 V。舵机的控制信号为周期是20 ms(即频率为50 Hz)的脉宽调制(PWM)信号,其中的脉冲宽度从0.5~2.5 ms(即占空比为2.5%-12.5%),相对应舵盘的位置为0°~180°,两者呈线性变化[5]。所以,为其提供一定的脉宽,该舵机的输出轴就会保持在一个相对应的角度上,无论外界的转矩怎样改变,直到为其提供一个另外宽度的脉冲信号,此时才会改变输出角度到新的对应的位置上[6]。

考虑到舵机工作电压使用6 V时更加灵敏,而常规的USB供电只有5 V,所以需在舵机的供电线上外接一个5 V转6 V的升压模块。同时,因为STC11L08XE单片机引脚输出电压较低,需要单片机连接舵机信号线的I/O口使用推挽输出来输出指定的PWM才能驱动舵机转动。在本系统中,因为需要操控舵机用于台灯灯罩的打开,便于照明,所以在台灯的“开灯”口令中固定输出占空比为10%的PWM(即旋转120°),“关灯”口令中固定输出占空比为2.5%的PWM(即旋转0°)即可。

1.5 强光LED灯板设计

强光LED灯板主要由2组、共6个1 W强光LED灯珠组成,每组都会串联上一个SS8550三极管,由单片机主控模块的I/O口直接连接三极管的基极,发射极与集电极分别连接电源正极与灯板正极,当单片机对SS8550的基极输出一定的PWM便可控制灯板的亮灭及其亮度。但单片机的I/O口输出电压较低,无法驱动调控用5 V供电的灯板亮暗,所以在灯板的电源连接处接上AMS1117稳压芯片,使灯板的输入电压降至3.3 V。

1.6 供电模块设计

该台灯使用的是USB供电,而一般的USB接口都为5 V供电,而STC11L08XE单片机与LD3320芯片的额定工作电压为3.3 V,所以需要接入AMS1117稳压芯片,输出3.3 V的电压,以保证STC11L08XE单片机与LD3320芯片的正常工作,同时接入4个电容用于滤波,使供电更加稳定[7]。

2 软件设计

2.1 系统程序流程设计

本文设计系统的软件设计总流程如图3所示。

图3 系统总流程图

2.2 LD3320工作状态判断程序代码设计

void LD3320()

{

switch(ASR Status)//LD3320当前状态

{

case ASR RUNING://LD3320处于识别状态

case ASR ERROR: //LD3320内部发生错误

break;

case ASR NONE: //未处于识别状态

{

ASR Status=ASR RUNING;

//LD3320进入识别状态

if (RunASR()==0) //完成了LD3320初始化、添加关键词并启动ASR运算

{

ASR Status = ASR ERROR;

//初次识别流程中LD3320内部发生错误

}

break;

}

case FOUND OK:

//LD3320语音识别流程时识别出关键词

{

ASR Res = Get Result();

//获取语音识别结果

User handle(ASR Res);

//执行设定好的指令

ASR Status = ASR NONE;

//返回未识别状态

break;

}

case FOUND ZERO://未识别出关键词

default:

{

ASR Status = ASR NONE;

break;

}

}

}

3 系统工作过程及工作效果

3.1 系统工作过程

台灯通电时,各模块进行初始化,初始化结束后电源指示灯稳定进入低亮状态。为了降低杂音对声控功能的影响,该台灯采用口令触发模式,即当使用者对台灯先说出口令后才能对其说出操作命令;该台灯的口令为“小白”。当识别口令成功后,电源指示灯进入高亮状态,此时使用者可对台灯发送操作命令,使台灯转入相应的工作状态,同时电源指示灯恢复低亮状态。该台灯共有5种工作指令:开灯、关灯、低亮度、正常亮度和高亮度。在台灯识别口令成功后再对台灯说出“开灯”的操作命令时,台灯灯罩会抬升至120°,同时灯的亮度会进入正常亮度状态;对台灯说出“关灯”的操作命令时,台灯灯罩则会回到关闭状态,同时灯也会进入关闭状态。在台灯识别口令成功后再对台灯说出“暗灯”或“暗光”的操作命令时,灯的亮度会进入低亮度状态;说出 “正常”的操作命令时,灯的亮度会恢复正常亮度状态;说出“亮灯”或“亮光”的操作命令时,灯的亮度会进入高亮度状态。

此外,用于直接切换台灯开关状态的自锁开关作为外部中断开关,按下时直接对单片机发送外部中断信号,直接使台灯切换开关状态。但只能用于切换台灯的开关状态,无法改变其工作亮度。

3.2 系统工作效果

在通电状态下,电源指示灯处于低亮状态;在室内环境相对安静下,对台灯说出口令“小白”后,电源指示灯进入高亮状态;然后说出工作指令“开灯”,电源指示灯恢复低亮状态,同时台灯灯罩抬升120°并开灯,亮度为正常亮度状态;开灯后,再次说出口令“小白”,电源指示灯进入高亮状态后,说出工作指令“亮灯”或“亮光”,台灯亮度调为高亮度;说出工作指令“暗灯”或“暗光”,台灯亮度调为低亮度;说出工作指令“关灯”,台灯关闭且灯罩收合至初始状态。如图4即为上述工作命令的实际效果图。

图4 各工作命令的实际效果图

4 结束语

制作了以STC1108XE单片机为核心的智能声控及其自动化台灯。预先设定的语音字符口令由单片机检测到语音识别声控保存,并在语音识别模块对周围的声音进行非特定人语音检测时,将LD3320语音识别芯片上预先保存的语音字符与识别到的语音字符进行匹配,若口令匹配成功则由引脚将其电平信号传送到单片机触发其中断,由单片机控制舵机转动LED强光灯板到达指定高度或收合起来,再由单片机输送的电平信号控制LED强光灯板的亮灭及其亮度的调节。同时为了保证该声控台灯在嘈杂环境中依然不影响使用,而加入了一个自锁开关,直接切换台灯的开关状态而不影响该台灯声控的功能,但自锁开关无法用于切换台灯亮度。而外壳则是使用3D打印制作完成。经过对该设计制作的实物在室内环境条件下的实验测试,初步测试结果表明该声控台灯可以有效实现对语音口令的准确识别,完全达到了设计的目的和要求。该设计成本适中,可以直接应用于智能家居中并进行后续的推广普及。