【毕业设计】_基于STM32单片机的火灾防盗(原理图+源码)

一. 系统概述

本设计使用STM32单片机作为核心控制器,系统集成了烟雾传感器和火焰传感器,用于数据采集。此外,还通过红外传感器监测是否有人。当系统检测到火焰时,会触发短信报警,提醒火灾危险。如果红外传感器识别到有人且输入密码错误,则会发送短信警报以通知有人闯入。系统还包括密码输入功能。

在这里插入图片描述

二. 仿真功能描述

  1. 系统能够监测烟雾浓度、火焰存在情况以及人员检测。一旦检测到火灾或有人闯入,系统将通过GSM模块进行远程提醒。密码输入功能通过矩阵键盘实现,如果系统检测到有人且密码错误,则视为闯入。

在这里插入图片描述

  1. 通过调节烟雾传感器上的滑动变阻器,可以调整烟雾的模拟输出量,烟雾浓度的变化将在显示屏上实时反映出来。

在这里插入图片描述

  1. 通过拨动人体检测开关,可以模拟检测到人的情况。显示屏将显示相应的检测结果,无论是检测到人还是未检测到人。

在这里插入图片描述

  1. 切换火焰传感器的开关以模拟火焰检测,系统会在显示屏上提醒并通过GSM模块发送短信警报。虚拟串口助手用于模拟短信的接收过程。

在这里插入图片描述

虚拟串口助手的链接:

在这里插入图片描述

  1. 输入正确的密码“12345”系统会显示“yes”。如果输入错误,系统将显示“error”。如果此时系统检测到有人且密码错误,还会触发有人闯入的警报。

在这里插入图片描述

输入密码错误的情况会显示“error”,并且如果系统检测到有人且密码输入不正确,系统会发出闯入警报。

在这里插入图片描述

在这里插入图片描述

三.程序设计

#include <main.h>
 #include "adc2.h"
//
u8 Key;//按键检测
u8 Rxdat;
u8 dat[3];
u8 AIN0;
u8 beepflag;
u8 ack=1;
//


//
void Init_Test(void);
void Display(void);
//

int main(void)
{	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级

	OLED_Init();            						//PB6 	PB7

	Key_Init();
	Adc2_Init();
//	Sim900A_Uart1_Init();
//	Sim900A_GSM_Uart1_Send_Message();
	Usart1_Init(9600);
	PCF8591_Init();
	
	OLED_ShowString(1,1,"Smo:");OLED_ShowString(1,8,"fla:");//OLED_ShowString(1,1,"have");OLED_ShowString(1,8,"not");
	
	OLED_ShowString(4,1,"Enter:");
	while(1)
	{
		KeyXY_Scan(&key,&Password);
		if(key!=0) 
		{
			input[inputflag]=Password;
			
			if(inputflag==0){sprintf((char*)disbuf,"%d",input[inputflag]);OLED_ShowString(4,7,disbuf);}
			if(inputflag==1){sprintf((char*)disbuf,"%d",input[inputflag]);OLED_ShowString(4,8,disbuf);}
			if(inputflag==2){sprintf((char*)disbuf,"%d",input[inputflag]);OLED_ShowString(4,9,disbuf);}
			if(inputflag==3){sprintf((char*)disbuf,"%d",input[inputflag]);OLED_ShowString(4,10,disbuf);}
			if(inputflag==4){sprintf((char*)disbuf,"%d",input[inputflag]);OLED_ShowString(4,11,disbuf);}
			if(inputflag==5){sprintf((char*)disbuf,"%d",input[inputflag]);OLED_ShowString(4,12,disbuf);}
			
		
			key=0;Password=0;
			inputflag++;
			
			if(inputflag==5)
			{
				for(i=0;i<5;i++)
				{
					if(input[i] == password[i])	YES++;
				}
				if(YES==5) 
				{ 	
					OLED_ShowString(3,1,"Yes");
					delay_ms(1000);
					OLED_ShowString(3,1,"                ");
					YES=0;
					OLED_ShowString(4,7,"     ");
				}
				else if(YES !=6  )//密碼錯誤
				{
					
					OLED_ShowString(3,1,"                ");
					OLED_ShowString(3,1,"Error");
					
					delay_ms(1000);
					OLED_ShowString(4,7,"     ");
					
					if(ren==0)
					{						
						OLED_ShowString(3,1,"                ");
						OLED_ShowString(3,1,"Send a message");
						
						delay_ms(1000);
						//Sim900A_GSM_Uart1_Send_Message();//
						printf("有人闯入");
						
						OLED_ShowString(3,1,"                ");
						OLED_ShowString(3,1,"Send Ok");
						
						delay_ms(1000);
					}

					
					OLED_ShowString(3,1,"                ");
					YES=0;
				}
				OLED_ShowString(3,1,"                ");
				inputflag=0;
			}
		}
		

24-32f-08

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值