【单片机毕设选题】-智能语音控制风扇

2024-05-30 02:44

本文主要是介绍【单片机毕设选题】-智能语音控制风扇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一. 系统功能

此设计采用STM32和SU-03T离线语音模块来控制风扇, 主要功能如下:

1. 通过DHT11温湿度模块来采集环境温湿度。

2. 通过SU-03T语音模块来控制风扇启停加减速等。

3. 通过OLED显示系统状态。

4. 可以通过按键控制风扇启停加减速等。

5. 通过蓝牙模块监视系统状态。

6. 通过场效应管模块使用PWM方法控制风扇转速。

二. 系统功能框图

三. 系统主要功能模块原理图

四. 系统主要功能模块代码

初始化部分:

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init */InitVar();/* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();MX_USART2_UART_Init();MX_TIM1_Init();/* USER CODE BEGIN 2 */HAL_Delay(100);
//uart2打开接收中断HAL_UART_Receive_IT(&huart2, (uint8_t*)&uart2RecBuff, 1);HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);InitOled();InitOledDisp();HAL_Delay(100);InitDHT11();HAL_Delay(100);
//    TestFlash();FlashReadLevel();__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_1, pwmPulse);

 OLED显示部分:

void InitOledDisp(void)
{uint8_t i = 0;HAL_Delay(100); OledFill(0x00);     //全屏熄灭for(i=0;i<6;i++){OledShowCN(16+i*16, 0, i);  //“智能调速风扇”}OledShowString(0, 2, (uint8_t*)"T:xxxx H:xxxx", OLED_FONT_8X16);  OledShowString(0, 4, (uint8_t*)"Fan:Close", OLED_FONT_8X16);OledShowString(0, 6, (uint8_t*)"Pulse:xxxx", OLED_FONT_8X16);       
}

 按键检测部分 :

/********************************************************************************** @brief  Scan key board* @param  None* @retval None*********************************************************************************/
void ScanKeyBoard(void)
{uint8_t keyVal;keyVal = CheckKeyVal();if(KeyInfo.OldKeyValue!=keyVal)	//first time enter after key changed{KeyInfo.ReleaseDelayCnt = 0;    //clear key release time countif(keyVal!=NO_KEY_PRESSED_DEF){KeyInfo.HoldDelayCnt=0;}KeyInfo.OldKeyValue = keyVal;}else	{if(keyVal!=NO_KEY_PRESSED_DEF)    //have key press{  
//			if(KeyInfo.HoldDelayCnt<254)if(KeyInfo.HoldDelayCnt<1000){KeyInfo.HoldDelayCnt++;}			if(KeyInfo.HoldDelayCnt==SHORT_PRESS_TIME_DEF)	//pressed for a short time{KeyInfo.NewKeyValueTemp = KeyInfo.OldKeyValue;}}else    //release{   if(KeyInfo.ReleaseDelayCnt<254)  KeyInfo.ReleaseDelayCnt++;if(KeyInfo.ReleaseDelayCnt==RELEASE_TIME_DEF){if(KeyInfo.HoldDelayCnt>=LONG_PRESS_TIME_3S){;}else    //短按键{KeyInfo.ConfirmKeyValue = KeyInfo.NewKeyValueTemp;}KeyInfo.HoldDelayCnt = 0;KeyInfo.NewKeyValueTemp = NO_KEY_PRESSED_DEF;}}}
}

 系统控制部分:

//更新系统状态
void UpdateSystem(void)
{static uint8_t systemCnt = 0;systemCnt++;    if(systemCnt>=READ_TEMP_INTER){systemCnt = 0;if(DHT11ReadData()==0)  //DHT11温湿度读取OK{DispDHT11Val();}UpdateSU03T();printf("T:%02d.%01d  H:%02d.%01d\r\n", DHT11_Data.temp_int, DHT11_Data.temp_deci, DHT11_Data.humi_int, DHT11_Data.humi_deci);if(fanLevel==FAN_CLOSE){printf("Fan:Close\r\n");   }else if(fanLevel==FAN_LEVEL1){printf("Fan:Level1\r\n");   }else if(fanLevel==FAN_LEVEL2){printf("Fan:Level2\r\n");   }else if(fanLevel==FAN_LEVEL3){printf("Fan:Level3\r\n");   } else if(fanLevel==FAN_OPEN){printf("Fan:Open\r\n");   }        printf("Pulse:%04d\r\n", pwmPulse);}DispFanState();  
}

提供一整套软硬件方案, 有需要请联系QQ: 277&9_43(652(请去掉特殊符号).

这篇关于【单片机毕设选题】-智能语音控制风扇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1015363

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

智能交通(二)——Spinger特刊推荐

特刊征稿 01  期刊名称: Autonomous Intelligent Systems  特刊名称: Understanding the Policy Shift  with the Digital Twins in Smart  Transportation and Mobility 截止时间: 开放提交:2024年1月20日 提交截止日

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

控制反转 的种类

之前对控制反转的定义和解释都不是很清晰。最近翻书发现在《Pro Spring 5》(免费电子版在文章最后)有一段非常不错的解释。记录一下,有道翻译贴出来方便查看。如有请直接跳过中文,看后面的原文。 控制反转的类型 控制反转的类型您可能想知道为什么有两种类型的IoC,以及为什么这些类型被进一步划分为不同的实现。这个问题似乎没有明确的答案;当然,不同的类型提供了一定程度的灵活性,但