一.系统概述
设计的系统构架以STM32微控制单元为核心,配备烟雾传感器和火焰传感器用于实时数据采集。系统同时集成红外监测功能,用以识别区域内的活动情况。一旦检测到火灾迹象或其他安全威胁,系统将自动通过GSM短信服务通知用户。密码验证功能亦内置于系统中,确保解锁潜在的环境威胁所需的安全性。
二.仿真综述
- 该装置能够有效检测烟雾浓度以及火焰存在与否,同时进行人体存在检测。若检测到火灾或入侵者,系统将自动通过GSM网络发送远程警报。此外,该系统设有密码输入矩阵键盘,以确保只有正确输入密码的用户才能获准进入。
- 通过调节烟雾传感器的滑动电阻可调整烟雾模拟输出量,监控人员可通过可视化屏幕即时了解烟雾浓度的变化。
- 通过激活人体检测开关,系统模拟进入活动状态或静止状态,对应屏幕显示也会适时更新。
- 人工拨动火焰传感器开关模拟火灾发生,随即在屏幕上提醒火灾警报,并发送短信至GSM网络,由虚拟串口助手模拟接收短信的过程。
虚拟串口助手连接方式:
- 正确输入密码12345将显示确认信号。
输入错误的密码将触发错误指示,若同时检测到异常活动,系统将发起入侵警告。
三.程序设计
#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