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

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

相关文章

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

Python实现局域网远程控制电脑

《Python实现局域网远程控制电脑》这篇文章主要为大家详细介绍了如何利用Python编写一个工具,可以实现远程控制局域网电脑关机,重启,注销等功能,感兴趣的小伙伴可以参考一下... 目录1.简介2. 运行效果3. 1.0版本相关源码服务端server.py客户端client.py4. 2.0版本相关源码1

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等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机