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

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

相关文章

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

基于Python实现智能天气提醒助手

《基于Python实现智能天气提醒助手》这篇文章主要来和大家分享一个实用的Python天气提醒助手开发方案,这个工具可以方便地集成到青龙面板或其他调度框架中使用,有需要的小伙伴可以参考一下... 目录项目概述核心功能技术实现1. 天气API集成2. AI建议生成3. 消息推送环境配置使用方法完整代码项目特点

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

Python中edge-tts实现便捷语音合成

《Python中edge-tts实现便捷语音合成》edge-tts是一个功能强大的Python库,支持多种语言和声音选项,本文主要介绍了Python中edge-tts实现便捷语音合成,具有一定的参考价... 目录安装与环境设置文本转语音查找音色更改语音参数生成音频与字幕总结edge-tts 是一个功能强大的

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构