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

一. 系统功能

此设计采用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 count
		if(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(请去掉特殊符号).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/662658.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【IOT】OrangePi+HomeAssistant+Yolov5智能家居融合

前言 本文将以OrangePi AIpro为基础&#xff0c;在此基础构建HomeAssistant、YOLO目标检测实现智能家居更加灵活智能的场景实现。 表头表头设备OrangePi AIpro(8T)系统版本Ubuntu 22.04.4 LTSCPU4核64位处理器 AI处理器AI算力AI算力 8TOPS算力接口HDMI2、GPIO接口、Type-C、M.2…

06.逻辑回归

文章目录 Generate Model优化边界为线性证明损失函数比较逻辑回归不能用均方误差Generative v.s. DiscriminativeMulti-class Classification逻辑回归的限制自己找线性变换 Generate Model 假设样本符合高斯分布 即找 μ \mu μ和 σ \sigma σ 优化 共用 Σ \Sigma Σ减少…

CSS学习笔记:vw、vh实现移动端适配

移动端适配 移动端即手机端&#xff0c;也称M端 移动端适配&#xff1a;同一套移动端页面在不同屏幕尺寸的手机上可以实现宽度和高度的自适应&#xff0c;也就是页面中元素的宽度和高度可以根据屏幕尺寸的变化等比缩放 之前我在一篇博客中介绍了rem实现移动端适配&#xff0…

这样写代码太优雅了吧

文章目录 优化案例初次优化再次优化看看Spring源码的处理 优化案例 假设一个场景&#xff0c; 开发代码时&#xff0c;需要对类中的方法进行遍历&#xff0c;判断有没有注解NotNull&#xff0c;暂时没有合适的工具类&#xff0c;需要自己手搓一个。 无须多想&#xff0c;分分钟…

CSS学习笔记:响应式布局的原理——媒体查询

什么是响应式布局&#xff1f; 在实际书写代码时&#xff0c;我们不会自己去手写媒体查询来实现响应式布局&#xff0c;我们一般会调用现成的代码库或使用现成的框架&#xff08;但这些代码库或框架的底层原理是媒体查询&#xff0c;所以了解媒体查询也是很有必要的&#xff0…

应用弹窗优先级

背景 由于活动业务越来越多&#xff0c;积累的弹窗越来越多和杂乱&#xff0c;出现如下弹窗交互问题&#xff1a; 弹窗无限重叠&#xff0c;影响操作 弹出顺序无优先级&#xff0c;重要弹窗被隐藏 原因相信大家都一样&#xff0c;产品是一次次迭代的&#xff0c;也可能是不…

ozon卖家精灵,ozon卖家怎么使用

在跨境电商的浪潮中&#xff0c;OZON作为俄罗斯领先的电商平台&#xff0c;吸引了众多卖家争相入驻。然而&#xff0c;面对日益激烈的市场竞争&#xff0c;如何提升店铺的运营效果&#xff0c;成为卖家们迫切需要解决的问题。而OZON卖家精灵作为一款专为OZON卖家打造的辅助工具…

Lua的几个特殊用法

&#xff1a;/.的区别 详细可以参考https://zhuanlan.zhihu.com/p/651619116。最重要的不同就是传递默认参数self。 通过.调用函数&#xff0c;传递self实例 通过 &#xff1a; 调用函数&#xff0c;传递self (不需要显示的传递self参数&#xff0c;默认就会传递&#xff0c;但…

ROS | C++和python实现发布结点和订阅结点

发布者结点&#xff1a; 代码实现&#xff1a; python: C: C和Python发布结点的差异&#xff1a; python: 发布结点pub 大管家rospy调用publisher函数发布话题 (话题,类型&#xff0c;话题长度&#xff09; C: 先定义一个大管家&#xff1a;NodeHandle 然后大管家发布话题…

【C++】二维前缀和

1.题目 2.算法思路 和一维前缀和的方法类似&#xff0c;我们需要预处理一个求和矩阵&#xff0c;然后再求和。 下面是模板&#xff1a; 上面两张图片总结出来了两个公式&#xff0c;这是解决此类问题的关键。 3.代码 #include <iostream> using namespace std; #incl…

【车载开发系列】Vector工具链的安装

【车载开发系列】Vector工具链的安装 【车载开发系列】Vector工具链的安装 【车载开发系列】Vector工具链的安装一. VectorDriver二. DaVinci_Developer三. DaVinci Configurator 一. VectorDriver Vector Driver Setup是Vector产品链中重要的驱动软件,所有的硬件设备进行连接…

看看最新的B端登录界面,你是不是被潮流抛弃了?

毛玻璃风格&#xff08;Frosted Glass Style&#xff09;是新拟态设计风格中的一种分支&#xff0c;它灵感来源于现实世界中的毛玻璃材质。毛玻璃是一种通过在玻璃表面加工处理的方式&#xff0c;使其具有模糊、云翳和透明效果的特殊玻璃。 在设计中&#xff0c;毛玻璃风格通常…

PS:电子书App自动截图后合成一个PDF文档

说明&#xff1a;有的电子书App不能下载到本地&#xff0c;通过自动截图后合成一个PDF文档来解决&#xff01; 一、自动截图App 1.安装”免ROOT自动化助手“ 2.创建一个任务 3.编辑任务&#xff1a;根据电子书的操作顺序制定&#xff0c;400次就是书籍页数&#xff08;次数一…

备份服务器的安全风险以及如何通过TDE透明加密提升安全性

备份服务器的潜在安全风险主要包括以下几个方面&#xff1a; 1. 数据泄露风险&#xff1a; 备份数据可能包含敏感信息&#xff0c;如用户个人信息、商业机密等。如果备份数据未经适当保护&#xff0c;例如存储在不安全的位置或未加密&#xff0c;黑客或未授权的人员可能会获取…

React-基础样式控制

组件基础样式方案 React组件基础的样式控制有两种方式 1、行内样式&#xff08;不推荐&#xff09; 属性名是多个单词的需要使用驼峰写法 也可以把样式都提取到一个变量里&#xff0c;再赋值到style里 2、class类名控制 classnames优化类名控制 classnames是一个简单的JS库&…

【揭秘!在线ChatGPT神器,体验入口在此!】

&#x1f680;【揭秘&#xff01;在线ChatGPT神器&#xff0c;体验入口在此&#xff01;】&#x1f680; 前言 嘿&#xff0c;大家好&#xff01;今天我要和大家分享一些关于如何使用免费的ChatGPT的技巧。ChatGPT是一项令人兴奋的人工智能技术&#xff0c;它可以成为我们的好…

沃飞长空总部落地成都高新,为蓉低空经济发展助力!

5月25日&#xff0c;吉利科技集团与成都高新区签署合作协议&#xff0c;吉利科技集团旗下沃飞长空全球总部落地成都高新区。 根据协议&#xff0c;沃飞长空全球总部项目落地成都未来科技城&#xff0c;将布局总部办公、研发和生产制造低空出行航空器等业务。双方将积极发挥各自…

MySQL第六次作业

一、创建部门表 指令&#xff1a; mysql> CREATE TABLE dept (-> dept_id INT PRIMARY KEY AUTO_INCREMENT COMMENT 部门编号,-> dept_name CHAR(20) COMMENT 部门名称-> ); 演示&#xff1a; 二、插入部门数据 指令&#xff1a; mysql> INSERT INTO dept…

如何使用GPT-4o?如何使用 GPT-4o API?

如何使用GPT-4o&#xff1f; GPT-4o 也可以通过 ChatGPT 界面使用 如何使用 GPT-4o API 新的 GPT-4o 模型遵循 OpenAI 现有的聊天完成 API&#xff0c;使其向后兼容且易于使用。 ​ 如何升级GPT4Plus&#xff1f; 升级ChatGPTPLSU4需要一张虚拟卡&#xff0c;点击获取​​​…

vue项目集成萤石云在Web系统中实现实时摄像头监控及控制功能

需求 需求&#xff1a; 开发人员在产线上放置一个萤石摄像头&#xff0c;前端在可视化大屏上实时监控&#xff0c;且控制左右上下功能。 效果 萤石云接入web前期准备工作 阅读萤石云API文档&#xff1a;萤石云开放平台开发者文档 阅读萤石云控制API文档&#xff1a;萤石云摄…