一.系统概述
本次设计的系统是以 STM32 单片机作为核心控制器,可以通过控制红外传感器识别是否有人靠近衣柜,如果有人靠近,则控制继电器打开,模拟衣柜门打开,同时控制灯亮,当人离开后,则控制继电器关闭,模拟衣柜门关闭同时灯灭。设计有衣柜门控制按钮,可以通过按钮控制衣柜门的打开和关闭。设计有灯光控制按钮,可以控制灯光的亮灭。设计有温湿度采集的功能们可以将采集到的温湿度值在显示屏上进行显示,可以通过按钮对温湿度阈值进行设定,当湿度低于阀值,则控制加湿器启动,当高于值则控制加湿器关闭。设计有加湿器控制按钮可以控制加湿器的启动和关闭。设计有烘干控制按钮,可以通过按钮控制烘干器启动和关闭。采集到的温度、湿度值可以在显示屏上进行显示。
二.电路设计
电路图采用Altium Designer进行设计:
1. 通过STM32F103C8T6单片机作为系统主控,最小系统电路是整个电路的核心;
2. 通过DHT11进行温湿度检测,并通过one-wire总线与单片机的GPIO脚进行连接;
3. 通过光电开关进行人体检测,模块的数据输出脚与单片机的GPIO口直接连接;
4. 通过0.96寸的OLED12864进行数据显示,采用IIC总线的形式与单片机进行通信;
5. 通过继电器模拟烘干器打开,并将继电器的数据输出脚与单片机的GPIO脚进行连接;
6. 通过继电器模拟衣柜打开,并将继电器的数据输出脚与单片机的GPIO脚进行连接;
7. 通过继电器模拟加湿器打开,并将继电器的数据输出脚与单片机的GPIO脚进行连接。
三.程序设计
#include "sys.h"
#include "delay.h"
#include "adc.h"
#include "math.h"
#include "key.h"
#include "OLED_I2C.h"
#include "Beep_Led_Relay.h"
#include "Control_Report_To_Police.h"
#include "ds18b20.h"
#include "ds1302.h"
#include "PWM.h"
/************************************************
版权:小常硬件
公众号:微信搜索“小常硬件“在公众号免费下载相关资料
************************************************/
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
delay_init(); //延时函数初始化
TIM4_Init(300,7200);
KEY1_Init();
OLED_Init(); //PB6 PB7
while(DHT11_Init()); //PA12
Adc2_Init();//PB0光照
Adc_Init1();//PB1有害气体
HX711_InIt();Get_Maopi();
// Servo_Init();//Servo_SetAngle(180);
// Servo2_Init();Servo2_SetAngle(1);
Servor_GPIO_Config_Time2_Init();
Led0_init(); Led0_0=1; //PA4补光
Relay_init(); Relay_1=0;Relay_2=0;Relay_3=0;Relay_4=0;// PA12加热 PA11降温风扇 PA10除湿 PA9通风风扇
OLED_CLS();
OLED_ShowCN(0,0,0);OLED_ShowCN(16,0,2); OLED_ShowCN(64,0,1);OLED_ShowCN(80,0,2);
OLED_ShowCN(0,2,10);OLED_ShowCN(16,2,11);OLED_ShowCN(64,2,5);OLED_ShowCN(80,2,6);
OLED_ShowCN(0,4,3);OLED_ShowCN(16,4,4);OLED_ShowCN(64,4,7);
ALi_ESP8266_GPIO_Init(); //PA2 PA3 PA8
MQTT_Buff_Init();
AliIoT_Parameter_Init();
while(1)
{
OLED_Display_Cotrol(); //显示控制函数
}
}