自学内容网 自学内容网

基于stm32的多功能语音控制-呆瓜风扇

目录

零、功能展示

一、项目介绍

1.1. 项目背景

1.2. 项目介绍

二、设计

2.1. 嵌入式硬件设计

           硬件组成

       项目工程设计

        原理图设计

        PCB 设计与制作

        3D打印

        LED扇叶设计

2.2 嵌入式软件设计

       整理驱动文件

程序设计

按键控制

电机驱动与调速

        舵机控制

        OLED 显示

        旋转编码器控制转速

        DHT11温湿度获取

        遥感控制

        语音控制

        语音播报温度

        交互界面设计

三、调试及功能展示

3.1 调试过程

3.1.1旋转编码器中断卡死问题

3.1.2开启 ADC 采集后卡死问题

3.1.3风扇摇头与其他程序冲突问题

3.1.4 OLED花屏

3.2 功能展示

四、总结与心得

4.1 项目总结

4.2 项目不足与展望

五、开源呆瓜风扇


零、功能展示

视频中是已实现的功能。

笨蛋风扇

一、项目介绍

1.1. 项目背景

        随着科技的不断进步,智能家居产品逐渐走进人们的生活,为人们提供更加便捷、舒适的生活体验。风扇作为夏季常用的家电产品,传统风扇功能单一,无法满足用户多样化的需求。本项目旨在设计一款基于 STM32 的智能控制风扇,结合温湿度传感器、语音和云台控制、LCD 显示图案与屏幕交互等技术,实现根据环境自动调节和多种操作方式,提升用户体验和互动性。

                                                                图1 项目实物图

1.2. 项目介绍

        本项目设计的智能风扇系统具备多种功能模式,包括自动模式、手动模式(锁定和未锁定)、语音交互与控制、OLED 屏显示、LCD屏显示 、LED扇叶显示、按键控制以及通过电机驱动模块控制电机正反转和舵机云台控制电机方向等。该系统能够根据环境温湿度自动调节风扇转速,用户也可通过手动操作、语音指令方式控制风扇的运行状态,实现了智能化和人性化的设计目标。        

                                                        图2 项目结构框图

二、设计

2.1. 嵌入式硬件设计

           硬件组成

        本系统主要由STM32F103C8T6单片机、STM32F103ZET6单片机、温湿度传感器(DHT11)、语音模块(天问 51)、电机驱动模块(TB6612)、双轴控键遥感传感器、旋转编码器、舵机、OLED 显示屏、LCD 显示屏、直流电机等组成。各模块协同工作,实现风扇的智能控制功能。

       项目工程设计

        为了使每一个功能模块都能在单片机中使用,通过cubemax配置好各个功能引脚。

                                                        图3 cubemax引脚配置

        原理图设计

        根据cubemax的引脚设置来设计 PCB 原理图的接线。确保各模块之间的电气连接正确,信号传输稳定。

                                                                图4 原理图

        PCB 设计与制作

        根据原理图设计 PCB 布局,考虑电磁干扰、散热等因素,优化 PCB 布线。完成 PCB 打板后,进行焊接和组装,将各元器件安装到 PCB 板上,制作出硬件实物。

                                        图5 PCB布局

        3D打印

        为了让风扇电机可以放置到云台上,我设计了一个电机外壳。

                                                图6 电机外壳

        LED扇叶设计

        以ESP32为主控通过两个24路pwm输出芯片驱动16个RGB灯。用霍尔传感器来捕获风扇的转速,采用开源的视觉暂留算法来实现旋转扇叶展示图像。软件和硬件部分都为网上开源资料。硬件部分,设计线圈给PCB扇叶进行无线供电使其旋转时不同携带电源。

                                                                图7 LED扇叶

2.2 嵌入式软件设计

       整理驱动文件

        为了方便代码的编写,我把每一个功能模块都写了.c/.h驱动文件和readme。

图8 各驱动文件

程序设计

按键控制

        通过扫描按键状态,实现风扇的开关机、模式切换、转速锁定与调节等功能。

        温湿度传感器数据读取:使用 DHT11 温湿度传感器获取环境温湿度数据,为自动模式下风扇转速的调节提供依据。

                                                                代码1 按键控制

电机驱动与调速

        通过 TB6612 电机驱动模块控制直流电机的正反转和转速,实现风扇的运行和调速功能。

                                                                代码2 电机驱动

        舵机控制

        根据摇杆或语音指令控制舵机的转动,实现风扇的摇头功能,调整风向。

                                                                代码3 舵机控制

        OLED 显示

        通过软件I2C进行实时显示风扇的工作模式、转速、温湿度等信息,方便用户了解风扇的运行状态。

        旋转编码器控制转速

        通过旋转编码器每次正转或者反转时A相、B相的电平变化规律来进行计数,最后加计数联系到风扇转速的加减。

                                                        代码4 旋转编码器代码

        DHT11温湿度获取

        过线协议获得温湿度数据。在自动模式时,风扇的转速将与温湿度成正相关。

                                                                代码5 DHT11驱动代码

        遥感控制

        通过对遥感的ADC+DMA采集来判断遥感的方向,并且设置云台的方向根据ADC的数值变化进行对应的转动。

                                                                代码6 遥感控制

        语音控制

        天问 51 语音模块语音识别与stm32f103c8t6之间通过usart进行通信实现语音播报温度、控制风扇的开关、转速和风向等功能

                                                        代码7 USART接收数据

        语音播报温度

        将STM32F103C8T6将从DHT11采集到的温度数据通过USART循环发送给天问语音模块,当语音模块听到关键词“现在的温度是多少”,语音模块就会先接收C8T6发来的温度信息,然后将温度播报出来。

                                                        图9 天问模块设置

        交互界面设计

        STM32F103ZET6最小开发板结合TFTLCD屏幕进行lvgl界面开发。用线图表示当前的温湿度和转速。

                                                图7 lvgl设计

