244-基于stm32单片机厨房安全烟雾煤气温湿度检测报警系统(源程序+原理图+元件清单)

   一:功能介绍:

1、系统组成:采用stm32f103c8t6核心板+DHT11温湿度+MQ2烟雾模块+MQ4可燃气体模块+LCD1602显示屏+蜂鸣器
2、通过DHT11传感器采集温湿度,显示到LCD1602上面;
3、通过MQ2传感器检测烟雾浓度,显示到LCD1602上面;
4、通过MQ4传感器检测可燃气体浓度,显示到LCD1602上面;
5、当烟雾浓度或者可燃气体浓度大于50(阈值程序可调),蜂鸣器报警提醒;

二:实物演示视频

244-基于stm32单片机厨房安全烟雾煤气温湿度检测报警系统

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

 

void LCD1602_Init(void) 
{ 	    
     GPIO_InitTypeDef  GPIO_InitStructure;
 		 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);	 //使能PA,PC端口时钟
	 
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;				 //LCD1602的三根控制线rs,rw,en
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	//IO口速度为50MHz
	   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
     GPIO_Init(GPIOC, &GPIO_InitStructure);//根据设定参数初始化GPIOC					 
   
	
//     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;				 //LCD1602的三根控制线rs,rw,en
//     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	//IO口速度为50MHz
//	   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
//     GPIO_Init(GPIOB, &GPIO_InitStructure);//根据设定参数初始化GPIOC
	
	
	   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//LCD1602的8跟数据线	    		 //LED1-->PE.5 端口配置, 推挽输出
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO口速度为50MHz
     GPIO_Init(GPIOA, &GPIO_InitStructure);//根据设定参数初始化GPIOA

	   LCD_Write_Command(0x38);//设置LCD两行显示,一个数据由5*7点阵表示,数据由8跟线传输
     delay_ms(2);
	   LCD_Write_Command(0x01);//清除屏幕显示
	   delay_ms(2);
	   LCD_Write_Command(0x06);//设定输入方式,增量不移位
	   delay_ms(2);
	   LCD_Write_Command(0x0c);//开整体显示,关光标,不闪烁
	   delay_ms(2); 
}


/*******************写指令函数************************/
void LCD_Write_Command(u8 com)	 			  
{
  rs=0; //写指令函数和写数据函数其实可以并一起价格 BOOL变量判断是写指令就rs=0写数据就rs=1。
	rw=0;
	en=1;  //写指令     输入:RS=L,RW=L,E=下降沿脉冲 
  GPIO_Write(GPIOA, 0X00FF&com);//该函数一般用来往一次性一个GPIO的多个端口设置
  delay_ms(2); 
  en=0; 
}
 
/*******************写数据函数************************/
void LCD_Write_Date(u8 date)	     	  
{  
  rs=1;
	rw=0;
	en=1;	//写数据     输入:RS=H,RW=L,E=下降沿脉冲
  GPIO_Write(GPIOA, 0X00FF&date);//GPIOA的第八位用来作为8位数据口 					 
  delay_ms(2); 
  en=0;
}
int main(void)
 { 
	 int mq2,mq4;
	delay_init();	    	 //延时函数初始化	  
	uart_init(9600);	 	//串口初始化为9600
	LED_Init();		  		//初始化与LED连接的硬件接口
 	Adc_Init();		  		//ADC初始化	   
	DHT11_Init();
	 	delay_ms(100);		
	LCD1602_Init(); 
	while(1)
	{
		mq2=Get_Adc_Average(ADC_Channel_8,10)/10-100;
		mq4=Get_Adc_Average(ADC_Channel_9,10)/10-100;
		if(mq2<0) mq2=0;
		if(mq4<0) mq4=0;
		DHT11_Read_TempAndHumidity ( & DHT11_Data );//获取传感器温湿度
		LCD_Write_Command(0x80);//第一行的首地址
			LCD_Write_Date(' ');
			LCD_Write_Date(' ');
			LCD_Write_Date('M');
			LCD_Write_Date('Q');
			LCD_Write_Date('=');	
			LCD_Write_Date(mq4%1000/100+0x30);			//煤气							
			LCD_Write_Date(mq4%100/10+0x30);
			LCD_Write_Date(mq4%10+0x30);
			LCD_Write_Date(' ');
			LCD_Write_Date(' ');
			LCD_Write_Date('W');
			LCD_Write_Date('D');
			LCD_Write_Date('=');						
			LCD_Write_Date(DHT11_Data .temp_deci%1000/100+0x30);
			LCD_Write_Date(DHT11_Data .temp_int%100/10+0x30);//显示温度
			LCD_Write_Date(DHT11_Data .temp_int%10+0x30);
		
			LCD_Write_Command(0x80+0x40);
			LCD_Write_Date(' ');
			LCD_Write_Date(' ');
			LCD_Write_Date('Y');
			LCD_Write_Date('W');
			LCD_Write_Date('=');
			LCD_Write_Date(mq2%1000/100+0x30);//显示烟雾
			LCD_Write_Date(mq2%100/10+0x30);
			LCD_Write_Date(mq2%10+0x30);
			LCD_Write_Date(' ');
			LCD_Write_Date(' ');
			LCD_Write_Date('S');
			LCD_Write_Date('D');
			LCD_Write_Date('=');
			LCD_Write_Date(DHT11_Data .humi_int%1000/100+0x30);
			LCD_Write_Date(DHT11_Data .humi_int%100/10+0x30);//显示湿度
			LCD_Write_Date(DHT11_Data .humi_int%10+0x30);
		
		if(mq2>50||mq4>50) //大于50  声光报警
		{		
			BEEP=0;
		}
		else 
		{		
			BEEP=1;
		}

	}											    
}	

四:原理图文件展示(采用AD(Altium Designer)打开)

 五:实物图展示:

六: 资料清单展示:

资料包百度网盘下载链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电子工程DIY工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值