基于STM32单片机的火灾防盗系统设计

描述

一.系统概

本次式设计的系统是以 STM32 单片机作为核心控制器,可以控制烟雾传感器、火焰传感器对相关数据进行采集,可以通过红外对是否有人进行监测,当监测到火焰会控制短信提醒火灾危险,当红外识别到人且输入密码错误的时候会短信提醒有人闯入。需要有一个密码输入的功能。

STM32

 

二.仿真概述

1.系统内可以检测烟雾浓度、检测是否有火焰、检测是否有人,检测到火灾发生且有人闯入就会通过GSM进行远程提醒。使用矩阵键盘来输入密码的,当检测到人且密码输入不正确就会认为是有人闯入。

STM32

 2. 调节烟雾传感器的滑动变阻器可以调节烟雾的模拟输出量,烟雾的改变可以在显示端体现。

STM32

3. 拨动人体检测的开关即模拟检测到人和检测不到人,在显示屏端也会相应的进行显示。

STM32

4. 拨动火焰传感器的开关代表检测到火焰,此时在显示屏端会进行提醒并且会通过GSM发短信进行提醒,这里采用虚拟串口助手模拟短信的接收。

STM32

虚拟串口助手的链接:

 

https://serial.keysking.com/

 

STM32

5.  输入正确的密码12345就会显示yes

STM32

输入错就会显示error,并且如果检测到人且输入错就会提醒有人闯入

STM32

STM32

 

三.程序设计

 

#include 
 #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;
      }
    }

 

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分