• 方案介绍
  • 相关推荐
申请入驻 产业图谱

基于STM32物联网WiFi火灾烟雾自动灭火报警器Proteus仿真+代码+报告+视频

2小时前
179
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

本设计包含proteus仿真+程序代码+设计报告+讲解视频

一、开发环境

仿真图:proteus 8.17

程序编译器:keil 5

编程语言:C语言

设计编号:C0135

二、主要功能

  1. 烟雾采集传感器选用MQ-2监测环境烟雾浓度;
  2. 采用火焰传感器监测环境火光;
  3. 温湿度采集使用DHT11数字传感器;
  4. 显示设备使用OLED,可以在屏幕上显示实时烟雾浓度值、温湿度值,火焰检测状态、安防监测状态以及报警阈值等信息;
  5. 报警模块则采用蜂鸣器和LED灯组成,烟雾浓度超过阈值、温度超过阈值,监测到火光,设防状态下监测到人体红外信号触发报警。蜂鸣器会鸣叫报警,灯光闪烁;
  6. 设计采用3个按键作为操作输入设备,可以用来调整温度、烟雾报警阈值和关报警器;
  7. 烟雾浓度超过阈值、温度超过阈值,监测到火光会触发继电器工作,模拟洒水灭火;

8.通过WIFI模块ESP01S将数据实时上传至物联网云平台,可以通过手机APP查看温湿度、烟雾检测值、火焰状态、设防状态等;Proteus仿真没有ESP-01元器件,使用串口模拟。

主要硬件设备:STM32F103C8T6、MQ-2烟雾传感器、火焰传感器、ESP-01S、OLED显示、继电器、DHT11温湿度

资料下载链接:

KEY_C0135 STM32物联网WiFi火灾烟雾自动灭火报警器

链接: https://pan.baidu.com/s/1TN4Mcx-oDv1gaRBRsNQgUg?pwd=wgr3

提取码: wgr3

以下为本设计资料展示:

三、仿真设计

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

四、程序代码

程序是用keil5 mdk版本打开的,如果打开有问题,核实下keil的版本。程序有注释可以结合讲解视频理解。

/**************************************************************	函数名称:	main**	函数功能:	**	入口参数:	无**	返回参数:	0**	说明:		*************************************************************/int main(void){    DHT11_Data_TypeDef DHT11_Data;			unsigned short timeCount = 0;	//发送间隔变量	unsigned short set_timeCount = 0;	//设置状态刷新状态	unsigned char *dataPtr = NULL;		uint8_t smog_lock=0;//	uint8_t security_lock=0;		Hardware_Init();				//初始化外围硬件	Fan_Set(FAN_OFF);	Beep_Set(BEEP_OFF);	Relay_Set(RELAY_OFF);#if 1		ESP8266_Init();					//初始化ESP8266//	UsartPrintf(USART_DEBUG, "Connect MQTTs Server...rn");	OLED_Clear(); OLED_ShowString(0,0,"Connect MQTTs Server...",16);	while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT"))		DelayXms(500);//	UsartPrintf(USART_DEBUG, "Connect MQTT Server Successrn");	OLED_ShowString(0,4,"Connect MQTT Server Success",16); DelayXms(500);	OLED_Clear(); OLED_ShowString(0,0,"Device login ...",16);	while(OneNet_DevLink())			//接入OneNET	{		ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT");		DelayXms(500);	}#endif			UsartPrintf(USART_DEBUG, "Connect MQTT Server Successrn");	OneNET_Subscribe();		Display_Init();	Led_Set(LED_OFF);	SystemCoreClockUpdate();	UsartPrintf(USART_DEBUG, "system_clock:%lu Hz (%.2f MHz)rn", SystemCoreClock, SystemCoreClock / 1000000.0);//	temp = DS18B20_GetTemperture();//读取温度传感器	smog=MQ2_GetData_PPM();		//读取烟雾传感器	Fire_read();				//读取火焰传感器	temp=humi=25;//初始化	while(1)	{		if(++timeCount >= 50&&set_sta==0)									//发送间隔2.5s		{//			temp = DS18B20_GetTemperture();		 // 		 DHT11_Read_Data(&temp,&humi);		 if(DHT11_Read_TempAndHumidity(&DHT11_Data) == SUCCESS) {                humi = DHT11_Data.humi_int;                temp = DHT11_Data.temp_int;            }					UsartPrintf(USART_DEBUG, "temp=%d--humi=%drn",temp,humi);						Fire_read();//读取火焰传感器			Hc_sr501_read();//读取人体红外热释电传感器			UsartPrintf(USART_DEBUG, "Security_Status=%drn",Security_Status);			  smog=MQ2_GetData_PPM();			if(smog>9999){smog=9999;}		    UsartPrintf(USART_DEBUG, "VOL----%.2frn",smog);						OneNet_SendData();									//发送数据					timeCount = 0;			ESP8266_Clear();				  		 	if(Status_Change){				Status_Change=0;				Display_Init();			}		}		if(DHT11_Read_TempAndHumidity(&DHT11_Data) == SUCCESS) {			   humi = DHT11_Data.humi_int;			   temp = DHT11_Data.temp_int;		   }		Fire_read();//读取火焰传感器		Hc_sr501_read();//读取人体红外热释电传感器			smog=MQ2_GetData_PPM();	    if(smog>9999){smog=9999;}		dataPtr = ESP8266_GetIPD(0);		if(dataPtr != NULL){			OneNet_RevPro(dataPtr);			}		if(set_sta){			if(key_ctrl){				OLED_Clear();				key_ctrl=0;			    UsartPrintf(USART_DEBUG, "OLED_Clearrn");			}		}else{				if(key_ctrl){				Display_Init();				key_ctrl=0;				UsartPrintf(USART_DEBUG, "Display_Initrn");				}				}				Refresh_Data();				/***利用smog_lock进行自锁操作,避免重复无效控制,超阈值后,		只执行一次,实现蜂鸣器可以被手动按停,		直到降到阈值以下,才解锁,进入下轮阈值检测***/		if(((smog>smog_th)||(Fire_Status==0)||(temp>temp_th))&& smog_lock==0)		{			smog_lock = 1;			Fan_Set(FAN_ON);			Beep_Set(BEEP_ON);			Relay_Set(RELAY_ON);//			Led_Set(LED_ON);					}		if(((smog<smog_th)&&(Fire_Status!=0)&&(temp<temp_th))&&smog_lock==1){			smog_lock=0;			Fan_Set(FAN_OFF);			Beep_Set(BEEP_OFF);			Relay_Set(RELAY_OFF);//			Led_Set(LED_OFF);		}				if(set_arm&&Security_Status){//安防检测单独做蜂鸣器动作			Beep_Set(BEEP_ON);			Led_Set(LED_ON);		}				if(smog_lock && (timeCount>25)){			Led_Set(LED_ON);		}else{			Led_Set(LED_OFF);		}				DelayMs(10);		}}

程序流程图:

五、设计说明书

16250字,内容包括硬件设计、软件设计、结论等。

六、资料清单&下载链接

资料下载链接:

链接: https://pan.baidu.com/s/1TN4Mcx-oDv1gaRBRsNQgUg?pwd=wgr3

提取码: wgr3

相关推荐