【《基于STM单片机的智能家居无线语音控制系统设计》12000字】_第1页
【《基于STM单片机的智能家居无线语音控制系统设计》12000字】_第2页
【《基于STM单片机的智能家居无线语音控制系统设计》12000字】_第3页
【《基于STM单片机的智能家居无线语音控制系统设计》12000字】_第4页
【《基于STM单片机的智能家居无线语音控制系统设计》12000字】_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-PAGEII-基于STM单片机的智能家居无线语音控制系统设计摘要传统的家居控制系统都得通过繁琐的线路来进行布局,家居电器的控制还要通过实体按键来实现。随着语音识别以及物联网技术的发展,智能家居控制系统也普及到普通的用户,给用户提供了很多的便捷。因此,设计智能家居无线语音控制系统具有一定的意义。本文设计的系统分为主机和从机两部分,都以STM32F103C8T6为主要的微控制器,主机采用DHT11对室内的温度与湿度进行实时的检测,并将采集的数据通过OLED显示,当温湿度超限后,具有温湿度自动报警功能。主机还具有语音识别的功能,采用LD3320模块识别语音控制命令,经单片机处理后,通过nRF24L01无线通信模块传送到从机。从机通过nRF24L01模块接收主机的控制命令,根据指令控制家用电器的打开与关闭。本系统在设计的过程中考虑到了成本、能耗、维护等因素,具有布局简易、维护方便、可拓展性强还有灵活等很多优点。可以应用在居民家中、仓库以及教室等各种室内环境中,给人们的生活提供了很多便捷。关键词:STM32微控制器;DHT11温湿度传感器;nRF24L01;LD3320语音识别模块目录摘要 I1绪论 11.1设计背景 11.2国内外发展状况 21.3系统设计主要内容 22系统方案设计 42.1微处理器方案设计 42.2温湿度采集方案设计 52.3显示方案设计 52.4语音识别方案设计 62.5无线通信方案设计 63.1主机硬件电路设计 73.1.1单片机最小系统 83.1.2电源电路 93.1.3语音识别模块 103.1.4温湿度采集电路 113.1.5无线通信电路 123.1.6显示电路 133.1.7报警电路 143.1.8键盘电路 143.2从机硬件电路设计 153.2.1单片机最小系统 153.2.2电源电路 163.2.3无线通信电路 163.2.4继电器控制电路 174系统软件方案设计 184.1主机软件 184.1.1主程序流程图 184.1.2温湿度采集模块流程图 194.1.3OLED显示模块流程图 204.1.4无线通信模块流程图 214.1.5语音识别模块流程图 224.2从机软件 244.2.1主程序流程图 244.2.2无线通信模块流程图 245系统调试及现象 26结论 29参考文献 30PAGE2–PAGE1–1绪论设计背景近年来,随着信息技术的的快速发展,越来越多的人了解接触到语音识别、人工智能等技术,例如SIRI、小度还有小爱同学等智能AI,人们可以通过这些智能控制系统语音控制手机等电子产品上的功能。随着语音识别、人工智能和无线通信等技术的发展,这些技术也将会越来越多的应用在家居自动化上。近年来物联网技术发展很快,智能家居更是物联网技术运用最多的领域,而且智能家居是家居市场的发展趋势。智能家居语音无线控制系统也随之应运而生,通过这个系统,人们在想打开或关闭风扇、灯光或者空调等众多家用电器时不必再走到电器的前面去手动操作。在腾不出手,不方便操作,或者是不能自主进行操作时候,只需要通过向系统说话,就可以通过系统的语音识别功能来控制想要控制的电器,十分方便。本系统还能实时监测环境的温度和湿度,人们可以随时掌控了解环境的变化,然后快速作出调节,尽可能的减小因为环境因素对人们的生活、工作还有学习产生的影响。传统的家电控制系统都得通过繁琐的线路来进行布局,对家电的控制还要通过实体式按键来实现。但是智能家居无线语音控制系统则可以通过识别用户的语音指令来控制各种各样的家用电器的打开与关闭,其语音指令更是通过无线通信技术来传输,无需进行实体的线路连接,可放在室内的任何地方并且无需另搭接通信线路。智能家居无线语音控制系统还可以对室内环境中的温度与湿度进行24小时的不间断的监测,人们可以通过检测到的数据来判断其环境因素是否会对生活是否产生影响,并且当温度和湿度超出令人们生活感到不舒适的数值时系统作出产生响应,发生报警,提醒没有注意到的人们,当发现问题时可以马上进行调节,将温度和湿度控制在一个合适的数值范围内,这样人们就能生活在一个舒适的环境当中。通过本系统,人们可随时掌控室内环境的温度和湿度,打开或者关闭电器无需自己手动操作,只需要向系统发出语音指令就可以实现,节省了大量的时间还有人力,保证人们生活、工作和学习的高效率。1.2国内外发展状况语音识别技术并不是近年来才开始出现技术,实际上最初的语音识别技术已经在二十世纪五十年代已经冒出苗头。在1952年,世界上第一个语音识别系统被研制出来,不过只能识别十个英文的数字[11]。但是一直以在语音识别技术的发展缓慢,直到近年来才得到了快速的发展。目前,语音识别作为智能家居的一个重要技术,并且智能家居作为一个新兴的产业,正处于成长期当中,尚未形成市场消费观念。但是随着技术的发展还有市场的推广,越来越多的人会了解到,语音识别、智能家居有着相当好的发展前景,其市场潜力相当巨大。1994年,一些发达的欧洲国家,如美国等已经引进的完整的智能家居系统,而且在2000年的时候就有了智能住宅的针对性的研究主题,更是拥有了真正独立的智能控制开发公司。与国外相比,国内的对智能家居这一方面的研究起步要慢。近年来,国内有很多厂商已经已经涉足,但市场反响并没有很强烈,整个产业仍处于一个探索阶段,但参与到这个新兴产业中的厂商仍在增加。吕威发表了《基于语音呼叫无线监护系统的研究与设计》一文,文中提出了一个针对在老龄化社会对老年人的监护设计的系统,该系统通过单片机再结合外围电路实现语音识别和无线网络连接,还有以安卓系统平台设计护工端的人机交互界面,通过这个系统老人可以通过语音主动发出监护指令,帮助护工实时监护[4]。哈尔滨工业大学的英钊、买永锋和王艳敏三人共同发表了《智能家居控制系统发展展望》,文中简单阐述了智能语音家居的发展状况,组成及其功能,分析了当前的技术问题。最后分析了国内外市场的发展现状,在国内这种系统的前景十分光明[1]。1.3系统设计主要内容本文主要阐述了以STM32F103C8T6为核心控制器的智能家居无线语音控制系统。本系统具有语音识别功能,通过LD3320这个基于非特定人声语音识别技术的语音识/声控芯片来实现[5]。当识别到用户的语音命令之后,系统可控制家具电器的打开或关闭,其语音指令通过无线通信技术无线传输,这项技术由2.4G无线芯片nRF24L01来实现。通过选择合适的传感器,可以实时监控居民房屋内的温度与湿度的参数,并且将这些参数可视化,在液晶显示屏上显示出来,用户可以实时准确的获取室内的温度与湿度的数据,并且具有温湿度报警功能,随时能提醒用户。本系统可以真正的解放用户的双手,提供了极多的便捷。第一章主要介绍了本设计的设计背景,国内外的发展状况,以及系统设计的主要内容。第二章主要介绍了系统的整体方案设计,微处理器方案的选择,温湿度采集方案的选择,显示方案的选择,语音识别方案的选择,以及无线通信方案的选择。第三章描述了本系统的整体硬件设计,分为主机部分与从机部分。以及各部分中的各个模块的电路设计,其中还有单片机最小系统原理图,电源电路原理图,语音识别模块,温湿度采集电路原理图,显示电路原理图,无线通信电路原理图,电器控制电路原理图,报警电路原理图,以及键盘电路原理图。第四章介绍了本系统的软件设计,其中包含主机软件还有从机软件。第五章介绍了本系统的调试现象,调试过程中遇到的问题以及解决的办法。结论全面总结了本文中所阐述的系统。

