基于STM32的智能抽油烟机系统

提示:记录毕设

前言

基于STM32的智能抽油烟机系统,主控使用STM32F103C8T6核心板


一、功能要求:

  • 基于单片机系统设计智能抽油烟机,实现智能抽油烟。
  • 通过烟雾传感器实现对当前油烟浓度的检测。
  • 实现根据油烟浓度调整风扇转速。
  • 通过相关传感器实现火灾和一氧化碳预防报警,温度过高或者一氧化碳浓度过高及时报警,并在液晶显示,测量误差<=5%。
  • 可通过APP控制风扇转速,设置温度、烟雾和一氧化碳浓度报警阈值。APP显示温度、气体浓度等相关信息。

二、代码思路

打开定时器2,作为系统运行时间;
esp8266每2.5S刷新一次;
dht11每1s刷新一次;
OLED每2s刷新一次;

三、硬件说明


  • 系统启动后,会有“MyPro”这个WiFi,用手机网络助手连接上,

  • ip地址:192.168.1.1 ,端口8080

  • 引脚连接:

  •         ESP8266:	EN		B0
      					RST		B1
      					RX		B10  
      					TX		B11		
      			
            OLED:      D0    PA5(SCL1)
              			D1    PA7(SDA1)
               			RES   PB7
              			DC    PA4
              			CS    PA6 
      										
      		火灾:      接 pcf8591
      					
      					
      		PCF8591:   SCL2   A0
      					SDA2   A1
      					
      	   烟雾:     接在PCF8591上
      					
      		CO:      接在PCF8591上
      					
      		DHT11:   从“S”端开始往右分别PB9/3.3V/GND;
    

    • @attention 1、提供给ESP8266的电压(3-4v)或者电流不够时,连接wifi会失败
      2、电机必须单独提供电源
    • 实验平台:STM32C8T6核心板

    */

四、沟通交流

可以承接stm32单片机、STC系列单片机设计、嵌入式、深度学习、多模态、语音、NLP。zixun问题lianxi:2424644692(扣扣)
我们在某宝有店铺噢~,搜:“晖亿科创”

五、代码

