一.系统概述
本次式设计的系统是以 STM32 单片机作为核心控制器,可以控制烟雾传感器、火焰传感器对相关数据进行采集,可以通过红外对是否有人进行监测,当监测到火焰会控制短信提醒火灾危险,当红外识别到人且输入密码错误的时候会短信提醒有人闯入。需要有一个密码输入的功能。
二.仿真概述
1.系统内可以检测烟雾浓度、检测是否有火焰、检测是否有人,检测到火灾发生且有人闯入就会通过GSM进行远程提醒。使用矩阵键盘来输入密码的,当检测到人且密码输入不正确就会认为是有人闯入。
2. 调节烟雾传感器的滑动变阻器可以调节烟雾的模拟输出量,烟雾的改变可以在显示端体现。
3. 拨动人体检测的开关即模拟检测到人和检测不到人,在显示屏端也会相应的进行显示。
4. 拨动火焰传感器的开关代表检测到火焰,此时在显示屏端会进行提醒并且会通过GSM发短信进行提醒,这里采用虚拟串口助手模拟短信的接收。
虚拟串口助手的链接:
https://serial.keysking.com/
5. 输入正确的密码12345就会显示yes
输入错就会显示error,并且如果检测到人且输入错就会提醒有人闯入
三.程序设计
#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; } }
全部0条评论
快来发表一下你的评论吧 !