基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+

## **基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块(阿里云 或ONENET或局域网)+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+手机APP)**

本文采用LD3320语音识别芯片+ESP8266 WIFI模块+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+手机APP制作的基于 STM32 提出一种语音识别智能家居控制系统,实现对家居的控制。该设计不需要借助互联网、移动设备,即可在无负担的情况下通过语音操控家中的各种常用家居,不仅能够为家庭安全提供全面保障,还能为残障人士提供方便。


## **引言**
  随着生活水平的不断提高,人们对家庭的家居需求提出了更高的要求,一个安全舒适的居住环境已经成为很多人的追求。近年来,智能家居控制系统的研究较为热门,多数是基于物联网技术实现的,对网络的要求较高,再加上家居控制系统的成本较大,导致智能家居并未广泛普及。而语音识别系统是将声学、语音学和语言学完美结合起来,使得目前基于语音智能识别的技术逐渐发展成为人工智能的关键技术。特别是语音识别,让智能家居控制系统的应用范围得到拓展,且能够很好地应用于普通家庭的智能家居控制系统设计中,使智能家居真正服务于人类成为可能。
**1.1 LD3320 芯片**
LD3320 芯片是一个专用于语音识别的芯片,该芯片在设计时注重高效与节能,不需要外接任何辅助芯片,直接继承了语音识别处理模块和外部电路,如麦克风接口、语音输出接口、AD/DA 转换器等,使其可以实现语音识别、声音控制及人机对话等功能。该芯片的主要特征如下。第一,能完成非特定人的语音识别命令,不需要录音,用户只需要使用相同的语言就可以识别,且识别效率相比之前大大提高,高达 95%。第二,识别语句是动态可编辑的,在设计时可以根据具体情况考虑多种可能,如设置 50 条识别语句作为语音命令的候选语音,以提高系统的整体水平。但设置时要注意识别语句的长度,如果是汉字,则不能超过 10 个,设置拼音则不能超过 79 个。第三,支持串行和并行接口,也可设置为休眠状态,方便激活 [1]。其实物如下

349b51a9804f47158238eb636fd945cf.png#pic_center**1.2 1.2 OLED显示电路**
OLED 屏幕作为一种新型的显示技术,其自身可以发光,亮度,对比度高,功耗低,在当下备受追捧。而在我们正常的显示调整参数过程中,我们越来越多的使用这种屏幕。我们使用的一般是分辨率为 128×64 ,屏幕尺寸为 0.96 寸。由于其较小的尺寸和比较高的分辨率,让它有着很好的显示效果和便携性。目前我们经常使用的 OLED 屏幕一般有两种接口,IIC 或者 SPI ,两者使用的通信协议稍有不同,这里以 SPI 协议的 OLED 屏幕为例,带来它的使用方法。1e87b2fbd0a0427dbf7aec3987d80c57.png#pic_center

 956e21e328984d528d161dd8703e22b7.png#pic_center


**1.3 DHT11温湿度采集电路**

DHT11 是一款湿温度一体化的数字传感器。该传感器包括一个电阻式测湿元件和一个 NTC测温元件,并与一个高性能 8 位单片机相连接。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。DHT11 与单片机之间能采用简单的单总线进行通信,仅仅需要一个 I/O 口。传感器内部湿度和温度数据 40Bit 的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。DHT11 功耗很低,5V 电源电压下,工作平均最大电流 0.5mA。
DHT11 的技术参数如下:
⚫ 工作电压范围:3.3V-5.5V
⚫ 工作电流 :平均 0.5mA
⚫ 输出:单总线数字信号
⚫ 测量范围:湿度 20~90%RH,温度 0~50℃
⚫ 精度 :湿度±5%,温度±2℃
⚫ 分辨率 :湿度 1%,温度 1℃
b167c237ec0d4994a1bc047f9bfbfb24.png

**1.4 步进电机控制电路**

1cca8cb941894758ac1d3bb62ba90ebe.png#pic_center

d1bc13a8abbb443fa05b8fc60b18c376.png#pic_center

**1.5 ESP8266联网电路**
其连接 阿里云界面获知也可以连接局域网操作,或者连接远程服务器操作。
764deb8b2af14e47807f6283899449b6.png6167180e3fe24e70be7f99ae1ee5600e.png

501f853b92ed4002998715b56991f9be.png

具体步骤省略,最终界面效果如下图所示。
c46bb699cc8348b1b7b7bdfcf25fe4ce.png其ESP8266芯片采用如下所示。
676e1b1905b6434d8cd1d88513dffea6.png

**其操作步骤如下图所示。**

fa23b30228674ad4a040d28c11b9fc9f.png


