文章目录
- 一、前言
- 二、项目功能简介
- 三、PCB设计
- 四、原理图设计
- 五、程序设计
- 六、包含内容
- 七、资料分享
一、前言
实物项目成品: 
仿真项目成品: 
哔哩哔哩开源视频链接(复制浏览器打开): https://www.bilibili.com/video/BV1fD4k6pEsx/?vd_source=10da4d04d580bd6b34f7298120737c50
(资料分享见文末)
二、项目功能简介
功能介绍:
三、PCB设计

四、原理图设计

五、程序设计
代码如下():
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "timer.h"
#include "usart.h"
#include "usart3.h"
#include "OLED_I2C.h"
#include "math.h"
#include "ds1302.h"
#include "dht11.h"
#include "bjdj.h"
#include "adc.h"
#include "stdio.h"
#define Num_i 256 //电机步数
u16 Flag_adc=0;
u8 Num_wendu1,Num_wendu2,Num_shidu1,Num_shidu2;
extern u8 Flag_caidan;
extern u8 Flag_dakai,dakai,Flag_bankai,bankai,Flag_zhanting;
extern u8st[50];
int MQ_res = 0;
int main(void)
{
u16 ii=0;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600); //语音模块串口初始化
usart3_init(9600); //蓝牙使用
DHT11_Init();
Adc_Init();
Moto_Init();
ds1302_gpio_init();
//ds1032_init();//时间设置
ds1032_read_realTime(); //读取实时数据
KEY_Init();
MQ_Init();
LED_Init();
OLED_Init(); //屏幕初始化
TIM3_Int_Init(719,7199);
printf("AF:30");//声音调到31档 最大
delay_ms(100);
delay_ms(1000);
printf("A7:00003");//欢迎使用
delay_ms(1000);
OLED_CLS();
while(1)
{
if(Flag_caidan==1)//自动模式
{
delay_ms(500);
Flag_adc=Get_Adc_Average(0,10);
delay_ms(500);
if(Flag_adc>1000&&Flag_dakai==0)
{
printf("A7:00001");//打开
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorcw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=1;
dakai=1;
}
if(Flag_adc<1000&&Flag_dakai==1)
{
printf("A7:00002");//关闭
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorccw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=0;
dakai=0;
}
// MQ_res = MQ_Scan();
if(MQ==0)
{
LED0 = !LED0;
delay_ms(100);
LED0 = !LED0;
delay_ms(100);
}
}
if(Flag_caidan==2)//手动模式
{
if(dakai==1&&Flag_dakai==0)
{
printf("A7:00006");//打开
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorcw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=1;
}
if(dakai==0&&Flag_dakai==1)
{
printf("A7:00007");//关闭
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorccw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=0;
}
}
if(Flag_caidan==3)//定时模式
{
if(TimeRAM.kai==1&&Flag_dakai==0)
{
if(TimeRAM.hour_kai==TimeData.hour&&TimeRAM.minute_kai==TimeData.minute)
{
printf("A7:00006");//打开
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorcw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=1;
}
}
if(TimeRAM.guan==1&&Flag_dakai==1)
{
if(TimeRAM.hour_guan==TimeData.hour&&TimeRAM.minute_guan==TimeData.minute)
{
printf("A7:00007");//关闭
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorccw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=0;
}
}
}
if(Flag_caidan==4)//遥控模式
{
if(dakai==1&&Flag_dakai==0)
{
printf("A7:00006");//打开
TIM_Cmd(TIM3,DISABLE);
ii=0;
for(ii=0;ii<Num_i;ii++)
{
Motorcw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=1;
}
if(dakai==0&&Flag_dakai==1)
{
printf("A7:00007");//关闭
TIM_Cmd(TIM3,DISABLE);
for(ii=0;ii<Num_i;ii++)
{
Motorccw_angle(1,3);
MotorStop();
}
TIM_Cmd(TIM3, ENABLE);
Flag_dakai=0;
}
}
}
}
六、包含内容

七、资料分享
资料获取:请查看主页介绍搜索或观看开源视频获取



![[开源]基于STM32单片机WIFI智能窗户系统 Onenet云平台设计HK-003-171主机测评](https://www.171host.com/wp-content/uploads/2026/09/20260903070616-6a991c6823886-220x150.jpg)