一、功能简介

项目名:基于单片机的智能家居安防系统设计
项目编号:dz-768
单片机类型:STM32F103C8T6
具体功能:
1、通过光电传感器E18-D80NK监测是否有人翻窗,如果有人翻窗户进行声光报警提醒;
2、通过MQ-2监测环境中的烟雾,监测到烟雾大于设置的最大值进行声光报警;
3、通过指纹模块AS608进行开锁,指纹对比正确进行开锁,5秒自动关闭,对比失败超过三次进行声光报警;
4、通过按键可以设置烟雾最大值,另外可添加删除指纹;
5、通过OLED显示监测的测量值和设置值;
6、监测到有人翻窗户、烟雾大于最大值、指纹对比错误三次进行通过4G模块AIR780进行短信的发送提醒;
 

二、系统框图设计

绘制软件:VISIO
此次设计是基于STM32F103C8T6单片机的智能家具安防系统设计;该设计主要可以分为三部分:输入、输出和中控。中控部分采用STM32F103C8T6单片机作为主控芯片,主要是对输入进行处理然后控制输出;
输入又可以分为五部分:第一部分是光电传感器监测是否有人翻窗;第二部分是MQ-2烟雾检测模块,监测环境中的烟雾;第三部分是指纹模块进行开锁;第四部分是独立按键,通过按键模块可以进行切换界面、添加删除指纹;第五部分是供电电路,主要是用来对整个系统进行供电;
输出主要可以分为四个部分:第一部分是显示部分,显示当前光电检测是否有人、烟雾值、指纹的状态;第二部分是继电器模块,通过继电器模块模拟锁的开关;第三个部分是声光报警模块,当指纹错误三次进行报警;第四部分是4G模块,4G模块还可以发送短信、当烟雾过高、或有人翻窗、或指纹错误过高进行发送短信。

三、51实物图

单片机型号:STM32F103C8T6

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

 四、原理图

软件版本:AD2013

电路连线方式:网络标号连线方式

注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

 五、PCB图

由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。

两层板,上下覆铜接地。

六、部分程序展示

软件版本:keil5

逻辑程序和驱动程序分开,分布于main.c和其他.c文件

/**********************************
函数名:处理函数
传参值:无
返回值:无
**********************************/
void Manage_Function(void)
{
	if(display_num == 0)				//测量界面
	{
		if(GD == 0)																		//当光电传感器检测到有人时打开声光报警,发送短信“有人翻窗”
		{
			flag_beep1 = 1;
			
			if(flag_en1 == 0)
			{
				Air_4G_Send_Msg_Chinese(22,"0001000D91688157150051F900080867094EBA7FFB7A97");
				flag_en1 = 1;
			}
		}
		else
		{
			flag_beep1 = 0;
			flag_en1 = 0;
		}
		
		if(smog_value > smog_max)											//当烟雾大于最大值打开声光报警,发送短信“烟雾过高”
		{		
			flag_beep2 = 1;
			
			if(flag_en2 == 0)
			{
				Air_4G_Send_Msg_Chinese(22,"0001000D91688157150051F900080870DF96FE8FC79AD8");
				flag_en2 = 1;
			}
		}
		else
		{
			flag_beep2 = 0;
			flag_en2 = 0;
		}	

		if(fingerprint_step == 1)												//指纹匹配成功,开锁
		{
			flag_zw = 0;
			flag_ks = 1;
			flag_beep3 = 0;
		}
		else if(fingerprint_step == 2)									//指纹匹配失败,不开锁
		{
			if(flag_finger == 0)
			{
				flag_finger = 1;
				flag_zw++;
				if(flag_zw > 3)
				{
					flag_beep3 = 1;
					if(flag_en3 == 0)													//当指纹检测三次以上都失败发送短信“指纹错误过多”
					{
						Air_4G_Send_Msg_Chinese(26,"0001000D91688157150051F900080C63077EB995198BEF8FC7591A");
						flag_en3 = 1;
						flag_zw = 0;
					}				
				}
			}
		}
		else																						//否则,关锁
		{
			flag_finger = 0;
			flag_en3 = 0;
		}	

		if(flag_ks == 1)																//当开锁标志位为1时打开门锁并计时五秒,五秒到达关门
		{
			RELAY_MS = 1;
			flag_start_5s = 1;	

			if(flag_end_5s == 1)
			{
				RELAY_MS = 0;
				flag_ks = 0;
				flag_start_5s = 0;
			}
		}
		
		if(flag_beep3 == 1)														 	//当声光报警3标志位为1开始声光报警计时十秒,十秒后结束报警
		{
			flag_start_10s = 1;	
			
			if(flag_end_10s == 0)
			{
				ALERT = 1;
			}
			else
			{
				ALERT= 0;
				flag_start_10s = 0;	
				flag_beep3 = 0;
			}		
		}
		else
		{
			flag_start_10s = 0;	
			
			if(flag_beep1 == 1 || flag_beep2 == 1)						//当三个声光报警标志位任意一个为1时开启声光报警
			{
				if(time_num % 10 == 0)	
				{
					ALERT = !ALERT;
				}
			}
			else										//否则关闭声光报警
			{
				ALERT = 0;
			}
		}
	}
	else												//设置界面,取消声光报警,关门
	{
		flag_beep1 = 0;
		flag_beep2 = 0;
		flag_beep3 = 0;
		flag_ks = 0;
	}
}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