基于蓝牙的stm32智能火灾烟雾报警系统设计
一.硬件方案
主要由STM32F103C8T6单片机最小系统板+LCD1602显示屏模块+MQ-2烟雾传感器+火焰检测模块+温度传感器+水泵电路+按键电路+蜂鸣器报警电路+蓝牙电路+电源开关构成;
仿真图如下:
二.设计功能
- 具有温度采集、烟雾采集、火焰信号采集功能;
- 显示屏显示当前系统信息,按键设置温度、烟雾监测阈值,当超过阈值时或有火焰信号时会发生声光报警,自动或者手动开启灭火(水泵);
- 按键功能:按键1:模式切换;按键2:设置键;按键3:自加一;按键4:自减一/开关水泵;
- 蓝牙通信连接上位机APP,远程显示信息,接收报警,远程控制灭火;
三.软件设计
主程序源码
int main(void){vu8 key=0; delay_init(); //延时函数初始化 LED_Init(); //初始化与LED连接的硬件接口BEEP_Init(); //初始化蜂鸣器端口FAN_Init();KEY_Init(); //初始化与按键连接的硬件接口RELAY_Init();uart_init(9600); //初始化串口1TIM2_Int_Init(999,7199);//10Khz的计数频率Adc_Init();Lcd_GPIO_init(); //初始化lcd引脚Lcd_Init(); //初始化lcd屏幕Lcd_Puts(0,0,(unsigned char *)init_lcd1); //显示Lcd_Puts(0,1,(unsigned char *)init_lcd2); //显示BEEP=1;RELAY=0;while(1){key=KEY_Scan(1); //得到键值KEY_Handle(key); //按键处理函数APP_Handle(revData); //APP指令处理函数revData=0;if(FIRE==0) //火焰检测{fire_flag=6;}if(T_100ms>=10){T_100ms = 0;if(refresh==1)APP_refresh();if(fire_flag>0)fire_flag--;//采集烟雾浓度值ALValue = (u16)(Get_Adc(9)/3); if(ALValue>999)ALValue = 999;if (ALValue > K_ZERO) ALValue = ALValue - K_ZERO; //首先减去零点漂移,一般是130mVelseALValue = 0; temperature=DS18B20_Get_Temp(); //获取温度temp=((u16)temperature);if(ALValue>WARNING) //报警阈值判断{smoke_flag =1;printf("当前烟雾浓度超标!!\r\n");}else if(temp>T_WARNING) {smoke_flag =2;printf("当前温度超标!!\r\n");}else if(fire_flag>0) {smoke_flag =3;printf("当前有火焰!!\r\n");}else{smoke_flag =0;}if(mode==AUTO) //自动模式下,自动开关水泵{if(smoke_flag>0){RELAY=1; //开启水泵}else{RELAY=0; //关闭水泵}}if(smoke_flag>0) //蜂鸣器报警判断{if(BEEP_state==0)BEEP=1;elseBEEP=0;}elseBEEP=1;if(set==0) //set为0,说明现在不是设置状态Display_1602(); //显示AD数值和报警值}}
}
链接:https://pan.baidu.com/s/1OXviDxr7wY28B81c2WVTWQ 提取码: s37p