## 2 硬件电路设计
本文将 STM32F103RCT6 作为整个控制系统的核心主控芯片,结合 LD3320 构建语音识别的家居控制电路。该电路包含风扇控制、智能灯控制、智能窗帘控制 3 个部分。首先,风扇控制采用 直流电机来实现,通过语音控制来实现风扇调档;其次,智能灯采用 PCB板 上的LED灯来模拟实现,并通过单片机 PA8 的 GPIO 定时器复用功能产生PWM,通过设置高电平的占空比来完成灯泡明暗程度的调节;最后,智能窗帘采用高精度步进电机来实现,相比于传统的直流电机能够有效克服窗帘在关闭时的阻力。并将温湿度烟雾灯数据上发到***阿里云或者onenet*** 服务器上,最终下位机将数据上发到手机APP上,同时手机APP可以远程操作下位机,达到控制风扇,灯、以及窗帘的效果。其结构框图如下所示。其硬件电路图如下所示,包含PCB电路图

7abf8d4572ec4ed6bcf167d747189bf6.png1b8722f6103f492596de3e669aa001f9.png

cec06023d4204d3680e0f78f180ece8c.png


## 3 软件设计

软件设计是语音智能家居系统的核心部分,包含智能语音识别设计、ESP8266联网设计、OLED 屏幕驱动设计、PWM 输出控制设计、温湿度驱动设计和智能窗帘驱动设计、报警电路设计 7 部分。通过这些设计,使得软硬相结合,完成系统采集和输出的整体控制。这里的智能语音识别设计程序包含语音识别和判断,是整个设计的核心部分。在语音识别时,将识别语句导入芯片中,每个识别语句都会对应一个特定的字节编号,不同的语句可以是相同编号,但是不需要连续,每条语句都是采用标准汉语拼音以小写字母形式编程,以空格形式分开每个汉语拼音。在语音识别判断时,通过两级口令的设计模式来实现,由LD3320 进行处理判断,同时使用一级口令(唤醒口令)与二级口令(操作口令)提高识别的效率和准确率,大大降低了错误的语音识别,提高了对家庭设备的控制,有效降低了误触发的概率。

**

## 4 实物展示
下图为***控制系统下位机操作端(STM32操作端)**,包含如下功能。
f5e536e1b57241d1a7094397300a6c65.png#pic_center下图为手机APP上位机端,手机APP软代码全部包含,如有需要,请联系我。a6189ea3454849da8d266963c4316c93.png#pic_center

## 5,具体操作视频详细见下面视频

[智能家居语音控制系统视频连接](https://live.csdn.net/v/252262)
https://live.csdn.net/v/2522622

**6 代码及仿真下载地址**
03基于STM32f103c8t6单片机的智能家居控制系统(程序源码+原理图+PCB+手机APP+论文)项目资源-CSDN文库

##

**

  • 4
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个简单的STM32+ESP8266温湿度PWM控制风扇的main函数示例,供您参考: ```c #include "stm32f10x.h" #include "esp8266.h" #include "dht11.h" #define FAN_PIN GPIO_Pin_12 #define FAN_PORT GPIOB int main(void) { // 初始化时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // 初始化GPIO GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = FAN_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(FAN_PORT, &GPIO_InitStructure); // 初始化定时器 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Period = 5999; TIM_TimeBaseStructure.TIM_Prescaler = 719; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); // 初始化PWM TIM_OCInitTypeDef TIM_OCInitStructure; TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC3Init(TIM3, &TIM_OCInitStructure); // 启动定时器 TIM_Cmd(TIM3, ENABLE); TIM_CtrlPWMOutputs(TIM3, ENABLE); // 初始化ESP8266 ESP8266_Init(); // 初始化DHT11 DHT11_Init(); while (1) { // 获取温湿度数据 DHT11_Read_Data(); float temperature = DHT11_Data[2]; float humidity = DHT11_Data[0]; // 将温度和湿度发送到服务器 char buf[64]; sprintf(buf, "AT+CIPSEND=0,%d\r\n", strlen(buf)); ESP8266_Send_AT_Command(buf); sprintf(buf, "Temperature: %.2f C, Humidity: %.2f %%", temperature, humidity); ESP8266_Send_Data(buf); // 根据温度和湿度控制风扇 if (temperature > 25.0) { TIM_OCInitStructure.TIM_Pulse = 3000; TIM_OC3Init(TIM3, &TIM_OCInitStructure); } else if (humidity > 60.0) { TIM_OCInitStructure.TIM_Pulse = 2000; TIM_OC3Init(TIM3, &TIM_OCInitStructure); } else { TIM_OCInitStructure.TIM_Pulse = 0; TIM_OC3Init(TIM3, &TIM_OCInitStructure); } // 等待10秒 Delay(10000); } } ``` 这个main函数中包含了以下几个主要步骤: 1. 初始化时钟和GPIO,使能PWM输出引脚,初始化定时器和PWM输出模式。 2. 初始化ESP8266模块,连接WiFi网络。 3. 初始化DHT11温湿度传感器,读取温湿度数据。 4. 将温湿度数据发送到服务器。 5. 根据温湿度数据控制风扇的PWM输出,实现温湿度控制风扇的功能。 6. 等待一段时间后重复上述步骤。 需要注意的是,这个示例代码中的ESP8266和DHT11驱动函数需要自行实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值