APP下载

STM32的语音识别智能家居

2022-07-23广州工商学院工学院范仰才袁晓明

电子世界 2022年1期

广州工商学院工学院 范仰才 袁晓明

设计了一款以STM32单片机作微处理器,支持语音、蓝牙和红外遥控三种方式操控的智能家居系统。利用温湿度和烟雾传感器感知室内信息,门禁识别和超声波测距感知门口信息,经由主控制器对参数进行处理以达到控制灯、风扇(空调)、窗帘及门等的开关,并利用OLED来显示当前的温湿度和安防状态;系统的程序于KEIL5软件上开发完成。经测试,系统实现了预定功能,操作简单,适用性强。

在现代通讯和物联网技术的驱使下,市场上智能家居产品种类繁多,其控制方式也朝多元化发展。现代智能家居控制方式可以利用无线通信技术,对家电设备进行远程操控,无线通信的广泛使用,令人类摆脱了以往单一、繁琐的控制方式。近年来,语音识别技术在智能家居控制的应用逐渐流行,语音识别技术的应用在改变我们生活习惯的同时,也为我们营造更便捷的居住环境和提升家居系统的舒适性、智能性。

本文旨在为用户设计一款操作简单,可控制多个家电设备的低成本控制系统,实现控制系统的智能化和便捷化。

1 系统总体设计方案

本系统以STM32单片机为主微控制器。设计功能包括:语音识别模块检测语音指令,或红外遥控器通过按键发送信息,微控制器处理后将作出相应的响应,实现对居家电器、窗帘及门等的控制;门禁模块实现刷卡进门,识别到陌生卡时蜂鸣器会长鸣;超声波模块测量门口是否有人经过及人离探测器的距离;环境检测模块检测室内温湿度及可燃或有害气体是否超标,检测的信息可以在显示屏上显示出来,当室内温湿度达到设置的上限时,系统会响铃报警或启动室内空调。为防止语音识别出现故障,系统增加了蓝牙模块,可实现无线远程控制,蓝牙也可以修改开发板的系统时间,设置闹钟,设置超声波检测距离,录入门禁卡信息等。系统总设计框图如图1所示。

图1 系统总设计框图

2 系统硬件设计

本系统采用主流芯片增强型中的STM32F407ZET6,是一款采用ARM32位Cortex-M4内核的微控制器,具有高性能、高集成度、低功耗、低成本、丰富的外设资源等特点。芯片内部采用哈佛结构,数据总线和指令总线分开工作,与冯诺依曼结构相比工作速度更快;芯片内置512KB的FLASH和192KB的SRAM,外围有温度传感器串口和电机控制串口,选择该芯片作为主控制器能满足本控制系统的设计要求。

2.1 语音识别模块

语音识别模块选用LD3320,它集成了一些外部电路和语音处理器,包括ADC、DAC、MIC等,不需要任何的辅助芯片如闪存、只读存储器、加密芯片等,也不需要提前录入语音,直接可以实现语音识别和人机交互,而识别的关键词语列表可以由用户自己设定。其工作流程采用轮询形式进行识别,当MIC识别到声音信号时,单片机产生中断信号,LD3320通过串口接受数据,经频谱分析和特征提取,进行关键词列表配对,识别成功后返还识别码,再向家居设备发送指令。

2.2 环境检测模块

温湿度传感器选用DHT11数字温湿度传感器,它采用数字采集技术和温湿度传感技术。工作原理:根据信号输出量计算出温度和湿度值,环境湿度发生改变时,湿度传感器通过改变湿敏电容介电常数来改变其电容值。该传感器具有响应速度快、抗干扰能力强、传输距离远等优点,适合用于室内温湿度的测量。

烟雾传感器选用MQ-2气体传感器,该传感器的电导率会随空气中可燃气体浓度的增加而增大,并将电导率的变化转换成对应的电信号输出。它可以检测多种可燃性气体,特别适用于家居环境中一氧化碳、煤气等的泄漏、烟雾的检测等。