2系统方案设计本文所描述的系统方案设计主要分为主控制器部分、语音识别部分、无线通信部分温湿度采集部分和显示部分。通过语音识别技术,当识别到人声时,通过无线通信技术发送指令,控制继电器的开关以打开或者关闭各种电器。系统还可以监测温湿度,通过传感器实现。可以将数据在屏幕上显示出来,具有报警的功能,其阈值可用键盘操作设置。系统方案总体框图如图2.1所示所示图2.1系统方案总体框图2.1微处理器方案设计微控制器是系统的核心,有两种方案,即51单片机和STM32单片机。51系列单片机是早期英特尔公司推出的,堪称一代经典,有着廉价,编程简单等优点。但是也有很多缺点,51系列的单片机运行速度相对要慢,保护能力差,其地址空间只有64KB,并且只有三个定时器和一个串口。STM32系列单片机的价格合理,耗电量不高,其内核的处理速度很快,极具性价比。拥有丰富、强大的外设,自带数模转换功能,以及内部集成IIC和SPI接口,还有常规的UART串口等。51系列单片机相对简单,控制比较方便,但是STM32系列单片机的速度更快,功能更强大,外设也是更加丰富。考虑到本系统的复杂程度,显然STM32系列单片机更适合本系统,具体采用STM32F103C8T6型号作为本系统的微控制器。2.2温湿度采集方案设计本系统所采集的数据是温度和湿度,检测温度和湿度需要使用传感器,在设计过程中考虑了DHT11和STH11两个方案。方案一DHT11是复合型传感器,可同时采集温度还有湿度,其输出的信号为数字信号,抗干扰能力和响应速度都很优秀、品质极高,其信号传输距离更是可以达到20M以上[6]。DHT11内部的湿敏部件采用的是湿敏电阻,成本很低。STH11也是集采集温度和湿度于一体的传感器芯片,其芯片的集成度很高,采用二线数字串行接口。尺寸小,可靠性也高,但是价格昂贵,因为SHT11内部的湿敏部件采用的是湿敏电容,成本高。考虑到经济实用性,本系统采用DHT11方案来采集温度和湿度。2.3显示方案设计系统需要将电器的运行状态、温度、湿度还有温湿度的报警阈值可视化,使用户能直接通过肉眼获取信息,所以需要使用显示屏将这些信息显示出来。显示方案有两种方案,即0.96寸OLED方案和LCD1602方案,这两种都是比较常用的显示屏。LCD1602能显示16×2个字符,即32个。LCD1602屏幕的液晶体积系,操作简易,但是使用温度范围很窄。当远距离看屏幕时就像一幅画,一旦近距离看时会发现有很多小方块小点点,这些小方块小点点称为像素点。像素点密度太低的话斜线会显得像台阶一样弯弯曲曲,很不清晰,像素点足够高或者眼睛离屏幕远的话就会觉得线条十分清晰柔和。LCD屏幕和OLED屏幕都遵循这样的规则,但是LCD屏幕有一个严重的缺点,LCD的成像原理是通过底层背光层发出白光,然后照射透过一层有红绿蓝三原色的薄膜,再通过控制背光层与薄膜之间的液晶来调节三原色的亮度比例,这样就能显示各种颜色。OLED几乎可以180°肉眼观看,功耗也低,OLED不像LCD需要背光。其对比度高,厚度小,响应迅速,并且使用温度很广。OLED屏幕的成像原理与LCD大不相同,OLED屏幕不需要有背光层的存在,因为它的像素点可以自己发光。在使用LCD屏幕的时候,其背光层会一直保持亮着,无法关闭,除非坏掉。就因为这样,OLED的所有像素点都是独立工作的,需要显示就亮起来,不需要就关闭,OLED的耗电量会比LCD低很多,而且OLED屏幕有多个控制指令,操作简单,功能多,可以将汉字、图案等显示出来。所以本系统的显示方案选择使用OLED。2.4语音识别方案设计本系统最重要的功能就是语音控制,要识别人声来控制继电器以打开或关闭各种电器,在设计过程中考虑了两种方案,即LD3320方案和ISD9160方案。LD3320是一颗可以识别语音实现语音控制的芯片,其提供的语音识别解决方案是真正的单芯片方案,而且识别时不针对指定的人[5]。ISD9160是一款基于CortexTM-M0的系统单芯片,为需要语音识别应用提供的丰富又廉价的解决方案。对比ISD9160,LD3320的识别距离更远,唤醒率更高,消除回声和噪音的能力更强,并且其误唤率更低,故本系统采用LD3320来提供语音识别功能。2.5无线通信方案设计单片机之间的通信有两种方式,有线和无线,因为本设计需要远程控制电器的打开或关闭,无线通信更适合本设计。而无线通信的实现方法也有很多种,考虑了nRF24L01方案、HX1838方案以及蓝牙方案。HX1838基于远程遥控技术,红外遥控主要是通过一端发射光波,另一端接收来实现,但是红外遥控的红外光波容易被物体遮挡,其信号没有穿透能力,一旦被遮挡就会导致通信失败。蓝牙是一项十分成熟的无线通信方案,被大量应用在手机、耳机、鼠标等各种电子产品上,但是只能进行一对一的通信。而本设计需要控制多路电器,需要进行一对多的通信,显然蓝牙方案不适合本设计。nRF24L01是一种单片机无线收发芯片,其工作频率在2.4GHz~2.5GHz之间。其耗电量低,市面上大部分的单片机几乎都能使用这个芯片,有无线数据通信需求的开发者在开发者可以使用这个芯片,更重要的是nRF24L01可以实现一对多通信,有126和通信通道和6个数据通道,并且兼容性强,这样后期维护时不必使用指定的信号。所以本设计的无线通信方案选择nRF24L01。

