stm32温控大棚测控系统(CO2+温湿度+光照)+仿真

发布于:2025-08-29 ⋅ 阅读:(22) ⋅ 点赞:(0)

 一.硬件方案


        主要由STM32F103C8T6单片机最小系统板+OLED12864显示模块+二氧化碳传感器模块+温湿度传感器模块+光强检测电路+LED灯光+风扇电路+蜂鸣器电路+电源开关构成;

仿真图如下:

二.设计功能

  • 采集环境温湿度、光照强度、二氧化碳浓度;
  • OLED显示屏显示信息,按键设置温湿度、光照强度、二氧化碳监测阈值;
  • 当触发阈值时,报警提醒;温度超过阈值时,启动风扇自动降温通风;光强强度低于阈值时,LED灯补光;
  • 按键可设置阈值:按键1:模式切换;按键2:设置;按键3:自加1或控制风扇;按键4:自减1或控制灯光;
  • 无线通信连接APP,远程显示数据信息。
  • 连接蓝牙,APP可控制风扇、LED灯开关,获取系统数据;

三.软件设计

        主程序源码

 int main(void)
 {
 	vu8 key=0;	
	
	delay_init();	    	 //延时函数初始化	  
	LED_Init();		  		//初始化与LED连接的硬件接口
	BEEP_Init();         	//初始化蜂鸣器端口
	KEY_Init();         	//初始化与按键连接的硬件接口
	uart_init(9600);
	usart2_Init(9600);
	TIM2_Int_Init(99,7199);//10Khz的计数频率,计数到5000为500ms  
	Adc_Init();          //光强采集ADC初始化
	 FAN_Init();        //风扇初始化
	OLED_Init();       //显示屏初始化
	OLED_ColorTurn(0);//0正常显示,1 反色显示
  OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示

	display_refresh(); 	//刷新显示屏

	Delay_ms(500);

	while(1)
	{
		key=KEY_Scan(1);	//得到键值
		KEY_Handle(key);
		
		APP_Handle();
		
		if(W_100ms>=99)    
		{
			W_100ms=0;
			if(refresh>0)
				APP_refresh();
		}
		
		if(T_100ms>=49)
		{
			T_100ms = 0;
			
			
			//采集烟雾浓度值
			light =  Get_Adc_Average(9,10);

			getDHT11Data();  //获取湿度数据
			
			
			if(set==0)					 //set为0,说明现在不是设置状态
			{
					display_refresh();	 //显示AD数值和报警值
				
				if(mode==1)
				{
					if(light<setLight)
					{
						LEDR=0;
					}
					else
					{
						LEDR=1;
					}
				}
				
				
				//报警阈值判断
				if(Temp>setTemp)
				{
					warn_flag=1;
				}
				else if(Humi>setHumi)
				{
					warn_flag=2;
				}
				else if(light<setLight)
				{
					warn_flag=3;
				}
				else if(co2>setco2)
				{
					warn_flag=4;
				}
				else
				{
					warn_flag=0;
				}
				
				
				//蜂鸣器报警控制
				if(warn_flag>0)
				{
					if(GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_15)==1)
					{
						BEEP=0;
					}
					else
						BEEP=1;
					
				}
				else
					BEEP=1;
				
				
			
				if(mode==1)
				{
					if(warn_flag==1)
					{
						if(FAN_state==0)
							printf("风扇已开启\r\n");
						FAN=1;
						
					}
					else
					{
						FAN=0;
						if(FAN_state==1)
							printf("风扇已关闭\r\n");
					}
				}

			}
				

		}
		

	}	 
}

链接:https://pan.baidu.com/s/1-Ar1mLe-1qtdt4VCcN3gBg 提取码: 6yfz


网站公告

今日签到

点亮在社区的每一天
去签到