基于STM32F103C8T6的智能风扇控制

  • 前言
  • 一、功能介绍
  • 二、硬件介绍
  • 三、部分源码

前言

本次分享的是基于STM32F103的智能风扇的制作,相关的硬件和部分源码可看下面哦,需要成品的可私(创作不易,拒绝白嫖)


喜欢就给小殷一个关注和点赞吧

演示视频链接

一、功能介绍

1、按键模式下通过按键进行风扇档数改变一共设置为4档
2、自动模式下根据环境温度而改变温度的转速和档位
3、在定时模式下到达用户所设时间后自己停止在此期间可以通过按键进行时间的加减
4、通过红外传感器检测是否有人将手伸向风扇检测到后风扇立即停止
5、通过蓝牙进行风扇模式 风扇档位和定时时间的改变
6、通过语音进行风扇模式 风扇档位和定时时间的改变

二、硬件介绍

硬件清单

主控芯片 STM32F103C8T6
蓝牙模块 HC-05
语音模块 SU-03T
温湿度传感器 DHT11
显示屏 OLED(0;96 IIC 4引脚)
按键 散装独立按键
红外检测 红外传感器
风扇 直流电机风扇
电机驱动 L298N
电源 12锂电池

自制迷你版语音模块PCB

三、部分源码

/*=============================基于STM32F103的智能风扇======================@Author;小殷童鞋
@Date:2023.4.8
@创作不易,给个赞和关注吧(拒绝白嫖)
@WX:y2836235214(可接单)
===========================================================================*//**********************************引脚接线**********************************
按键 PB6 PB7 PB8 PB9
OLED GND VCC  PB13-CLK PB14-DIN
风扇 PB5
蜂鸣器  PC14
蓝牙  TX--(PA10)   RX--(PA9)
红外模块 PB4语音模块(SU-03T) B2-PA3  B3-PA2
WIFI模块(ESP8266) TX-PB11 RX-PB10
******************************************************************************//*=====================================功能说明=================================1、按键模式下通过按键进行风扇档数改变一共设置为4档
2、自动模式下根据环境温度而改变温度的转速和档位
3、在定时模式下到达用户所设时间后自己停止在此期间可以通过按键进行时间的加减
4、通过红外传感器检测是否有人将手伸向风扇检测到后风扇立即停止
5、通过蓝牙进行风扇模式 风扇档位和定时时间的改变
6、通过语音进行风扇模式 风扇档位和定时时间的改变===============================================================================*/
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "string.h"
#include "beep.h"
#include "timer.h"
#include "infrared.h"
#include "oled.h"
#include "dht11.h"
#include "motor.h"
//========================================变量定义================================*/
unsigned char temp = 0,humi = 0;          //实时温湿度值
unsigned char Usart1_cmd = 0;             //用来接收蓝牙和语音的指令
unsigned char speed = 0,mode = 0;            //当前占空比 默认关闭 和风扇转数模式
unsigned char old_speed = 0,old_mode = 0; //该变量用于人体检测时旧值的存储 一段时间后如果没有检测到就恢复继续运行
unsigned char clock_start = 0;            //功能模式
unsigned char sec;                        //秒
unsigned char min;                        //分
unsigned char hour;                       //时
unsigned char clock_flag = 0;            //时间到标志
unsigned int set_time = 10,time[6] ={0};  //默认为10s
unsigned char work_mode = 0;              //模式变量
static unsigned char people_flag =0;             //红外检测标志
char str[24];                            //存储信息字符串的形式显示
char t_str[12];                          //存储温度信息
void Buzzer_Voice(void);                 //蜂鸣器提示声音
void Init_interface(void);               //初始化界面
void Time_Display(void);                 //定时显示界面
void KEY_Display(void);                  //按键显示界面
void Auto_Display(void);                  //自动模式界面
void Infrared_Display(void);             //红外显示界面void button_task(void);                  //按键功能
void infrared_task(void);                //红外功能
void interface(unsigned char interface); //界面显示
void clock_Action(void);                 //定时功能
void usart_task(void );                  //串口功能
void Fan_Speed_Mode(void);               //风扇转速模式
void Speed_Control_By_Tempearture(void); //自动伴随温度调节转速
/*==================================功能界面显示函数 ===============================*/
//初始化界面
void Init_interface(void)
{OLED_ShowCHinese(6,0,0);//智OLED_ShowCHinese(26,0,1);//能OLED_ShowCHinese(46,0,26);//风OLED_ShowCHinese(66,0,27);//扇OLED_ShowCHinese(86,0,4);//系OLED_ShowCHinese(106,0,5);//统  //下面为显示控制 如不想显示则将1改为0即可
#if 1 OLED_ShowNum(6,6,2023,4,16);OLED_ShowCHinese(40,6,28);//年 OLED_ShowNum(60,6,5,1 ,16);OLED_ShowCHinese(74,6,29);//月 OLED_ShowNum(92,6,24,2,16);OLED_ShowCHinese(108,6,30);//日
#endif#if 1OLED_ShowCHinese(28,3,31);//李OLED_ShowCHinese(48,3,32);//佳OLED_ShowCHinese(68,3,33);//蔓#endif}//定时模式显示定时的时间
void Time_Display(void)
{OLED_ShowCHinese(26,0,12);//定OLED_ShowCHinese(46,0,13);//时OLED_ShowCHinese(66,0,14);//模OLED_ShowCHinese(86,0,15);//式
#if 0OLED_ShowNum(30,4,time[0],2,4);OLED_ShowNum(38,4,time[1],2,4);OLED_ShowChar(46,4,':',4);OLED_ShowNum(52,4,time[2],2,4);OLED_ShowNum(60,4,time[3],2,4);OLED_ShowChar(68,4,':',4);OLED_ShowNum(74,4,time[4],2,4);OLED_ShowNum(82,4,time[5],2,4);
#endif//定时时间显示--倒计时显示OLED_ShowNum(46,4,set_time/10,2,16);OLED_ShowNum(60,4,set_time%10,2,16);
}//按键模式
void KEY_Display(void)
{OLED_ShowCHinese(26,0,10);//按OLED_ShowCHinese(46,0,11);//键OLED_ShowCHinese(66,0,14);//模OLED_ShowCHinese(86,0,15);//式//下面显示转数 档位OLED_ShowString(30,3,(unsigned char *)"Speed:",16);OLED_ShowNum(76,3,speed,3,16);OLED_ShowString(30,6,(unsigned char *)"Mode:",16);OLED_ShowNum(74,6,mode,1,16);
}//自动模式
void Auto_Display(void)
{OLED_ShowCHinese(26,0,24);//自OLED_ShowCHinese(46,0,25);//动OLED_ShowCHinese(66,0,14);//模OLED_ShowCHinese(86,0,15);//式//下面显示转数 档位 和温度OLED_ShowString(36,3,(unsigned char *)"Speed:",16);OLED_ShowNum(84,3,speed,3,16);OLED_ShowString(0,6,(unsigned char *)"Mode:",16);OLED_ShowNum(42,6,mode,1,16);OLED_ShowString(78,6,(unsigned char *)"T:",16);OLED_ShowNum(100,6,temp,2,16);}//红外模式
//void Infrared_Display(void)
//{//   OLED_ShowCHinese(26,0,8);//红
//   OLED_ShowCHinese(46,0,9);//外
//   OLED_ShowCHinese(66,0,14);//模
//   OLED_ShowCHinese(86,0,15);//式
//   //在红外模式下如果检测到人则显示有人 并关闭风扇
//}//按键声响声音  m每次按下按键会有一声按键声响
void Buzzer_Voice(void)
{Buzzer_ON();delay_ms(200);Buzzer_OFF();            delay_ms(200);
}
/*=====================================主函数及功能函数================================*/
int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4   delay_init();                           //延时函数初始化   Init_Usart();                           //初始化串口LED_Init();                              //初始化LEDKEY_GPIO_INIT();               //按键初始化Buzzer_GPIO_Init();            //蜂鸣器初始化Infrared_Init();               //红外初始化DHT11_Init();                  //温湿度初始化Motor_Init();TIM3_PWM_Init();OLED_Init();                         //初始化OLED  OLED_Clear(0);  Init_interface();                        //初始化界面只显示一次delay_ms(1000);    printf("===============HardWare Init Finished============\r\n");//初始化成功提示音Buzzer_Voice();   Buzzer_Voice();delay_ms(4000); while(1){interface(work_mode);                  //界面刷新Fan_Speed_Mode();                      //风扇转速模式Speed_Control_By_Tempearture();        //自动模式下风扇的控制button_task();                         //按键触发infrared_task();                       //红外触发clock_Action();                        //定时功能usart_task();                             //串口触发TIM_SetCompare2(TIM3,speed);          //占空比调节delay_ms(200);}
}

【基于STM32F103C8T6的智能风扇控制】相关推荐

  1. 基于数字电路交通灯信号灯控制系统设计-基于单片机病房温度监测与呼叫系统设计-基于STM32的无线蓝牙心电监护仪系统设计-基于STM32的智能蓝牙温控风扇控制设计-基于STM32的智能温室控制系统设计

    1617基于数字电路交通灯信号灯控制系统设计(仿真电路,论文报告)  摘  要:交通灯控制系统在城市交通控制中发挥着重要的作用,本次课程设计就是以城市交通灯控制系统为背景的,主要通过运用学过的数字电路 ...

  2. 基于STM32的智能温室控制系统仿真电路设计(温控补光)-基于STM32的智能蓝牙温控风扇控制系统设计-基于STM32的无线蓝牙心电监护仪系统设计【毕设课设分享】

    1609 基于STM32的智能蓝牙温控风扇控制系统设计-毕设课设 1.LCD1602液晶显示当前温度,温度上下限值,风扇等级,自动手动模式: 2.设置有4个按键,按键1可以设置自动和手动2种模式切换: ...

  3. 51单片机风扇转动c语言代码,基于51单片机的智能风扇控制系统设计.doc

    完美.WORD格式.整理 范文.范例.指导 基于51单片机智能风扇控制系统的设计与实现 摘要:随着气温的逐渐上升,风扇的需求量也逐渐扩大.传统风扇不能根据外界温度的变化对风扇转速快慢进行调整,也不能对 ...

  4. 基于树莓派的智能家居控制系统设计论文参考

    完整论文咨询可WX联系:gyf1842965496 智能家居控制系统功能实现详细介绍:基于树莓派的智能家居控制系统设计https://blog.csdn.net/G1842965496/article ...

  5. 基于STM32F103c8t6的智能垃圾桶项目

    基于STM32F103c8t6的智能垃圾桶项目 写在前头 软件配置 硬件部分 1. 主控芯片 2. HC-SR04超声波模块 模块简介 模块参数 工作原理 GPIO配置 3. SG90舵机 模块简介 ...

  6. 基于STM32的智能风扇系统

    目录 1.概述 2.硬件组成 3.PWM调速原理 4.L298N电机驱动控制原理 5.红外线遥控编码原理 6.软件设计 7.实物测试 1.概述 该智能风扇以STM32单片机为核心,结合红外遥控.人体感 ...

  7. 【特纳斯电子】基于单片机的智能风扇-开题报告

    完整资料下载地址 https://www.mcude.com/information-area/mcukt/3607/ 编号: HJJ-51-2022-005-KT 设计简介: 本设计是基于单片机的智 ...

  8. 基于树莓派的智能家居控制系统设计

    基于树莓派的智能家居控制系统设计 完整文件下载 基于树莓派的智能家居控制系统设计 https://download.csdn.net/download/G1842965496/85802405 一.功 ...

  9. 【单片机毕业设计】【mcuclub-109】基于单片机的智能抽油烟机控制系统设计-标准版【实物设计】

    设计简介: 项目编号:mcuclub-109 项目名:基于单片机的智能抽油烟机控制系统设计 单片机:STC89C52 功能: 1.通过MQ-2烟雾传感器检测厨房内烟雾浓度,若烟雾浓度小于设定最小阈值, ...

最新文章

  1. NIPS改名为NeurIPS的原因
  2. DeepLearning——CNN
  3. ack是什么,如何使用Ack机制,如何关闭Ack机制,基本实现,STORM的消息容错机制,Ack机制
  4. P1145 约瑟夫 W(模拟)
  5. 机器学习-LR推导及与SVM的区别
  6. Activity的生命周期及各生命周期方法的作用
  7. 【C++深度剖析教程3】C++中类的静态成员变量
  8. 获取会话名称时错误 5_5种可重复的数据科学工具
  9. Tomcat不能自动编译JSP文件问题的一种解决方法
  10. Visual Studio [即时窗口] [命令窗口] (Immediate Window Command Window) 转
  11. 大数据可视化应用在哪些方面
  12. 联通积分兑换的Q币怎么兑换到QQ上
  13. 数据库面试题---原理
  14. 免费开源商用级人脸识别库SeetaFace6使用教程(含人脸识别、口罩识别、活体识别、人眼状态判断、性别年龄识别等)
  15. windows”出现身份验证错误,要求的函数不正确“的解决方法
  16. 2021计算机夏令营保研经历(中科院计算所,南京大学人工智能学院等)
  17. 获取自己所上传资源的下载量
  18. 创建一个DAPP的全流程
  19. python语言表白语句简单_简短的表白语句280句
  20. mysql修改索引语句_mysql——创建索引、修改索引、删除索引的命令语句

热门文章

  1. Python发展前景好么?Python就业岗位有哪些?为什么要去学习Python?
  2. 字符函数和字符串函数(上)
  3. 雷达系统设计matlab仿真 代码,雷达系统设计matlab仿真
  4. php中js画图,使用JS画图之点、线、面_javascript技巧
  5. haskell基本语法
  6. RabbitMQ的6种工作模式的学习记录,普通MAVEN和springboot项目整合rabbitmq的API详解
  7. tpproxy-tcp透明代理
  8. 计算机电池维修心得,维修小记--更换G903微动与电池
  9. 硬件工程师日常必备软件推荐
  10. 2012第25周国内Android应用下载排行榜动态