3系统硬件电路设计本系统的硬件电路主要分为两个部分,主机部分以及从机部分。主机有单片机最小系统,电源电路,语音识别电路,无线通信电路,温度和湿度采集电路,键盘电路,显示电路还有报警电路。具有识别语音并进行控制的功能,还可以进行无线通信,可监测环境的温度和湿度,可以在显示屏幕上显示数据,具有报警功能还能使用键盘设置数据。从机有单片机最小系统,电源电路,无线通信电路还有继电器控制电路。具有无线通信功能,通过与主机无线通信,接收来自主机的指令,控制电器的打开与关闭,从而间接远程语音控制电器的开关。3.1主机硬件电路设计主机部分主要由电源电路、单片机最小系统、语音识别电路、温湿度采集电路、无线通信电路、液晶显示电路以及键盘电路组成。DHT11温湿度采集电路可以采集到温度与湿度的数据,LD3320语音识别电路可以识别用户的语音信息,nRF24L01无线通信电路可实现无线通信功能,OLED液晶显示电路可将温湿度等信息显示出来将其可视化,报警电路可以在温湿度超出阈值时报警,键盘电路可以修改数值。主机硬件电路总体电路框图如图3.1所示:图3.1主机硬件电路总体电路框图3.1.1单片机最小系统上文提到,本系统采用性能更好的STM32单片机,具体型号为STM32F103C8T6。该处理器一共有48个引脚,包括37个输入/输出口,常用的通信接口IIC和SPI各两组等。单片机最小系统电路中必须要有复位电路还有晶振电路,这两个电路是单片机最小系统运行的必备条件,没有的话单片机就不能正常运行。单片机最小系统原理图如图3.2所示:图3.2单片机最小系统原理图复位的方式是按键复位,NRST引脚连接轻触按键,按键SW处于松开状态时向NRST引脚输入高电平,电容进行C2充电。按下按键SW,C2持续放电,此时输入NRST电平由高转到在给NRST引脚输入低电平,就可以让单片机系统复位。本系统的时钟电路有两路,通过外接两个石英晶体振荡器电路,一个为高速的8MHz晶振,还有一个为低速的32.768kHz晶振。两路晶振都各自都需要加入两个匹配电容才能保证正常工作,Y1晶振电路还需并联一个反馈电阻,保证Y1能更加稳定。3.3V电源和GND之间并联C3、C4、C10、C11四个电容,可对电源进行滤波。通过引出单片机的SWDIO和SWDCLK加上电源和地组成SWD接口,再引出单片机的PA11和PA12加上电源和地组成USB接口,方便调试,通过接口可向单片机内烧录程序。BOOT1和BOOT0是STM32单片机的启动模式选择引脚,给BOOT0低电平时是启动主闪存存储器,这时就可以通过SWD接口烧录程序。3.1.2电源电路电源电路是单片机系统的关键部分。本系统是一个可以直接安装在居民家中、教室、办公室或者仓库中的系统,我国家用电压一般为220V的交流电,但本系统需要的工作电压为5V的直流电压。在电源电路中,220V交流电接入时经过变压器降压降为12V左右的交流电,再经过由四个二极管组成的整流桥电路整流,将交流电转换为直流电[2]。再加入一个2200uF的电极电容还有一个100nF的小容量电容,一个负责滤低频,另一个负责率高频,将整流后得到的直流电进行滤波处理。经过处理的直流电输入到三端稳压器LM7805的输入端,其GND接地,输出端再连接一个100uF电容还有100nF的电容,最后就能输出5V的直流电压。但是光有5V供电电压还不够,因为STM32F103C8T6单片机最小系统还有DHT11等芯片的供电电压是3.3V,所以再加入一个RT91393降压稳压电路,将5V直流电压降到3.3V直流电压。电源电路可以同时转化输出5V和3.3V的直流电压,满足整个系统内各个芯片的需求,保证系统正常运行。电源电路原理图如图3.3所示:图3.3电源电路原理图3.1.3语音识别模块LD3320有三路电源输入,可以统一向这三路电源输入3.3v的工作电压,这样可以简化电路设计。通过AMS1117降压稳压电路,将5V电压降到3.3V,给LD3320供电。LD3320的最低工作电压是3V,若供电电压达不到要求,LD3320无法启动。LD3320语音识别模块内还有STC11单片机最小系统,采用22.1184MHz晶振提供时钟信号,复位电路上电复位方式。LD3320语音识别芯片通过P0~P7的8位的并行串口与STC11连接通信。STC11单片机中的RXD、TXD接口与主控制器STM32的PA9、PA10也就是TX和RX连接,可进行串口通信。LD3320的MD引脚与STC11的INT2引脚连接,信号为低电平时使用并行工作方式,信号为高电平时使用串行SPI工作方式。进行语音识别需要先让模块采集到音频,所以再接入咪头,声音信号经过咪头采集后输入到LD3320的MICP和MICN接口。LD3320的INTB与STC11的外部中断引脚P3.2/INT0连接,当有声音的信号时会发生中断,这样可以STC11就可以判断是否识别成功。语音识别模块原理图如图3.4所示:图3.4语音识别模块原理图3.1.4温湿度采集电路本系统的温湿度采集电路主要由DHT11传感器组成,这是一个复合型的芯片,可以同时采集温度和湿度,不需要两个单独的电路采集温度和湿度这两个数据。DHT11的连接电路比较简单,只有四个引脚。引脚1为VCC,与3.3V直流电源连接;引脚2为DATA,是单总线输入输出口,连接单片机的I/O口即可,在本系统中与单片机的PA6连接,并且需要再加一个上拉电阻;引脚3为空引脚,不进行任何连接;引脚4为GND,接地。温湿度采集原理图如图3.5所示:图3.5温湿度采集原理图3.1.5无线通信电路本系统的无线通信由nRF24L01来实现,该模块的通信方式为“SPI”,但是连接到单片机对应的引脚不一定也要SPI接口,普通的输入输出口也可以实现SPI通信,只需要用软件进行模拟。芯片需要外接时钟电路才能工作,采用16MHz晶振,需加入两个22pF的小电容再并联一个1M欧姆的电阻,保证晶振正常工作。芯片有三路电源,均3.3V直流电源,再并联一个10nF和一个1nF的电容进行稳压。DVDD为电源输出口,串联一个33nF电容接地。ANT1与ANT2为芯片的天线接口,连接天线电路,VDD_PA为芯片内部功率放大器,输出电源,与天线电路连接。引脚1到引脚4为NRF24L01数字输入口,引脚5和引脚6为数字输出口。CE为模式选择口,与芯片内置的CONFIG寄存器共同决定芯片的工作状态,连接单片机PA5;CSN是片选线,若单片机的一个组SPI接口上连接多个SPI从机时可选择特定的从机通信,此处置低电平芯片就能工作;SCK为SPI时钟线,是SPI通信的必要条件,由主机发出,连接单片机PA4;MOSI和MISO是芯片的数据输入输出口,分别连接单片机的PA1和PA3。IRQ是中断引脚,由NRF24L01发出,连接单片机的PA2。无线通信电路原理图如图3.6所示:图3.6无线通信电路原理图3.1.6显示电路显示屏幕采用0.96寸的OLED屏幕,该型号的显示模块有8个引脚,内部集成中文字库芯片,采用SPI通信接口,OLED与字库芯片共用SPI接口。引脚1为GND,连接地,引脚2为VCC,连接3.3V直流电源,VCC和GND之间串联两个电容以稳压;引脚3为CLK,为SPI时钟线,OLED屏幕与字库芯片共用,与单片机的PB9连接,单片机作为主机由主机发出时钟信号。引脚4为MOSI,是SPI数据线,OLED与字库芯片共用,与单片机的PB8连接,单片机作为主机由主机向从机发送数据。引脚5为DC,为数据/命令选择脚,与单片机的PB7连接。引脚6为CS1,与引脚8的CS2都是片选接口,分别连接单片机的PA6和PA4,。向引脚6输入低电平时单片机与OLED进行SPI通信,向引脚8输入低电平时单片机与字库芯片进行SPI通信。引脚7为FSO,为字库数据输出管脚,与单片机的PB5连接。显示电路原理图如图3.7所示:图3.7显示电路原理图3.1.7报警电路报警电路由一路蜂鸣器电路还有两路发光二极管电路组成。本系统会采集温湿度数据并在显示出来,当超出预先设定的阈值是会触发报警,以声光的形式来提醒用户。报警电路原理图如图3.8所示:图3.8报警电路原理图3.1.8键盘电路键盘电路由五个轻触开关组成,S1与单片机的PA7连接,S2与单片机的PB0连接,S3与单片机的PB1连接,S4与单片机的PB10连接,S5与单片机的PB11连接。用户可以设定温湿度的报警阈值,S5、S4与温度报警阈值有关,按下S5加一,S4减一;S3、S2与湿度报警阈值有关,按下S3加一,S2减一。S1则可以控制是否打开蜂鸣器,在报警时觉得吵可以按下关闭,再次按下能重新打开。键盘电路原理图如图3.9所示:图3.9键盘电路原理图3.2从机硬件电路设计从机部分由单片机最小系统、电源电路、nRF24L01无线通信电路和继电器控制电路组成。从机硬件电路总体框图如图3.10所示:图3.10从机硬件电路总体框图3.2.1单片机最小系统从机的单片机最小系统设计也与主机一致,主控制器采用STM32F103C8T6,复位电路采用按键复位。时钟电路采用两路晶振电路,一个8MHz高速晶振,还有一个32.768MHz低速晶振。单片机最小系统原理图如图3.11所示图3.11单片机最小系统原理图3.2.2电源电路从机的电源电路与主机的电源电路采用相同的设计,将220V交流电转换成5V的直流电,再转换为3.3V直流电,可同时输出5V和3.3V直流电给系统供电。3.2.3无线通信电路从机的无线通信电路与主机的无线通信电路设计一致,都采用NRF24L01无线通信芯片,基于NRF24L01无线芯片,主机和从机可以建立起无线通信。无线通信电路原理图如图3.12所示图3.12无线通信电路原理图3.2.4继电器控制电路相应的从机的收到来自主机的指令后会控制电器的开关,所以设计一个继电器电路,其作用是可根据单片机发出的小电流控制大电流开关,进而控制电器。引脚1是常闭端口,继电器吸和前与引脚2短接。引脚2是公共端,引脚3是常闭端。当单片机P12向继电器电路输入高电平时,由于电磁效应使K1开关吸和,将引脚2和引脚3连接,形成电流环路;低电平时松开,引脚1和引脚2继续短接。电器通过连接引脚2和引脚3,可根据单片机的信号打开或者关闭。继电器控制电路原理图如图3.13所示:图3.13继电器控制电路原理图4系统软件方案设计本系统的软件设计主要分为两个部分,主机部分和从机部分。主机需要利用LD3320语音识别模块识别语音指令,利用nRF24L01无线通信模块与从机进行无线通信。利用DHT11温湿度传感器采集环境的温度和湿度并将其在OLED显示屏上显示出来[3]。当温湿度超出阈值时驱动蜂鸣器和发光二极管进行报警,阈值可通过键盘设置,从机利用nRF24L01无线通信模块与主机进行无线通信,接收来自主机的指令,根据指令向继电器发送高低电平以打开或关闭继电器的开关,从而完成对家用电器的语音控制。人类有语言,控制单片机也需要语言,主要是C语言和汇编语言。汇编语言是低级语言,C语言的可编程性更佳,容易移植,所以选用C语言作为本系统的软件设计语言,其程序编程在Keil5上进行编写。4.1主机软件4.1.1主程序流程图本系统的主机软件设计主要是由LD3320语音识别程序设计、nRF24L01无线通信程序设计、温湿度采集程序设计和OLED显示程序设计组成[10]。首先要先将整个系统初始化,先将RCC时钟打开,然后才能对对应的I/O进行配置,根据模块的需求来进行配置,OLED显示模块还有nRF24L01都是采用SPI通信协议,要配置好与其对应的SPI接口。LD3320语音识别模块中的STC11需要与住控制器STM32F103C8T6进行串口通信,要配置好对应TX和RX接口,将TX接口设置为推挽输出,将RX接口设置为浮空输入。当LD3320语音识别模块识别到语音时,判断是哪个关键词,识别到小爱以及口令时候开始执行识别控制口令,识别到“开灯”时LigFlag=1,“关灯”时LigFlag=0;“打开电机”时FanFlag=1,“关闭电机”时FanFlag=0。然后将数据放入TX_Data数组中,通过NRF24L01无线通信模块发送给从机,从机可根据指令控制进行对应的操作控制LED灯或者电机。利用DHT11温湿度传感器采集温度和湿度,先定义温湿度的报警阈值,AlarmTemp=0和AlarmTemp=0。其温度和湿度的报警阈值可以自行设置,通过判断键盘是否被按下来控制阈值的增加或减小。一共五个按键,按下S5,KeyVal=“1”;按下S4,KeyVal=“2”;按下S3时,KeyVal=“3”;按下S2时KeyVal=“4”;按下S1时,KeyVel=“E”。通过判断KeyVal的值,“1”温度阈值+1;“2”温度阈值-1;“3”湿度阈值+1;“4”湿度阈值-1;“E”时可控制是否打开蜂鸣器功能,当发生报警时觉得太吵就可以使用此功能。然后判断温度和湿度是否超出阈值,温度超出时LED0=1,BUZZER=1,D2发光二极管亮,蜂鸣器响;湿度超出时LED1=1,BUZZER=1,D1发光二极管灯亮,蜂鸣器响。最后将温湿度、报警阈值和电器状态显示在OLED屏幕上。主机主程序流程图如图4.1所示:图4.1主机主程序流程图4.1.2温湿度采集模块流程图本系统需采集温度和湿度,由DHT11进行监测,这款传感器输出的信号为数字信号,可以省去数模转换。DHT11只有一根数据线,所以控制DHT11温湿度传感器,读取到温度和湿度的数据,需要特定的控制时序。其时序主要由三部分组成:第一个是触发DHT11进行数据采集;第二个是读取到数字1;第三个是读取到数据0。触发DHT11进行数据采集,首先要先给DHT11一个复位信号,收到信号DHT11开始采集数据,并给单片机发送一个响应信号,提示单片机准备接受数据。DHT11发送的每一bit数据都是先置低电平,然后置高电平,通过对比高电平的持续时间可以分辨01数据信号。持续时间70微秒为1,26微秒~28微秒为0。向单片机发送的数据由高到低,高位先出,一共40bit,五个字节。前四个是温湿度的数据,最后第五个字节为检验数据,其作用是检验数据是否正确,通过与前四个字节相加的值的末八位比较,相等说明数据正确,不等则相反。数据检验正确后将温度存放在DTemp,将湿度存放在DHumi。温湿度采集程序流程图如图4.2所示:图4.2温湿度采集程序流程图4.1.3OLED显示模块流程图本系统的显示功能通过OLED屏幕实现,选用的尺寸为0.96寸。该模块采用SPI通信协议,单片机需要先将对应的I/O口进行设置才可以进行通信。先将OLED初始化,通过向OLED写入命令可以对比度等设置配置好,然后再设置数据显示在几列几行的位置,这个点是显示的起始位置,数据从起始位置开始显示。通过调用DTemp和DHumi的值,温湿度数据显示在OLED屏幕上,还可以显示温湿度的报警阈值AlarmTemp和AlarmTemp。屏幕还能显示当前电器的状态,判断LigFlag和FanFlag可得知小灯和电机是打开还是关闭。OLED显示程序流程图如图4.3所示:图4.3OLED显示程序流程图4.1.4无线通信模块流程图本系统的无线通信功能由nRF24L01来实现。该芯片与单片机的通信采用常见的SPI协议,所以在初始化时要先设置好微控制器的输入和输出端口以及SPI通信接口,设置好之后微控制器STM32F103C8T6基本就可以与nRF24L01进行通信了。本系统要实现语音控制多路电器,所以主机要先于从机进行无线通信,而NRF24L01无线通信模块之间实现通信需要几个条件[7]。第一个是频道要设置为一样,通过向芯片内部地址为0x05的RF_CH寄存器写入40将通信频道设置为40;第二个地址相同,有五个八位地址,通过向地址为0x10的TX_ADDR寄存器写入五个地址,0x34,0x43,0x10,0x10,0x01;第三个是每次发送和接收数据的宽度相同,最大为32个字节,通过向地址为0x11的RX_PW_P0寄存器写入32,将数据宽度设置为32。主机端作为发送端,向从机发送消息前要将NRF24L01设置为发送模式,通过写字节函数配置CONFIG寄存器,将PWR_UP与PRIM_RX设置为1,以及向芯片的CE输入引脚输入高电平,就可设置为发射模式,即0x0e。将TX_Data数组中的数据发送给从机。无线通信程序流程图如图4.4所示:图4.4无线通信程序流程图4.1.5语音识别模块流程图本设计的语音识别功能由LD3320模块来实现,该模块单独由一个STC11单片机,LD3320最多可以保存50个关键词句,每一个关键句都会对应一个识别码,如表4.1所示:表4.1关键词对应表编号关键句识别码指令1xiaoaiCODE_CMD0小爱2kaidengCODE_CMD1开灯3guandengCODE_CMD2关灯4dakaidianjiCODE_CMD3打开电机5guanbidianjiCODE_CMD4关闭电机向LD3320模块添加关键词需要将关键词添加到FIFO缓存器,通过0x37寄存器写入04H,就可以向芯片添加关键词。其识别条目必须要用汉语拼音,并且是国际普通话,使用小写字母表示,每个汉字拼音之间必须要有一个空格字符。识别规则是每个识别条目对应一个识别码,可以是连续的或非连续的,根据个人意愿来选择。通过宏定义定义每个关键句的识别码,编号1到编号5的识别码数值依次为0xB0,、0xB1、0xB2、0xB3、0xB4数值在00H到FFH之间,即小于256,若两个关键词的识别码一样的话最后会返回相同的结果。向0x37寄存器写入06H,就会开始语音识别。识别到声音后会产生中断,然后BA寄存器里会有数个识别结果,只需读取C5寄存器就可得到最佳识别结果。识别成功后后需要向主机发送结果,所以本模块的STC11需要与STM32F103C8T6进行串口通信,所以要将RXD和TXD进行串口初始化。如图语音识别程序流程图如图4.5所示:图4.5语音识别程序流程图4.2从机软件4.2.1主程序流程图从机负责控制打开或关闭继电器以控制家用电器的开关,而进行什么操作都需要先收到主机的指令。当收到的信息为LigFlag=0时,操作继电器以关灯;收到LigFlag=1时,操作继电器以开灯;收到FanFlag=0时,操作继电器关闭小风扇;收到FanFlag=1时,操作继电器打开小风扇。本系统设计控制两路电器,点灯板只对LigFlag信号作出反应,并且只能控制LED灯的打开或者关闭,对FanFlag信号不进行任何操作;电机板则只对FanFlag信号作出反应,只能控制风扇的打开或者关闭,对LigFlag信号不进行任何操作。从机主程序流程图如图4.6所示:图4.6机主程序流程图4.2.2无线通信模块流程图从机的nRF24L01无线通信模块的软件设计基本与主机的一样,其通信频道,地址,以及接受数据的宽度要设置成一致的。并且从机只负责接收来自主机的数据,并且要将芯片设置为接收模式。将CONFIG寄存器的PWR_UP和PRIM_RX都置1,即0x0f命令,以及向芯片CE端口输入高电平,就能将NRF24L01设置为接收模式。无线通信程序流程图如图4.7所示:图4.7无线通信程序流程图

