共计 1680 个字符,预计需要花费 5 分钟才能阅读完成。
目录
一、前言
二、项目简介
1. 功能详解
2. 主要器件
三、原理图设计
四、PCB 硬件设计
PCB 图
五、程序设计
六、实验效果
七、资料内容
项目分享
一、前言
项目成品图片:
哔哩哔哩视频链接:
https://www.bilibili.com/video/BV1xw4m1Y7sA/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2
(资料分享见文末)
二、项目简介
1. 功能详解
基于 STM32 的智能风扇系统
功能如下:
- OLED 显示当前温度,湿度,风扇档数和速度,自动手动模式。
- 按键可以设置自动和手动 2 种模式切换,自动档模式下可以设置温度阈值。
- 手动模式下可以自由开启风扇,调整档位等级。
- 自动模式下,人体红外检测到人并且当前温度大于我们设置温度上限值风扇开启。
- 每调速一次风扇档位加一,最大上限为 5 档。
- 有倒计时功能,可设置计时时间,时间到风扇自动关闭
- 蓝牙 APP 控制,具有手动、自动、模式切换和倒计时功能
2. 主要器件
- STM32F103C8T6 最小系统板
- DHT11 温湿度传感器
- OLED 显示屏(4 针 I2C 协议)
- 蓝牙模块(BT04A)
- TB6612 直流电机驱动模块
- HC-SR501 人体红外传感器
- 5V 直流风扇
- 蜂鸣器
- LED 灯
三、原理图设计
四、PCB 硬件设计
PCB 图
五、程序设计
int main(void)
{
/* 模块初始化 */
OLED_Init(); //OLED 初始化
Motor_Init();
DHT11_Init();
MatrixKey_Init();
Red_Init();
Timer_Init();
Serial_Init();
BEEP_GPIO_Config();
OLED_ShowChinese(0,0,"温度");
OLED_ShowChinese(16*4,0,"湿度");
OLED_ShowChinese(0,16,"模式");
OLED_ShowChinese(16*4,16,"档数");
OLED_ShowNum(16*2,16,Key_M,1,OLED_8X16);
OLED_ShowNum(16*6,16,dang,1,OLED_8X16);
OLED_ShowChinese(0,16*2,"速度:");
OLED_ShowSignedNum(16*3,16*2,Speed,3,OLED_8X16);
OLED_ShowChinese(0,16*3,"倒计时:");
OLED_ShowNum(16*4,16*3,Time,2,OLED_8X16);
OLED_Update();
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
Delay_ms(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_0);
GPIO_ResetBits(GPIOB, GPIO_Pin_1);
while (1)
{DHT11_Read_Data(&TH,&RH);// 获取当前温湿度
OLED_ShowNum(16*2,0,TH,2,OLED_8X16);
OLED_ShowNum(16*6,0,RH,2,OLED_8X16);
OLED_Update();
if(Timedemo == 1)
{if(RED_Data == 1) // 如果有人
{OLED_ShowString(16*6,16*2,"Hi!",OLED_8X16);
if(temperature 100)
// {
// Speed = 100;
// }
Speed = 100;
}
else Speed = 0;
}
else
{OLED_ShowString(16*6,16*2,"Bey!",OLED_8X16);
Speed = 0;
}
OLED_ShowSignedNum(16*3,16*2,Speed,3,OLED_8X16);
OLED_Update();
Motor_SetSpeed(Speed);
}
Delay_ms(500);
}
}
六、实验效果
七、资料内容
项目分享
原文地址: STM32 项目分享:智能风扇系统
正文完