int main(void)
{

	while(1)
	{	
	
		/*****************************************************/
		//以下是读取MQ-2、MQ-7数据
		/*****************************************************/
		co=ADC_IN1();    //in0
		delay_ms(10);
		yanwu=ADC_IN2(); //in1
		delay_ms(10);
		Light=ADC_IN3(); //in2
		
		
	  /*****************************************************/
		//以下是读取dht11数据
		/*****************************************************/		
		if(dht_flag==1)
		{
			BEEP=~BEEP;
			dht_flag=0;
			DHT11_ReadData(&shidu,&wendu); //如果DHT11读取到数据了,那么就显示
			printf("%d\r\n",wendu);
			//sprintf(send_str1,"当前湿度:%d%%,当前温度:%d℃\r\n",shidu,wendu);
		}
		
		
		/*****************************************************/
		//以下是温度或者一氧化碳超标报警,LED亮则说明报警
		/*****************************************************/
		if(wendu>=set_wendu||co/co_handle>=set_CO)LED=0;
		else LED=1;

		
		/*****************************************************/
		//以下是火灾报警以及显示
		/*****************************************************/
		if(Light<10)
		{
			fire='Y';
		}
		else fire='N';
		
		
		/*****************************************************/
		//以下是调节pwm占空比
		/*****************************************************/	
    if(yanwu<40) led0pwmval=160;
		else if(yanwu>=40&&yanwu<80) led0pwmval=180;
		else if(yanwu>=80&&yanwu<120) led0pwmval=200;
		else if(yanwu>=120&&yanwu<160) led0pwmval=220;
		else if(yanwu>=160) led0pwmval=240;

		
		TIM_SetCompare2(TIM3,led0pwmval);
		if(led0pwmval>240)led0pwmval=240;
		if(led0pwmval<160)led0pwmval=160;
		
		
    /*****************************************************/
		//以下是向esp8266发送数据
		/*****************************************************/		
		if(send_flag==1)
		{
			send_flag=0;
			//esp8266通过wifi向网络助手发送send_str
			sprintf(send_str1, "温度:%d℃  湿度:%d%%  烟雾:%d%%  一氧化碳:%d%%  火灾:%c\r\n",wendu,shidu,yanwu,co,fire);
		  ESP8266_SendString ( DISABLE, send_str1, strlen ( send_str1 ), ( ENUM_ID_NO_TypeDef ) 0 );
		}
		
		
		/*****************************************************/
		//以下是从esp8266接收/处理数据
		/*****************************************************/
		// 从缓存中直接读取,注意while循环一次才读取一次缓存
		strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ] = '\0';
		revStr=strEsp8266_Fram_Record .Data_RX_BUF;
		if(strstr(revStr, ":c"))continue;		
		strtok(revStr, ":");
		revStr=strtok(NULL, ":");
		// 判断缓存内
		if(revStr!=NULL)
		{
			if(*revStr=='A')set_wendu++;
			else if(*revStr=='B')set_wendu--;
			else if(*revStr=='C')set_yanwu++;
			else if(*revStr=='D')set_yanwu--;
			else if(*revStr=='E')set_CO++;
			else if(*revStr=='F')set_CO--;
			//else if(*revStr=='M')led0pwmval+=20;
			//else if(*revStr=='N')led0pwmval-=20;
		}
		
		

		/*****************************************************/
		//以下是OLED显示
		/*****************************************************/
		if(oled_turn==1)
		{
			OLED_Clear(); 
			show_chinese();
			show_threshold();
			
			OLED_ShowNum(26,3,wendu,3,16);//显示温度值
			OLED_ShowNum(90,3,yanwu/yanwu_handle,3,16);//显示烟雾值
			OLED_ShowNum(26,6,Light,3,16);//显示火光
			
			//这里,如果需要显示火灾模式为 数字 ,注释掉 OLED_ShowChar 函数
			//若想显示为Y或者N ,注释掉 OLED_ShowNum 函数
			//OLED_ShowChar(42,6,fire);   //显示火灾(Y/N)
			OLED_ShowNum(90,6,co/co_handle,3,16); //显示CO浓度
			
			OLED_ShowNum(14,0,set_wendu,3,16); //2,显示
			OLED_ShowNum(58,0,set_yanwu,3,16); //46,显示
			OLED_ShowNum(100,0,set_CO,3,16);   //88,显示			
		}			
		else if(oled_turn==0)
		{
			OLED_Clear();
	    OLED_ShowCHinese(0,3,14);
	    OLED_ShowCHinese(14,3,15);			
			OLED_ShowNum(30,3,led0pwmval,3,16);//显示电机速度
		}
		
	}
}


void show_caption()
{
	//智能抽油烟机系统
	OLED_ShowCHinese(2,0,0);
	OLED_ShowCHinese(17,0,1);
	OLED_ShowCHinese(32,0,2);
	OLED_ShowCHinese(47,0,3);
	OLED_ShowCHinese(62,0,4);
	OLED_ShowCHinese(77,0,5);
	OLED_ShowCHinese(92,0,6);
	OLED_ShowCHinese(107,0,7);
}


void show_chinese()
{
	//温度,烟雾,火灾,CO
	OLED_ShowCHinese(0,3,8);
	OLED_ShowCHinese(14,3,9);
	OLED_ShowCHinese(0,6,10);
	OLED_ShowCHinese(14,6,11);
	OLED_ShowCHinese(64,3,12);
	OLED_ShowCHinese(78,3,13);
  OLED_ShowString(64,6,"CO:");
}

void show_threshold()
{
	OLED_ShowString(2,0,"A:");//温度阈值
	OLED_ShowString(46,0,"B:");//烟雾阈值
	OLED_ShowString(88,0,"C:");//co阈值
}



六、框图等资料

在这里插入图片描述

链接: https://download.csdn.net/download/qq_43625266/85566512

喜欢请点赞哦!

