目录
一、前言
项目成品图片:

哔哩哔哩视频链接:
STM32智能窗户
(资料分享见文末)
二、项目简介
1.功能详解
基于STM32智能窗户
功能如下:
- 基于STM32F103C8T6最小系统板
- MQ135传感器检测空气质量
- DHT11检测环境温湿度情况
- 光电红外传感器检测是否有人闯入
- 雨量传感器检测是否下雨
- 所有检测信息显示在OLED显示屏上
- 自动模式下定时开关窗帘,并根据外界情况判断是否关窗
- 手动模式可手动按键控制窗帘开关
- 按键可设置时间与各参数阈值
- 可连接蓝牙APP远程查看信息与控制下发
2.主要器件
- STM32F103C8T6单片机
- OLED 屏幕
- DHT11温湿度传感器
- MQ135空气质量传感器
- 光电红外传感器
- 雨量传感器
- 步进电机
- 有源蜂鸣器
- LED灯
- BT04A蓝牙模块
三、原理图设计
四、PCB硬件设计
PCB图
五、程序设计
cpp
#include "sys.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "math.h"
#include "delay.h"
#include "gpio.h"
#include "key.h"
#include "oled.h"
#include "usart.h"
#include "adc.h"
#include "dht11.h"
#include "motor_bujin.h"
#include "rtc.h"
/****
******* 主函数
*****/
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //配置中断优先分组
Delay_Init(); //延时初始化
Gpio_Init(); //IO初始化
Key_Init(); //按键初始化
Oled_Init(); //OLED初始化
Oled_Clear_All(); //清屏
Usart1_Init(9600); //串口1初始化
Adc_Init(); //ADC初始化
while(RTC_Init()); //RTC初始化
Step_Motor_Init(); //步进电机初始化
while(DHT11_Init()); //DHT11初始化
while(1)
{
Key_function(); //按键函数
Monitor_function(); //监测函数
Display_function(); //显示函数
Manage_function(); //处理函数
time_num++; //计时变量+1
Delay_ms(10);
if(time_num %10 == 0)
LED_SYS = ~LED_SYS;
if(time_num >= 5000)
{
time_num = 0;
}
}
}
六、实验效果
七、资料内容