三、调试及功能展示

3.1 调试过程

3.1.1旋转编码器中断卡死问题

        在调试过程中,发现旋转编码器中断有时会卡死,导致无法正常计数和调节风扇转速。通过将中断中的延时优先级调至高于中断优先级,解决了该问题。

        详细分析:使用旋转编码器时,用delay消抖时,注意tick时钟的优先级要比中断引脚的优先级高HAL_Delay函数本质也是打断程序去执行延时操作,那么,就一定要让系统滴答定时器抢占优先级高于外部中断的抢占优先级(数字越小级别越高)

                                                            代码8 出现问题的代码位

3.1.2开启 ADC 采集后卡死问题

        当开启 ADC 采集功能后,系统出现卡死现象。经过分析,提高 ADC 的采样时间周期后,成功解决了此问题。

        详细分析:如果ADC采样频率过高,会导致DMA传输数据的速度跟不上ADC采集数据的速度,也会导致程序死机。为了避免这种情况,可以降低ADC采样频率,或者增加DMA缓冲区的大小。

                                                        代码9 ADC采样时间配置

3.1.3风扇摇头与其他程序冲突问题

        风扇的摇头功能和主程序的其他功能不能同时流畅进行。通过开启定时器中断,合理分配系统资源,确保了风扇摇头功能和其他功能的正常运行。

        详细分析:开启时钟定时器3,并且通过调节PSC和RCC使得定时器的溢出时间为0.1s即每0.1s会触发一次定时器中断函数。 使能定时器3更新中断并启动定时器,将云台的转头函数放在定时器中断函数中。

                                                代码10 定时器3配置

                                                        代码11 定时器中断实现

3.1.4 OLED花屏

        烧录OLED的初始化代码后OLED花屏,没有选择正确的I2C驱动的代码。不同的OLED显示屏有着不同的驱动指令。

                                                        代码12 OLED初始化

3.2 功能展示

手动模式(锁定):在该模式下,风速锁定,用户可通过按键操作切换风扇的开关机状态。

手动模式(未锁定):用户可通过摇杆控制风扇的方向,旋转编码器调节风扇转速,实现手动灵活控制。

手动模式

自动模式:系统根据温湿度传感器采集的环境数据自动调节风扇转速,当环境温度较高或湿度较大时,自动提高风扇转速,提供更舒适的环境。

自动模式

语音交互与控制:语音模块能够准确识别用户的语音指令,实现语音播报温度、控制风扇的开关、转速和风向等功能,操作方便快捷。

语音控制

温度播报

LCD 扇叶显示(复刻暂未成功QAQ):LCD 扇叶上的灯珠可实现亮灭与颜色切换,增加了风扇的趣味性和美观性。

显示设备(LCD通信部分未完成):OLED显示工作模式、转速、湿度信息。TFTLCD显示转速、湿度信息线图信息

                                                           图9 显示屏

四、总结与心得

4.1 项目总结

        本项目成功实现了基于 STM32 的智能控制风扇的设计与制作,集成了多种功能,达到了预期的设计目标。通过温湿度传感器实现了自动调节风扇转速,提高了用户舒适度;语音控制和屏幕交互功能增强了产品的智能化和人性化程度;硬件设计合理,软件功能稳定,各模块协同工作良好。

4.2 项目不足与展望

不足之处

        未能实现扇叶图案与交互屏的功能。原计划通过界面动态显示温湿度,但在将 stm32f103c8t6 的温湿度数据通过 usart 发送给 stm32f103zet6 时,stm32f103zet6 的 usart 的 receive 功能卡死在 HAL_BUSY,导致数据传输失败,无法实现该功能。此外,由于时间限制,未实现旋转扇叶产生视觉暂留的图像,原因包括无法实现霍尔的激发(电机磁场不够)、无线供电未搭建以及现有电机扭矩小无法带动 LCD 扇叶转动。

展望未来

        首先,将上面的不足之处进行修改。进一步优化硬件设计,选择性能更优的电机和传感器,提高系统的稳定性和可靠性。同时,完善无线供电模块的搭建,解决 LCD 扇叶转动的动力问题,实现旋转扇叶产生视觉暂留图像的功能,提升产品的趣味性和创新性。

五、开源呆瓜风扇

KEIL项目工程、PCB、3D外壳:

github:GitHub - Li9thewin/Stupid_Fan: 随着科技的不断进步,智能家居产品逐渐走进人们的生活,为人们提供更加便捷、舒适的生活体验。风扇作为夏季常用的家电产品,传统风扇功能单一,无法满足用户多样化的需求。本项目旨在设计一款基于 STM32 的智能控制风扇,结合温湿度传感器、语音和云台控制、LCD 显示图案与屏幕交互等技术,实现根据环境自动调节和多种操作方式,提升用户体验和互动性。

嘉立创eda:呆瓜风扇 - 立创开源硬件平台 (oshwhub.com)


原文地址:https://blog.csdn.net/weixin_73690807/article/details/145158202

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!