2.3 超声波模块

选用HC-SR04超声波测距模块,它可以测量2cm-400cm的非接触式距离,测量精度可达3mm;模块包括超声波发射器、接收器与控制电路。

2.4 门禁识别模块

本系统采用RFID-RC522来实现门禁安防,通过在存储器上读写数据,实现录入卡和识别卡,进而启动电机(模拟防盗门的开闭)。RC522是应用于非接触式通信中的读写卡芯片,它使用了先进的调制和解调技术,与主机间的通信采用SPI模式,通信速度极快。

2.5 电机驱动模块

选用L9110直流电机驱动模块驱动直流电机,实现对居家电器如风扇的开、关和调速的操作。一个L9110模块可驱动两个直流电机,可实现对两个家用电器的控制。利用步进电机的正反转来模拟门和窗帘的开和关,所用的步进电机是四相五线制,它可以将电脉冲信号转化为角位移来驱动设备,改变脉冲的顺序可以方便地改变电动机的旋转方向。

3 系统软件设计

3.1 系统主程序流程

本系统采用KEIL5软件进行编程,具有界面和使用简单的特点。图2为系统软件控制流程图。基于STM32语音控制的编程设计主要分为四部分:语音识别控制、蓝牙控制、红外遥控和智能安防部分。各模块将收到的信息或模块发送的信息传送给MCU,MCU对这些信息进行处理,并控制系统对各模块作出相应的操作。

图2 系统软件控制流程图

3.2 各控制模块程序

语音识别程序:每次的语音输入需对设备进行唤醒,唤醒先使用一级口令,成功唤醒时,LD3320的指示灯(红灯)亮起,唤醒后使用二级口令进行下一步指令识别操作,当二级口令配对成功后,相应的设备会打开。程序设计是对语音识别代码进行编写,通过while循环来控制程序,switch检测ASR状态,如果识别正在进行或LD3320内部出现错误都会退出识别流程,继续等待下一个指令;如果指令识别有结果,继续执行用户函数,并对程序状态初始化。

蓝牙控制:无线控制采用HC-06蓝牙控制,当通过APP下达指令时,HC-06接受数据,对应的引脚会有高低电平的变化,通过电平的变化实现对设备的控制。程序设计的实现通过if-else if函数判断按键的输入值,并通过中断服务函数的接收数据判断指令。

红外控制:红外接收头接收到遥控器发出的指令,并把数据进行拆分,识别出指令,开启相应的电机或LED灯。

温湿度模块:DHT11完整的数据输出为40字节,单片机完成下达开始信号指令时,DHT11的工作模式会发生转变,此时由休眠模式转换为高速模式。而当单片机开始信号结束时,DHT11做出响应,将40字节数据送出,并触发DHT11完成一次环境信息数据的采集。

烟雾传感器模块:若传感器的引脚电压值超过设定的警报值,蓝牙会发送警报到手机。

门禁模块:将门禁卡靠近识别模块,识别成功后,步进电机会转动一圈,表示门已打开,若识别的是陌生卡,则蜂鸣器会长鸣。

4 系统实现与功能测试

各部分编程完成后,利用JLink下载器将代码烧录到STM32上。给系统上电,然后对各模块的功能进行测试。语音输入开灯、关灯,开风扇、关风扇,开门、关门等指令后(每个指令各进行了10次测试),结果表明LD3320识别率在95%以上;超声波模块能实现防盗监控;温湿度传感器、可燃气体传感器、RFID读写卡、OLED、蓝牙模块、红外接收头、步进电机和直流电机都工作正常;当系统获取相应信息后,对应的模块能做出正确的反应,设计和测试成功。

基于STM32的语音识别智能家居控制器实现了语音控制、蓝牙远程和红外遥控三种方式对室内窗帘、灯光、风扇以及温湿度信息采集、火灾报警、门禁控制等智能化控制。设计思路简单,功能较全面,操作简单,成本低廉,有一定的实用推广价值。