版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于STC89C52RC的智能家居控制系统设计与实现摘要随着科技的发展,时代的进步,人们的生活水平及生活质量不断得到提升,于是人们就想着如何简化自己的日常生活,提高自己的日常生活效率,于是便想着通过计算机来简化自己的生活,各种嵌入式设备在人们的日常生活当中逐渐得到广泛应用。伴随着计算机及集成电路的飞速发展,嵌入式设备也在不断地更新换代,随着各个领域不断地有技术突破,整个智能家居的框架也在发生在翻天覆地的改变,人们在找寻一种最适用于家庭设备控制的解决方案。与此同时,语音识别技术应声而出,将语音识别技术应用于控制系统,语音控制相比于手动控制有着更便捷、更安全的优点。近几年来,随着语音识别技术也在不断的完善,语音识别的准确率也有了极大的提升,不断加强智能家居和语音识别方面的研究,提高语音识别与智能家居之间的兼容性,不断改善人们的生活,具有积极的意义。将语音识别模块与单片机建立起联系。由语音识别模块识别出相应的指令传送给单片机,由单片机控制相应的外围模块。外围模块与实际居家环境结合起来,从而达到智能家居。本文主要论述了基于STC89C52RC单片机的语音识别智能家居控制系统的设计与实现,以STC89C52RC为主控芯片,将LD3320作为语音识别芯片,外接外围模块模拟现实家居环境,实现了语音控制外围模块的功能。为智能家居的实现提供了思路。关键词:单片机;语音识别;智能家居;嵌入式 目录1绪论 绪论随着时代的发展,科技的进步,人们为了想要更加的简化自己的生活,于是想通过使用计算机去控制家电,这其中少不了嵌入式设备,其中在嵌入式设备的运用中,将语音控制应用于智能家居设备的控制当中,用语音来控制各种家居设备的运用,可大大提高人机互动的智能程度,所以对于简化家电的控制方式而言,用语音识别去做控制定将成为未来的发展大趋势。1.1课题研究背景1.1.1国外研究现状我们都知道,电是在十九世纪中期的第二次工业革命被富兰克林发现并使用的,随着电能被人类所使用,各种各样的电器也随之现世。随着计算机的问世,使用计算机去控制家电的想法越来越成熟,早在1950年,在《大众机械》杂志上就有一篇叫做“按钮庄园”的有关初代智能家居的概念设计,作者是机械天才EmilMathias,EmilMathias将自动化概念引入到家庭设备的控制当中,EmilMathias对自己的家居空间进行了定制化改造,第一代自动化家具控制系统逐步成型,其设计中包括了自动窗帘、自动咖啡机等[1]。当然全球最富裕的比尔盖茨先生曾经也是投下重金打造了一座私人专用的智能家居系统。其实,正是因人们坚持不懈的奋斗,对理想生活的不懈追求,才会有颠覆的思想可以为今日的智慧生活作出贡献。说起国外的智能家居控制系统,那当然会首先想到美国的皮可电子公司在1976年就已经推出的X-10系统,起初美国主要的智能家居产品使用的都是X-10协议,比如电灯开关、监控安防系统、电视机等,X-10具有结构简单、性价比高、规模小的特征,但正是由于结构简单,X-10只能处理256个字节,它采用120KHz功率载波,带宽有限,传输数据少,抗干扰能力差[2]。虽然说国外的智能家居技术比我国先进很多,技术框架也相对比较成熟。但是就中国的国情来看,国外的技术不适合我们[3]。1.1.2国内研究现状中国的智能家居起步较晚,早年间智能家居的概念仅为少部分人所知,整个行业还处在产品认知、概念熟悉的阶段。又由于国内的计算机基础起步比较晚,所以在这个阶段,中国本土内基本没有能够专业的大规模化的生产智能家居的生产商,最起初只有在深圳有几家代工厂从事为美国X-10系统代理公司做生产与销售,而且产品也还是大多数都卖给了居住在国内的外国人。随着国内互联网企业的不断兴起,国内一些互联网大厂也纷纷推出了自己的产品,家用电器的使用形式在千变万化,出现了智能电视、智能冰箱、智能灯泡、家用机器人等产品,并迎来了传统的家电制造商海尔等以及互联网及通信企业如科大讯飞等开始进行智能家居行业的布局,投入资金和人力进行平台和设备的研发活动,开始颠覆传统的家电行业格局,加速了中国智能家居产业的行业规模的发展。国内的一些著名的家电厂商和智能设备厂商,比如小米、百度、科大讯飞、海尔、联想等,纷纷开始了对智能家电的研究,也都有了自己的成果,比如海尔推出了U+智能生活操作系统,早在2013年,小米公司就进军智能家居市场,将智能家居控制系统部署在自家的小米手机上,科大讯飞也陆续推出自己的概念产品语音助手APP,以及讯飞语音云。为了布局智能语音,智能家庭的入口,华为更是推出了荣耀立方路由器,但是由于智能家居市场上一直没有一个互联标准,一个类似于SEMIStandard的行业标准来协定各个厂家,导致智能设备无法互联[4]。1.2课题研究意义二十一世纪是计算机与互联网的时代,全球智能家居的发展趋势良好,放眼未来来看,未来智能家居的普及率一定非常高,市场非常大,而用语音控制智能家电则是智能家居控制技术的最佳突破口,语音识别的准确率在不断地提高,未来,当语音识别技术已经非常完善后,语音控制一定是被采用的最多的一种控制方式之一。就语音识别控制和手动控制相比,语音控制不仅仅在安全性和便捷性上远远强于其他的控制方式,在识别效率上也是非常高的,因为语音识别的方式非常简单,只需要说话就行,不需要什么肢体行动。将语音识别模块与单片机建立起联系。由语音识别模块识别出相应的指令传送给单片机,再由下位机STC89C52RC去控制相应的外围模块。本课题的研究正是基于这样的背景,进一步开展语音控制的应用研究[5]。1.3智能家居系统的预期功能本系统设计采用LD3320作为语音识别芯片,咪头进行声音的采集,并将采集结果传送给上位机STC11L08XE进行分析匹配,将匹配结果通过串口通信发送给主控制器STC89C52RC,主控制单片机在收到相应的讯息后再调用驱动相应的外围模块做出相应的动作。语音识别智能家居控制系统的预期功能是:先对着麦克风下达一级口令(唤醒口令)防止在日常生活的对话中误触发,一级指令识别成功后方可进行二级指令的识别,也就是功能控制,当咪头收到一个完整的指令后,上位机可将结果发送至下位机,主控芯片驱动相应的外围模块可以达到想要的结果,如果运用到现实生活中,可以外接一个继电器,通过继电器去控制家电的开关,减少了人为操作,让人们真正享受智能化生活[6]。1.4开发环境的搭建1.4.1Keil5软件Keil5软件是德国开发的一种支持两种语言的开发软件系统。但一般的学习和生活中我们运用最多的是C语言,它简单方便、容易理解。汇编语言的使用并不广泛,因为它对使用者的语言要求较高,理解相对而言难了很多。所以本设计中所使用的开发语言为C51语言,C51语言是在C语言的基础之上增加了51单片机所使用的库文件,但是整体的语法结构和语法规则还是采用的C语言的习惯,C51在结构上,可读性上,可移植性和代码效率上都远远强于汇编语言。Keil系列软件安装简单方便,根据软件安装过程给出的提示完成安装即可,对系统的要求也比较低,一般的windows系统就可以[7]。Keil5软件主界面如图1.4所示:图1.4Keil5主界面图1.4.2STC_ISP本设计使用的单片机是STC公司生产的51单片机,所以下载编程所使用的烧录软件也是STC官方提供的STC-ISP烧录软件,该软件可直接烧录Keil编译所产生的HEX文件,STC官方还将很多功能集成在了这款软件上,比如经常会使用到的串口调试助手,各种定时器的计算器等等[8]。该软件自带的串口调试助手非常的好用,可选择指定的COM口和指定的波特率,当和单片机所对应的串口和波特率对应上后便可进行串口通信,可选择文本模式和HEX模式,也可多字符串发送,或者按照周期自动发送,有了该功能,在进行串口调试时方便很多。该软件选用的下载方式是通过电脑的COM口进行下载,也可安装串口驱动,从而使用USB下载,当单片机连接至主机上时,会自动安装驱动,驱动安装好之后便可选择相应的单片机的型号和需要烧录的HEX文件进行下载烧录,波特率越高传输速率越快,波特率越低下载越慢,但是越稳定,对于一些性能不高的单片机,则建议采用较低的波特率能大大增加下载烧录的成功率,对于单片机而言则一般采用冷启动即可下载程序。STC_ISP_15xx_V6.87H主界面如下图1.5所示图1.5STC_ISP_15xx_V6.87H主界面1.5本章小结本章先是对智能家居的发展历程进行了简要介绍,又对国内外的发展状况进行了分析,并且提出了语音识别控制相对于其他的控制方式的优点,以及立题的设计目的及意义,且初步分析了国内外已有的智能家居控制系统的优缺点,通过国内外的产品经验进行自我定位,选定一个适合中国国情的智能家居的发展方向,在智能家居控制的技术当中,语音控制最合适、最安全、最高效。同时分析了语音识别控制在智能家居控制当中的重要程度,以及分析了智能家居今后的发展趋势。还介绍了本设计的最终功能,通过上位机将语音信号从模拟信号转为数字信号从而进行处理,处理完毕后上位机根据匹配结果,将对应的指令发送至下位机,下位机再去驱动相应的外围设备模块完成相应的指令需求,最后介绍了开发本系统所需要的开发环境以及开发过程当中所需要使用的开发工具,IDE选择了Keil5,烧录软件使用了最新版的下载器。
2系统硬件设计本系统选用STC89C52RC单片机为主控芯片,LD3320作为语音识别模块,STC11L08XE为板载自带上位机,主控芯片选择STC89C52RC,主控芯片连接的外围模块有直流电机模块,步进电机模块,舵机模块,以及LED模块构成。2.1元器件清单表2-1元器件清单元器件清单序号元器件名称型号个数1语音识别模块B-LD3320A12主控单片机STC89C52RC13直流电机模块RF-300FA-1235014步进电机模块28BYJ-4815舵机模块SG9016Led模块RGB17直流电机驱模块MX150818步进电机驱动模块ULN2003A19数据下载线CH340G110杜邦线公、母若干2.2系统结构框架图图2.2系统结构框架图2.3STC89C52RC2.3.1STC89C52RC介绍主控制单片机负责通过调用I/O口从而对外围模块的调用以及与上位机之间的通信,本系统选用STC89C52RC单片机为主控制器,STC89C52RC单片机是宏晶公司生产的一款51单片机,不仅功能全面,性能稳定,而且价格非常便宜,非常适用于学生进行开发学习,相比ATMEL公司的单片机具有抗干扰能力更强的优点,而且STC单片机相对的执行速度更快,功能更加强大,AT单片机多采用ISP下载,而STC单片机多采用串口下载。STC单片机广泛应用于嵌入式控制系统,STC89C52RC支持全双工串行口,拥有512字节的随机存取存储器以及8k字节的闪烁存储器缓冲区。拥有P0~P4,共32个I/O口,可对外围设备进行很好的拓展功能,同时还支持内外复位电路。STC89C52RC相比STC89C52本身自带晶振电路,R代表电阻,C代表电容。该单片机可使用STC官方提供的STC-ISP下载烧录软件通过USB直接进行烧录,同时板载提供5V和3.3V两种输出电源,在没有DC模块时,可临时当DC模块使用[9]。下图2.3为单片机的实物图,图2.4为单片机的最小系统。图2.3STC89C52RC实物图2.3.2STC89C52RC最小系统电源电路,晶振电路,复位电路是一个单片机正常运作所必须的三要素,其中最小系统是单片机运行时的最小单位,同时也是我们必须要掌握的。图2.4为STC89C52RC单片机的最小系统。复位电路的作用主要是,不管单片机是跑死了或者程序跑飞了,或者遇到了一些非正常操作,都可以及时方便的将单片机进行初始化操作,使单片机恢复到一个正常的状态重新开始运行。单片机的复位方式通常有两种,一种是上电复位,一种是开关复位,这两种复位方式只是2种不同的形式而已。上电复位的意思就是在单片机通电之后,单片机自行能够进行内部电路及数据的复位。而开关复位的意思就是说在单片机已经是在通了电的情况下,在单片机上电运行且有程序在运行时,如果程序发生异常或者单片机硬件电路发生异常,再或者是由于静电问题导致单片机的部分I/O口出现异常电平信号,使得单片机I/O口不受控制了,则可以直接使用外部的按钮开关就可以对单片机进行复位操作。图2.4左边即为复位电路。图2.4单片机最小系统STC89C52RC单片机有P0,P1,P2,P3共4个并行I/O口。每个I/O口都由8个引脚组成,当普通I/O口使用时,需要外接上拉电阻,P1、P2、P3已经板载集成好了上拉电阻,但是P0口在作为I/O口输出的时候必须外接上拉电阻,一般来说P1口只具有普通的I/O口功能,当需要向外围模块的存储器读写数据时,一般使用P2口,用于传送高8位地址,P3口的任务就比较多了,除了当普通的I/O口使用,引脚0和引脚1被用来做串行口的输入和输出,在串口通信时使用,当需要使用到外部中断时就需要使用引脚2和引脚3,分别负责外部中断1和外部中断2,引脚4和引脚5被用来作为定时器T0和T1的计数入口。2.4语音识别模块2.4.1语音识别模块介绍本系统所采用的语音识别芯片为LD3320语音识别芯片,它是ICRoute公司专门针对非特定人声语音识别所研发出的一款语音识别芯片,非特定人声语音识别和特定人声语音识别在原理上有细微的差异,特定人声语音识别只针对使用对象的语音特点去建立语音模型和语音特征,会加有声音音色的识别判断,而非特定人声语音识别是建立在众多的声音样本分析的基础之上建立的,经过工程师的算法处理得到的语音矢量模型[10]。图2.5为LD3320的实物图,它的内部逻辑结构如图2.6所示:图2.5LD3320芯片实物图图2.6LD3320内部结构逻辑图2.4.2LD3320语音别原理语音识别的原理在于,首先,要有一个声音源输入,一般使用咪头也就是麦克风来进行声音信号的录入,然后语音识别芯片会对原始语言信号进行处理,首先过滤掉不重要的信息以及背景的噪音,然后找出语音信号的起始点和结束点,再对其进行分帧处理,就是将段语音信号分割成一小段一小段的语音信号,然后对每一小段的语音信号进行特征提取,一般会提取声音的音调,语速等等,再将分析提取出来的语音矢量特征和声学模型库或者语言模型库进行比较映射,最后将匹配程度最高的结果作为语音识别传出[12]。在语音识别的准确率上我做了优化处理,添加了多条识别口令对应同一个识别码的方法,因为不同的人的说话方式不同,比如同样是想要开门,却有多种不同的说法,比如“开门”,“去开门”,“把门打开”等对应的识别码都是开门指令所对应的识别码,这样就可大大的提高语音识别的准确率[13]。LD3320语音识别过程如下图2.7所示:图2.7语音识别过程框图2.4.3B-LD3320开发板该语音识别模块已经将LD3320语音识别芯片和STC11L08XE单片机进行了整合,开发板上还为STC10LO8XE单片机芯片提供了I/O口。图2.8为B-LD3320开发板实物图:图2.8B-LD3320实物图2.4.4引脚功能B-LD3320语音识别模块共有28个引脚,但是在本设计中没有用到所有的引脚,以下对本设计使用到的引脚做一个介绍,首先数据引脚也就是P口,只用到了P3.0和P3.1作为与下位机进行串口通信的数据传出口和数据接收口,如果有其他的模块也需要使用串口通信,可使用普通的I/O口使用软件模拟串口,从而达到串口的功能,其他的P口有保留,需要时可使用,因为该单片机的标准工作电压是5V,但是LD3320语音识别芯片的标准工作电压为3.3V,所以模块内部自带电平转换电路,所以VCC可以直接接5V的,如图2.9所示:图2.9B-LD3320引脚功能图2.5直流电机模块2.5.1直流电机基本介绍本系统使用的直流电机型号为RF-300FA-12350,为有刷直流电机,额定功率:5.9(KW)额定电压:5.9(V)额定电流:0.030(A)额定转速:3500-5000(rpm)额定转矩:6500-8500(NM),在对直流电机的控制上,常使用PWM函数来对直流电机进行调速处理,在控制直流电机正反转时,可直接将正负极反过来即可。但是由于单片机的I/O口的驱动功率很小,所以在使用直流电机时,需要外接一个直流电机驱动模块,方可正常使用。该型号的直流电机适合在单片机上使用[15],而在本系统中对于直流电机的作用是模拟电风扇。图2.10为本系统所用直流电机实物图。图2.10直流电机实物图2.5.2直流电机驱动模块本系统采用的直流电机驱动模块型号为MX1508SOP-16四通道双路有刷直流马达驱动,供电电压2V~10V,可同时驱动两个直流电机,可实现正转反转和调速的功能,有热保护且能够自动恢复,相对L298N稳定性更强。图2.11为直流电机驱动模块的实物图,图2.12为直流电机驱动模块MX1508的原理图。图2.11直流电机驱动模块的实物图图2.12直流电机驱动模块MX1508原理图2.6步进电机模块2.6.1步进电机基本介绍本系统中使用的步进电机型号为28BYJ-48,该步进电机为5V驱动的4相5线的步进电机,而且是减速步进电机,步进电机必要要加驱动才可以正常运转,本设计所用的步进电机驱动模块为ULN2003A,驱动步进电机的方式是向其不断地发送脉冲信号,发送一个对应的脉冲里面的电机就会以一定的角度旋转一下,不断地发送相应的脉冲信号,步进电机就会相应的旋转下去,28BYJ-48的减速比为1:64,也就是电机壳里面的电机转64圈,电机壳外面的部分转1圈,步进角为5.625/64度。就是说给步进电机1个脉冲信号可以使内部的电机转动5.625度,则64个驱动信号可以转1圈,也就是如果需要步进电机内部的驱动电机转动一圈,那么需要给它发360/(5.625*64)=4096个脉冲信号,四相代表的意思是ABCD四相,步进电机内部的定子上有8个齿,其中两两相对的2个齿是1相,八拍的意思是,A-AB-B-BC-CD-D-DA-D,其中一拍就代表一个脉冲信号,所以要完成一个循环就需要用到8个脉冲信号,所以当发送完一组的脉冲信号时,就可以使步进电机内部的转子转过一个齿距。当转子转过8个齿距,那么就是一圈,8*8=64,64拍,所以向步进电机连续发送64个脉冲信号就可以使步进电机外部齿轮旋转一圈[16]。图2.13为本系统所用的步进电机的实物图:图2.13步进电机实物图2.6.2步进电机驱动模块由于单片机的I/O口信号不够大所以需要通过连接ULN2003步进电机驱动模块放大再连接到相应的电机接口。所以需要在单片机和步进电机模块之间连接一个步进电机驱动模块,图2.14为步进电机驱动模块ULN2003的实物图,图2.15为ULN2003的原理图。图2.14步进电机驱动模块实物图图2.15ULN2003原理图2.7舵机2.7.1舵机基本介绍本系统舵机使用型号为SG90,为数字舵机,有三根线,棕色为GND,橙色为VCC,黄色是信号线。2.7.2舵机工作原理首先,舵机是一种伺服电机,我在本设计中使用的舵机为SG90,舵机可分为数字舵机和模拟舵机,数字舵机只需要给一个目的地PWM信号,即可旋转到指定的位置,舵机由内部的有刷直流电机驱动,直流电机带动减速齿轮组,一方面可增加扭力,另一方面可提高转动角度的精确度,舵机内部的电位器是起到传感器的作用,获取当前电机实际转动到了什么位置,从而对电机的旋转的方向进行确定[17]。舵机的基本结构是这样,作为一个单片机编程者,具体的原理我们不必搞清楚,首先,我们要是想控制舵机,就得先产生能够符合舵机要求的PWM波,首先产生一个周期为20ms的PWM波,PWM的突起部分也就是高电平占空比得是舵机能够识别的范围之内,不能过高或者过低,高电平在一个周期的持续时间对应的舵机角度如图2.20所示。舵机的输入线共有3根,SG90使用的输入电压为5V,一般来说中间的红色的那根线是电源线,SG90的输入电压为5V,一边棕色的线是负极用来接地,最后一根黄色线是控制信号线,可用来输入PWM,需要注意一点,不同的厂商的定义都不同,具体的规则还得看厂商提供的开发手册上时如何定义的。舵机内部的基准电路的宽度也就是高电平所占的时间,又叫占空比,本设计所使用的SG90舵机在0.5ms时旋转角度为-90°,1ms为-45°,1.5ms为0°,2.0ms为45°,2.5ms为90°,总角度为180°。本系统中用舵机来控制门的开关,很好的模拟了真实家居环境中电动门的开关。PWM全称脉冲宽度调制波,可由图形化设备(示波器)观察到,类似于长城边缘一样的图案,一般来说横坐标为时间,纵坐标表示电平的高低,周期就是相邻高低延的时间长度,占空比为高电平或低电平所占周期的比例。图2.16舵机实物图:图2.16舵机实物图舵机工作原理图及输出转角与输入信号脉冲宽度的关系图:(a)电机内部原理图(b)输出转角与输入信号脉冲宽度的关系图图2.17舵机原理图2.8LED模块本系统使用的LED模块为一个RGB三色LED灯,RGB为红绿蓝三色,红绿蓝为所有颜色的三原色,所以理论上可用红绿蓝搭配出所有的颜色,RGB三色灯我初始化为三色相同亮度,后期如果有需求可使用PWM去改变R、G、B三路的信号占空比,从而可使得LED显示出不同的颜色,嵌入式的精髓就在于可玩性高,随时可按照需求进行修改。图2.18为LED模块实物图。图2.18LED模块2.9本章小结本章先是对本设计所使用到的各个模块做了一个罗列汇总,从元器件清单中就可以看出本系统耗价低,功能的可拓展性强,本章主要介绍了本系统设计所需要的一些硬件模块的介绍。首先该系统的两大核心单片机为STC89C52RC和STC11L08XE,这两块单片机都是STC公司研发的51单片机,使用51单片机主要的优点在于便宜,性价比高,STC单片机相比AT单片机具有抗干扰能力更强的优点,而且STC单片机相对的执行速度更快,功能更加强大,AT单片机多采用ISP下载,而STC单片机多采用串口下载。在语音识别芯片的选择上,我选择了ICRoute公司研发生产的LD3320语音识别芯片,该芯片的识别方式是非特定人声语音识别,非特定人声语音识别和特定人声语音识别在原理上有细微的差异,特定人声语音识别只针对使用对象的语音特点去建立语音模型和语音特征,会加有声音音色的识别判断,而非特定人声语音识别是建立在众多的声音样本分析的基础之上建立的,经过工程师的算法处理得到的语音矢量模型。本设计采用的LD3320便是非特定人声语音识别芯片,只要是可以说普通话的人都可以控制使用。在语音识别的准确率上我做了优化处理,添加了多条识别口令对应同一个识别码的方法,因为不同的人的说话方式不同,比如同样是想要开门,却有多种不同的说法,比如“开门”,“去开门”,“把门打开”等对应的识别码都是开门指令所对应的识别码,这样就可大大的提高语音识别的准确率。在模块与实际仿真物品的选择上面,我使用舵机来作为开关门的驱动电机,因为舵机的旋转角相比较其他的电机而言更容易控制,非常适合用于需要灵活的控制角度时使用,而步进电机就作为驱动升降窗帘的驱动电机,由于升降窗帘需要较大的扭力以及控制旋转的圈数,因此步进电机就非常适合用来作为升降窗帘的驱动电机,最后使用直流电机作为风扇的动力电机,首先是直流电机的旋转是非常快的,能提供较高的转速驱动,其次直流电机的转速可以使用PWM函数来控制,比如以后如果需要添加其他功能,比如添加一个距离感应器,通过距离感应器的值来控制风扇风力的大小,就可以通过控制PWM函数的高电平的占空比来实现完成。
3系统软件设计一个系统的灵魂在于它的软件设计,本设计在Windows10的操作系统上,采用KeiluVision5编译器来进行软件的编程,编程语言采用C51语言,C51语言是目前的8051单片机应用开发中,普遍使用的程序设计语言。C51语言是在C语言的逻辑基础之上引入了51单片机库文件的一种整合语言,C51语言相对于汇编语言有很多优异的地方,比如C51在代码的生成运行效率上,代码的可读性以及可移植性上要远远比汇编语言强。设计主要包括了主控程序设计,语音识别程序设计,串口通讯程序设计,直流电机程序设计,步进电机程序设计,舵机程序设计,以及LED程序设计。3.1主程序流程图首先,本程序运行起来之后,LD3320语音识别模块会先进行初始化,然会写入识别列表,然后进入到语言识别状态,由于LD3320的驱动方式比较复杂,控制比较繁琐,为了解决这个问题,厂商推出了STC单片机+LD3320控制板,LD3320A在LD3320的基础上提前集成好驱动芯片,搭载了STC11L08XE[18]。LD3320A通过板载咪头读入相应的指令,先进性一级指令的匹配,如果一级指令匹配成功,则进入到二级指令的匹配,二级指令才是真正的指令识别,相应的指令识别成功后,STC11L08XE通过串口通信将相应的讯息发送给主控芯片STC89C52RC。主控芯片STC89C52RC再去通过发来的讯息去判断主人想做的指令,然后通过调用I/O口去调用哪个外围模块,然后外围模块再做出相应的动作。主控芯片的逻辑中使用到了定时器中断,使用定时器中断去产生控制舵机的方波周期,大大的提高了CPU的运行效率,可使CPU在等待接收串口通信的同时能够去执行其它的事情,大大的提高了CPU的运行效率,但是在给步进电机发送脉冲时采用的是延时函数进行处理。3.1.1语音识别数据处理流程图如图3.1所示:图3.1语音识别处理流程图3.1.2主控单片机程序流程图图3.2主控单片机程序流程图3.2直流电机模块本系统设计中使用直流电机带动风扇模拟家居生活中的电风扇,当LD3320识别到打开风扇的指令时会发送相应的讯息至STC89C52RC主控制单片机,主控制单片机在收到打开风扇的讯息后会调用相应的直流电机模块,驱动直流电机工作,直流电机带动风扇转动,可起到模拟风扇的作用。3.2.1直流电机模块设计流程图流程图如图3.3所示:图3.3直流电机模块设计流程图3.2.1直流电机模块代码if(fan=1)//fan=1,代表打开风扇{IN1=1;//IN1=1,IN2=0代表正转,IN2=0;}else{IN1=0;IN2=0;}3.3步进电机模块本系统设计中使用步进电机带动窗帘模拟家居生活中的电动窗帘,当LD3320识别到打开窗帘的指令时会发送相应的讯息至STC89C52RC主控制单片机,主控制单片机在收到打开窗帘的讯息后会调用相应的步进电机模块,驱动步进电机工作,步进电机正传将窗帘收上去,主控制单片机在收到关闭窗帘的讯息后会调用相应的步进电机反转可将窗帘放下去,步进电机在智能家居中可起到模拟电动窗帘的作用。3.3.1步进电机模块设计流程图图3.4步进电机模块流程图3.3.2步进电机模块代码ucharcodeFFW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//四相八拍反转表ucharcodeREV[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//四相八拍正传表voiddelay(uintt)//延时函数,单位1msif(direction==1)//1代表正传,2代表反转 { if(v<8) { P2=FFW[v]; delay(1);//1个脉冲延时1ms,用来控制转速 number++;//记录脉冲数 v++; } if(v==8) {v=0;} } if(number==4096) { snum++; number=0; } if(direction==2) { if(v<8) { P2=FFW[v]; delay(1); number++; v++; } if(v==8) {v=0;} } if(number==4096)//一圈需要4096个脉冲 { snum++;//记录旋转圈数 number=0; } if(snum==3)//旋转3圈则停下来 { direction=0; }3.4舵机模块本系统设计中使用的舵机型号为SG90,舵机的驱动原理很简单,舵机内部有一个周期恒为20ms的基准方波电路,其会一直产生周期为20ms,宽度为1.5ms的基准信号,所以要想控制舵机,首先就得产生一个周期为20ms的方波信号去和舵机内部方波匹配,匹配成功后,控制高电平的占空比,一般为0~2.5ms,由于舵机本身内部的方波的宽度为1.5ms,也就是当高电平占空比为1.5ms时外加信号与基准信号大小相同,舵机不发送偏转,当外加信号小于1.5ms时,舵机向左旋转,当外加信号大于1.5ms时,舵机向右转动,我在程序中使用定时器中断每隔0.5ms中断一次,40次就是20ms,从而产生一个20ms的周期,再用变量去控制高电平所占的占空比,控制在0~2.5ms之间,这样就可以通过控制变量去控制高电平的占空比了。当LD3320识别到开门的指令时会发送相应的讯息至STC89C52RC主控制单片机,主控制单片机在收到开门的讯息后会调用相应的舵机电机模块,PWM函数先产生一个20ms的周期信号,当t=1.5ms时,舵机转动0°,当t=0.5ms时,舵机转动0°,故可用舵机来模拟家居生活中的开关门动作。3.4.1舵机模块设计流程图图3.5舵机模块设计流程图3.4.2舵机模块代码sbitSG_PWM=P2^0;//PWM信号输出线unsignedcharcount=0;//记录中断次数unsignedcharPWM_count=1; //1--90度,2--45度,3--0度voidTimer_Init()//定时器初始化{TMOD=0X01;//T0定时方式1TH0=0xfe;TL0=0x33;//计数初值设置为0.5ms ET0=1;//允许定时器T0中断TR0=1;//启动T0EA=1;//打开总中断}voidTimer()interrupt1//1--定时器中断0{TR0=0;TH0=0xfe;TL0=0x33;//重新赋计数初值为0.5msif(count<=PWM_count)//用来输出高电平,也就是占空比{SG_PWM=1;}else{SG_PWM=0;}count++;if(count>=40)//产生周期为20ms的方波{count=0;//清零}TR0=1;}voidmain(){Timer_Init();//定时器初始化while(1){if(Key_1==0)//按键模拟语音识别口令{delay(10);EA=0;if(Key_1==0)//触发开门{PWM_count=1;//1是代表0.5ms,也就是向左旋转90度count=0;EA=1;}while(!Key_1);}if(Key_2==0){delay(10);EA=0;if(Key_2==0)//触发关门{PWM_count=3;//3代表1.5ms,此时舵机旋转角为0度count=0;EA=1;}while(!Key_2);}}}3.5LED模块对于本模块我使用了RGB三色灯来模拟日常生活中的灯,RGB为红绿蓝三色,红绿蓝是所有颜色组成的三原色,所以用红绿蓝可搭配出所有的颜色,RGB三色灯我初始化为三色相同亮度,后期如果有需求可使用PWM去改变R、G、B三路的信号占空比,从而可使得LED显示出不同的颜色,嵌入式的精髓就在于可玩性高,随时可按照需求进行修改。3.5.1LED模块设计流程图图3.6LED模块流程图3.5.2LED模块代码sbitRed=P1^0;//红灯sbitGreen=P1^1;//绿灯sbitBlue=P1^2;//蓝灯P1=0x00;//P1口在使用前初始化置零if(OpenLight=1)//如果识别指令开灯 { Red=1;//红灯亮 Green=1;//绿灯亮 Blue=1;//蓝灯亮 delay(10);//延时10ms } else//全置0,关灯 { Red=0; Green=0; Blue=0; }3.6本章小结本章主要介绍了本系统的软件逻辑设计,先是介绍了主程序的运行逻辑,本系统采用两块单片机,上位机主要负责语音识别分析,将语音识别结果对应相应的指令,再通过串口通信将相应的指令发送给下位机STC89C52RC主控芯片,主控芯片根据指令再去调用相应的I/O口,进行外围模块的控制。在设计语音识别的时候特别加入了两级口令,一级口令防止识别人们在日常的生活对话中提到相应的关键词从而触发了语音识别,这是一个安全措施,可以很好的防止误触发的可能,语音识别流程图在3.1章节可见。上位机和下位机进行的串口通信采用的波特率为9600bps,上位机和下位机通信的内容采用十六进制数作为识别码,比如0x00代表开灯指令,0x01代表关灯指令,由于LED模块的功率较小,所以就直接连接至单片机的I/O口上,不同的识别码可对应不同的功能需求,在产生PWM波时已经使用了定时器T0作为计时中断,产生一个周期为20ms的PWM方波,通过控制高电平的占空比从而控制舵机的旋转角,提高高电平的占空比的方式有两种。一种是增大分子,也就是高电平所占的时间,另一种是减小分母,也就是缩短周期,但是我们这里因为是控制舵机,舵机内部有一个周期为20ms的基准电路,所以只能采取第一种方式。在步进电机的控制方面采用的驱动方式是四相八拍的方式,有一个四相八拍脉冲表,正着来就是驱动电机正传,反着来就是反转。最后,每一个小章节都对应着一个模块的功能介绍,都有对应的流程图介绍,其次还将主要的代码逻辑贴出来。
4实物测试4.1整体实物图模拟语音识别智能家居控制系统的实物如下图4.1所示:(a)关门状态(b)开门状态图4.1智能家居模拟实物图4.2语音识别功能调试当一级口令识别成功后B-LD3320板载LED灯点亮,提示一级口令识别成功,方可进入二级口令识别,通过STC-ISP自带的串口助手调试功能可进行将B-LD3320通过USB转TTL连接至主机,与主机进行串口通信,图4.2为LD3320语音识别模块语音识别测试图。图4.2语音识别测试图4.3主控单片机功能调试4.3.1直流电机模块测试STC89C52RC通过直流电机驱动模块对直流电机进行控制,当识别口令为打开风扇时,单片机将IN1置为高电平,IN2置为低电平,直流电机带动风扇转动,识别口令为关闭风扇时,单片机将IN1和IN2都置为低电平,直流电机停止旋转。图4.3为直流电机功能测试。图4.3直流电机功能测试4.3.2步进电机模块测试STC89C52RC通过步进电机驱动模块对直流电机进行控制,当识别口令为打开窗帘时,主控单片机发送四相八拍正传表至步进电机,旋转3圈后停下,识别为关闭窗帘时,主控单片机发送四相八拍反转表至步进电机,同样也是旋转3圈后停下来,因为步进电机连接的是单片机的P2口,所以在使用之前还需要对P2口进行置零的操作,图4.4为步进电机功能测试。图4.4步进电机功能测试4.3.3舵机模块功能测试STC89C52RC通过PWM占空比对舵机进行控制,当识别口令为关门时,高电平所占时间为1.5ms,舵机旋转角度为0°,当识别口令为开门时,高电平所占时间为0.5ms,舵机旋转角度为-90°。图4.3.3为舵机开关门功能测试。(a)舵机旋转90°(b)舵机旋转0°图4.5舵机开关门功能测试4.3.4LED模块功能测试STC89C52RC通过控制IO口的高低电平对LED灯进行亮灭控制,当识别口令为开灯时,LED点亮,关灯时LED熄灭。图4.6为LED功能测试。图4.6LED功能测试4.4串口通信功能测试可在电脑上使用串口调试助手进行串口通信测试,图4.7为串口通信功能测试。图4.7串口通信功能测试4.5本章小结本章主要进行功能测试的介绍,先是对语音识别模块进行了功能测试,测试方法为先是通过主机的USB口连接LD3320语音识别模块,然后安装好相应的驱动程序之后,使用STC官方提供的STC-ISP烧录软件,该软件自带串口调试助手,选择正确的COM口后,选择和单片机程序中协定的波特率,此时的波特率特别的重要,波特率不一致的化会导致无法进行正常的串口通信,然后就可以进行语音识别模块的功能测试了,首先进行的是一级口令的测试,一级口令识别成功后,首先语音识别模块上有一个LED灯会亮起,提示使用者一级口令识别过程,同时会通过串口通信向主机发送“一级口令识别成功”的提示字样,然后方可进行二级控制口令的识别测试,我在代码中加入了识别成功的提示,比如开门口令识别成功后,语音识别模块也会通过串口向主机发送“开门成功”的提示语,并且上位机模块上的LED会熄灭。随后对主控单片机的控制功能进行了测试,每一个外围模块的驱动程序都需要进行测试,首先进行的是直流电机模块的功能测试,测试内容为是否能够正常正传,反转,以及下达停止的指令后是否能够及时停住,然后对步进电机模块进行了功能测试,我采用的步进电机驱动方式为四相八拍的驱动方式,首先向步进电机发送四相八拍正传表,设置每个脉冲之间的延时,从而通过每个脉冲的时间间隔控制步进电机的转速,本系统采用的时间间隔为1ms,然后通过计算得出当发送4096个脉冲之后,步进电机的外部齿轮会旋转一圈,我的设计逻辑为当发送4096个脉冲后记录旋转圈数,满3圈就跳出循环结束旋转,经测试正传功能正常,测试反转时需要向步进电机发送四相八拍反转表,控制原理与正传的控制原理相同。接下来测试的是SG90舵机模块,分别测试了向左旋转45°,向右旋转45°,向左旋转90°,向右旋转90°,以及恢复0°的功能测试,经测试功能均正常,最后测试的外围模块是LED模块,我选用的LED模块为RGB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026北京协和医院检验科王瑶团队合同制科研助理招聘1人备考题库及答案详解(必刷)
- 2026年悠芽时光托育园招聘备考题库含答案详解(能力提升)
- 2026河南郑州市城市照明和绿化景观服务中心公益性岗位招聘8人备考题库附答案详解(黄金题型)
- 2026海南三亚市全国选聘市投资促进局局长1人备考题库及答案详解(有一套)
- 2026河南郑州市妇联公益性岗位招聘2人备考题库及答案详解(必刷)
- 2026重庆市九龙坡区统计局统计调查公益性岗位招聘1人备考题库及答案详解(新)
- 2026浙江温州市瑞安市安保集团有限公司招聘市场化人员1人备考题库及答案详解(新)
- 2026四川凉山州会理市公安局考试招聘工作人员30人备考题库及答案详解(名师系列)
- 成都市实验小学青华分校招聘储备教师备考题库附答案详解(完整版)
- 2026福建省寿宁县教育局补充招聘紧缺急需及高层次教师5人备考题库附答案详解(研优卷)
- (2010版)中国高血压防治指南
- 护理查房早期人工流产的护理查房
- 《等腰三角形的判定与反证法》优课一等奖课件
- 广东省五年一贯制语文试卷
- 第4篇:中青班党性分析报告
- DOE实验设计培训教材完整
- GB/T 896-2020开口挡圈
- GB/T 17037.4-2003塑料热塑性塑料材料注塑试样的制备第4部分:模塑收缩率的测定
- GA/T 850-2021城市道路路内停车位设置规范
- 律师职业道德伦理专题课件
- 《推理能力培养》课件
评论
0/150
提交评论