5系统调试及现象本系统在硬件电路和软件设计完成后,制作PCB板并将所有模块焊上,共分为三个板。一个主机板,和两个从机板。主机板通电后打开电源开关再按一下复位键,可以看到,OLED可正常显示,并且此时系统检测到的温度为25°C,湿度为67%RH,设定的报警温度是25°C,报警湿度是65%。再用检测仪器检测到的温度为25°C,湿度为69%RH,可见DHT11温湿度传感器检测到的数值在正常误差以内,本系统的温湿度采集功能以及OLED屏幕正常工作。其通电后的主机总体外观图5.1图所示。图5.1通电后的主机总体外观还有两个从机板,一个控制小灯从机板还有几个风扇从机板。使用语音识别无线控制电器的开关需要先向主机说出一级口令“小爱”,唤醒语音识别模块后再说“开灯”,此时小灯从机板的LED灯打开。小灯从机打开小灯时如图5.2所示:图5.2小灯从机打开小灯进行同样的操作,先说“小爱”,再说“打开电机”,此时风扇从机板的小风扇打开。风扇从机板打开风扇时如图5.3所示:图5.3风扇从机板打开风扇操作键盘,可以正常设置文湿度阈值,此时的温度报警值为26°C,湿度报警值为79%。向传感器呼气,提高湿度,此时湿度高于阈值产生报警,D1灯亮,蜂鸣器响,报警功能正常,如图5.4所示。图5.4报警状态系统在不同时段、不同地点测试了温湿度值与检测器检测到的数值对比,误差在正常范围内,如表5.1所示。系统测试温度值系统测试湿度值检测器温度值检测器湿度值20°C65%RH19°C67%RH18°C70%RH20°C69%RH21°C71%RH20°C69%RH15°C64%RH15°C65%RH17°C67%RH19°C66%RH

结论历经重重困难,智能家居无线语音控制系统的设计终于实现,圆满完成。本系统基于S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论