基于stm32单片机的酒精浓度报警系统-语音提示-蓝牙监控

 本设计的硬件构成:

stm32单片机最小系统板(晶振+复位电路),MQ-3酒精传感器模块、OLED显示屏、按键、语音播报模块、继电器电路、蓝牙模块;

功能介绍:

1、采用酒精传感器检测酒精浓度,并且在oled显示屏上显示当前浓度值,并显示设置的报警阈值;

2、可通过按键调整报警阈值;若超过阈值,语音播报报警信息,继电器开启。按键1:设置键;按键2:加一键;按键3:减一键;

3、可通过按键调整报警阈值;若超过阈值,语音播报报警信息,继电器开启。按键1:设置键;按键2:加一键;按键3:减一键;

主要物料清单及型号:

部分程序源码:

 int main(void)
 {
 	vu8 key=0;	
	
	delay_init();	    	 //延时函数初始化	  
	LED_Init();		  		//初始化与LED连接的硬件接口
	BEEP_Init();         	//初始化蜂鸣器端口
	KEY_Init();         	//初始化与按键连接的硬件接口
	uart_init(9600);
	 usart2_Init(9600);
	TIM2_Int_Init(999,7199);//10Khz的计数频率,计数到5000为500ms  
	Adc_Init();
	 
	STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)TEXT_Buffer,2);
	
	
	if(TEXT_Buffer[0]!=0xffff)
	{
		WARNING = TEXT_Buffer[0];
	}

	 
	OLED_Init();
	OLED_ColorTurn(0);//0正常显示,1 反色显示
    OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
	OLED_ShowChinese(16,0,0,16);//烟雾报警系统
	OLED_ShowChinese(32,0,1,16);
	OLED_ShowChinese(48,0,2,16);
	OLED_ShowChinese(64,0,3,16);
	OLED_ShowChinese(80,0,4,16);
	OLED_ShowChinese(96,0,5,16);
	
	OLED_ShowChinese(0,16,6,16);   //浓度
	OLED_ShowChinese(16,16,7,16);
	OLED_ShowChar(32,16,':',16);
	OLED_ShowChar(40,16,' ',16);
	OLED_ShowChar(48,16,ALValue%1000/100+0x30,16);
	OLED_ShowChar(56,16,ALValue%100/10+0x30,16);
	OLED_ShowChar(64,16,ALValue%10+0x30,16);
	OLED_ShowString(72,16,"mg/L  ",16);
	
	OLED_ShowChinese(0,32,14,16);   //阈值
	OLED_ShowChinese(16,32,15,16);
	OLED_ShowChar(32,32,':',16);
	OLED_ShowChar(40,32,' ',16);
	OLED_ShowChar(48,32,WARNING%1000/100+0x30,16);
	OLED_ShowChar(56,32,WARNING%100/10+0x30,16);
	OLED_ShowChar(64,32,WARNING%10+0x30,16);
	OLED_ShowString(72,32,"mg/L  ",16);
	
	OLED_ShowChinese(0,48,8,16);   //状态
	OLED_ShowChinese(16,48,9,16);
	OLED_ShowChar(32,48,':',16);
	OLED_ShowChar(40,48,' ',16);
	if(smoke_flag==0)
	{
		OLED_ShowChinese(48,48,10,16);   //状态正常
		OLED_ShowChinese(64,48,11,16);
	}
	else
	{
		OLED_ShowChinese(48,48,12,16);   //状态正常
		OLED_ShowChinese(64,48,13 ,16);
	}
	OLED_Refresh();
	 
	LEDB=1;					
	LEDR=1;	
	BEEP=1;
	
	while(1)
	{
		key=KEY_Scan(1);	//得到键值
//		if(key==0)
//			key = APP_Handle(revData);
		KEY_Handle(key);
		
		if(W_100ms>=40)
		{
			W_100ms=0;
			if(smoke_flag>=1)
			{
				play_voice(1);
			}
		}
		
		if(T_100ms>=10)
		{
			T_100ms = 0;
			
			//采集烟雾浓度值
			ALValue = (u16)(Get_Adc(9)/3); 

			
			if(ALValue>999)
				ALValue  = 999;
			
			if (ALValue > K_ZERO) 
				ALValue = ALValue - K_ZERO;              //首先减去零点漂移
			else
				ALValue = 0; 
			APP_Update();
			if(ALValue>WARNING)			
			{
				smoke_flag =1;
				relay=0;
			}
			else
			{
				smoke_flag =0;
				relay=1;
				
			}

		}
		
		
		if(set==0)				//set为0,说明现在不是设置状态
			display_refresh();	//显示AD数值和报警值
				
		delay_ms(10); 
	}	 
}

资料链接:https://pan.baidu.com/s/1GiwS3vgvv-UXr6QacnFDlw 
提取码:hnqr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值