在这里插入图片描述

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于STM32智能抽油烟机系统是一种通过嵌入式技术实现的智能家居设备,旨在改善厨房环境,提高厨房使用的舒适性和安全性。 系统采用STM32微控制器作为核心控制器,配合各类传感器和执行器,完成对抽油烟机的自动控制和智能化管理。首先,通过烟雾传感器,系统能够实时检测厨房内的烟雾浓度。当烟雾超过设定阈值时,系统会启动抽油烟机并调整抽风速度,快速净化空气。 其次,系统还具备温度传感器,可以实时监测厨房温度。当温度超过设定阈值时,系统会自动控制抽油烟机的速度和工作时间,有效降低厨房的温度,提供一个舒适的烹饪环境。 此外,系统还通过湿度传感器来检测厨房内的湿度,根据湿度水平智能地调整抽油烟机的工作模式,以达到除湿的效果,避免厨房过于潮湿。 值得一提的是,基于STM32智能抽油烟机系统还具备人机交互的功能,通过LCD显示屏和按键,提供直观的界面供用户进行设置和操作。用户可以根据自己的需要设置烟雾浓度、温度和湿度的阈值,也可以调整抽油烟机的风速和工作时间。 综上所述,基于STM32智能抽油烟机系统通过集成各类传感器和执行器,实现了对厨房内环境的自动监测和控制,提供了更加舒适和安全的烹饪环境。这种智能化的系统将大大改善家庭厨房的使用体验,提高厨房的空气质量和人们生活的质量。 ### 回答2: 基于STM32智能抽油烟机系统是一种利用STM32微控制器技术来控制抽油烟机设备的智能系统。该系统结合了传感器、执行器和人机界面等技术,能够实现自动监测、控制和提供用户友好的操作体验。 该系统主要包含以下几个组成部分: 1. STM32微控制器:作为系统的核心处理器,负责接收和处理来自传感器的数据,并根据预设的控制算法来控制抽油烟机的工作状态。 2. 传感器:包括温度传感器、湿度传感器、压力传感器等,用于实时监测厨房环境的温度、湿度和油烟浓度等参数,以便系统能够根据实际情况自动调节抽油烟机的工作效果。 3. 执行器:主要包括风机和风阀等,用于控制抽油烟机的风力和抽风方向,以适应不同烹饪场景的需求。 4. 人机界面:通过液晶显示屏和按键等设备,用户可以直观地了解当前厨房环境参数,也可以手动调节抽油烟机的工作状态,例如选择不同的风力档位或设定定时关闭功能。 系统工作流程如下:STM32微控制器通过串行通信方式与传感器和执行器相连,实时读取传感器数据,并根据用户设定的阈值和控制策略,对抽油烟机进行控制操作。同时,系统将实时数据显示在人机界面上,供用户查看和操作。 该系统具有以下优势: 1. 自动调节功能:系统能够根据温度、湿度和油烟浓度等参数,智能地调节风力和抽风方向,保证良好的抽油烟效果。 2. 人性化设计:用户可以通过人机界面自由调节抽油烟机的工作状态,满足不同烹饪需求,并且可以了解实时环境参数,保障厨房空气质量。 3. 可靠性高:STM32微控制器具有较高的性能和稳定性,能够保证系统的可靠运行。 基于STM32智能抽油烟机系统在提高厨房使用舒适度和安全性方面具有很大的潜力,有望进一步推动抽油烟机智能化发展。 ### 回答3: 基于STM32智能抽油烟机系统能够有效地控制和监测油烟机的运行状态,提高其性能和智能化程度。 首先,该系统采用STM32微控制器作为主控制单元,具备高性能和低功耗的特点,能够稳定地控制油烟机的各项功能。 其次,系统利用传感器来检测油烟机的工作环境。例如,温度传感器能够实时监测油烟机的工作温度,一旦超过设定阈值,系统将自动调节油烟机的风力,确保其正常运行且不损坏。 此外,湿度传感器能够感知环境湿度,当湿度过高时,系统会自动开启抽风模式,并将湿度降到合适的范围。 还有,光线传感器用于检测周围光线强度,系统能够根据光照情况自动调节炉灶照明灯的亮度,提供更好的烹饪条件。 此外,智能抽油烟机系统还配备了触摸屏显示器,用户可以通过触摸屏来实现对系统的操作和监控。例如,可以通过触摸屏选择不同的抽风模式、设置定时开关机功能等。 总之,基于STM32智能抽油烟机系统通过集成多种传感器和智能控制技术,能够提高油烟机的性能和智能化程度。这样的系统不仅能够提供更好的使用体验,还能够更好地保护环境和用户的健康。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值