一:功能介绍

1、实物组成部分:采用stm32f103c8t6核心板+火焰传感器+DHT11温湿度+MQ2烟雾传感器+蜂鸣器+继电器风扇+继电器水泵+OLED显示屏+独立按键+蓝牙HC05模块;

2、采用DHT11传感器采集温湿度,OLED显示;

3、采用MQ2传感器检测烟雾浓度,OLED显示;

4、可以通过按键设置手动模式和自动模式,自动模式下可以设置烟雾浓度阈值、温湿度阈值;

5、自动模式下,当温度或者湿度或者烟雾浓度大于设置阈值(按键设置),风扇自动打开进行排气;当检测到有明火,水泵自动打开进行灭火;

6、手动模式下,可以通过按键打开和关闭风扇和水泵;

7、可以通过蓝牙模块上传相关数据;

二:实物演示视频

277-基于stm32单片机烟雾火灾检测自动灭火装置(程序+原理图+元器件清单)

三:程序代码预览(采用keil5编写,使用的C语言,程序有中文注释,新手容易看懂)

特别注意:下载资料包以后一定要先解压! !!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

图片

图片

    int main(void){unsigned char *dataPtr = NULL;unsigned short timeCount = 30;	//发送间隔变量uint8_t status;long int cardnum=0;u16 adcx;int temp,buf=0,set=0,wenduset=30,shiduset=70,mq2set=100;Hardware_Init();				//初始化外围硬件OLED_Init();OLED_ColorTurn(0);OLED_DisplayTurn(0);	OLED_ShowString(0,0," MQ2:",16); 	OLED_ShowString(70,0,"PPM",16);OLED_ShowString(0,16,"TEMP:",16);   OLED_ShowString(70,16,"C",16); OLED_ShowString(0,32,"HUMI:",16);	  OLED_ShowString(70,32,"%",16);OLED_ShowString(0,48," HUO:",16);OLED_Refresh();KEY_Init();Adc_Init();	LED_Init();Q1=Q2=BEEP=1;while(1)	{	DHT11_Read_TempAndHumidity ( & DHT11_Data );				adcx=Get_Adc_Average(ADC_Channel_0,10);		temp=(float)adcx/4096*330-150;if(temp<0) temp=0;if(KEY4==0)//自动/手动设置		{						buf++;if(buf>1) buf=0;while(KEY4!=1);		}if(set==0)  		{OLED_ShowString(120,0,"<",16);OLED_ShowString(120,16," ",16);OLED_ShowString(120,32," ",16);		}if(set==1)  		{OLED_ShowString(120,0," ",16);OLED_ShowString(120,16,"<",16);OLED_ShowString(120,32," ",16);		}if(set==2)  		{OLED_ShowString(120,0," ",16);OLED_ShowString(120,16," ",16);OLED_ShowString(120,32,"<",16);		}if(buf==0)//自动模式下		{OLED_ShowString(100,48,"zd",16);if(KEY3==0)			{				set++;if(set>2) set=0;			}if(KEY2==0&&set==1)//温度阈值20-99可调			{				wenduset++;if(wenduset>99) wenduset=99;			}if(KEY1==0&&set==1)//温度阈值20-99可调			{				wenduset--;if(wenduset<20) wenduset=20;			}if(KEY2==0&&set==2)//湿度阈值50-99可调			{				shiduset++;if(shiduset>99) shiduset=99;			}if(KEY1==0&&set==2)//湿度阈值50-99可调			{				shiduset--;if(shiduset<50) shiduset=50;			}if(KEY2==0&&set==0)//MQ2阈值50-200可调			{				mq2set++;if(mq2set>200) mq2set=200;			}if(KEY1==0&&set==0)//MQ2阈值50-200可调			{				mq2set--;if(mq2set<50) mq2set=50;			}if(DHT11_Data .temp_int>wenduset-1||DHT11_Data .humi_int>shiduset||temp>mq2set) Q2=0;else Q2=1;if(HUO==0)//判断明火			{				Q1=0;OLED_ShowString(45,48,"YES",16);printf("HUO=YES\r\n");			}else 			{				Q1=1;OLED_ShowString(45,48," NO",16);	printf("HUO=NO\r\n");							}		}if(buf==1)//手动模式下		{OLED_ShowString(100,48,"sd",16);if(KEY1==0)			{				Q1=~Q1;while(KEY1!=1);			}if(KEY2==0)			{				Q2=~Q2;while(KEY2!=1);			}		if(HUO==0)//判断明火			{OLED_ShowString(45,48,"YES",16);printf("HUO=YES\r\n");			}else 			{OLED_ShowString(45,48," NO",16);	printf("HUO=NO\r\n");							}					}if(temp>mq2set)  printf("MQ2 alarm\r\n");OLED_ShowNum(40,0,temp,3,16); OLED_ShowNum(40,16,DHT11_Data .temp_int,2,16);    OLED_ShowNum(95,0,mq2set,3,16);		 OLED_ShowString(56,16,".",16);OLED_ShowNum(60,16,DHT11_Data .temp_deci,1,16);  	OLED_ShowNum(95,16,wenduset,2,16);OLED_ShowNum(40,32,DHT11_Data .humi_int,2,16);    OLED_ShowNum(95,32,shiduset,2,16);OLED_Refresh();printf("MQ2=%d\r\n",temp); delay_ms(50);	    printf("wendu=%d.%d C\r\n",DHT11_Data .temp_int,DHT11_Data .temp_deci);   //蓝牙上传数据delay_ms(50);	printf("shidu=%d \r\n",DHT11_Data .humi_int); delay_ms(50);	}}

    四:原理图展示(源文件采用Altium Designer打开,公众号有安装包)

    图片

    图片

    五:实物图展示

    图片

    图片

    六:元器件清单展示

    图片

    7:资料清单展示(文件中包含的相关资料)

    图片

    配套实物资料下载

    Logo

    北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

    更多推荐