室外环境监控系统设计 数据传输 物联网 数据采集端设计

⭐项目概述   

        该项目旨在构建一个多功能的环境监测系统,通过传感器实时监测温度、湿度、烟雾浓度和光照强度。系统不仅能够将采集的数据进行显示,当检测值超出预设阈值时,还会触发声光报警以提示用户。例如,当光照强度低于设定值时自动开启照明,当温度超过阈值时自动启动风扇以降温。此外,系统通过无线通信将这些环境参数传输至手机,实现远程实时监控。该系统为家庭或办公环境提供了智能化的监控和自动调节功能。

⭐实物图

⭐主要功能

1.检测温度,湿度,烟雾,光照信息

2.数据进行显示

3.当数值超过设定的阈值时进行声光报警

4.当光照低于阈值时开启灯光

5.当温度高于阈值时开启风扇

6.温度、湿度、光照和烟雾浓度手机显示

⭐系统框图:

⭐部分代码

 int main(void)
{	 	    
	u8 i;
	float temp;
	u8 flag=0;
	u8 key=0;
	

	delay_init();	    	 //延时函数初始化	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
	LED_BEEP_Init();
	KEY_Init();
	Relay_Init();
	TIM2_Int_Init(72-1,1000-1);//定时1ms   72,000,000Hz/1,000Hz=72,000=72*1000
	uart_init(115200);	 	//串口1初始化为115200
	uart2_init(9600);
	OLED_Init();
	OLED_ColorTurn(0);//0正常显示,1 反色显示
	OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
	Adc_Init();

	userInit();
	gizwitsInit();
	gizwitsSetMode(2);
	
	while(DHT11_Init());//DHT11初始化	
	//预读三次,防bug
	for(i=0;i<3;i++)
	{
		DHT11_Read_Data(&temperature,&humidity);
		delay_ms(100);
	}

	delay_ms(100);

	
	
	while(1)
	{	
		
		//检测
		DHT11_Read_Data(&temperature,&humidity);	//每100ms(至少)读一次温湿度值,否则有错误xx8
		//温度(0~50℃)
		//湿度(20~90%)
		if(humidity<20) humidity=20;//<20%
		if(humidity>90) humidity=90;//>90%
		//光照强度采集
		lux1=Get_Adc_Average(ADC_Channel_0,10);
		lux1=4096-lux1;
		lux=(int)(((((lux1*100))/4096)));
		//烟雾浓度采集
		smoke1=Get_Adc_Average(ADC_Channel_1,10);
		smoke=(int)(((((smoke1*100))/4096)));
		
		
		if(page_now==0)
		{
			if(flag_oled_cls)
			{
				flag_oled_cls=0;//清屏标志置零
				OLED_Clear();
				
				//数据显示界面
				OLED_ShowChinese(0,0,0,16,1);
				OLED_ShowChinese(16,0,1,16,1);
				OLED_ShowString(32,0,":",16,1);
				OLED_ShowChinese(56,0,2,16,1);

				OLED_ShowChinese(0,16,3,16,1);
				OLED_ShowChinese(16,16,4,16,1);
				OLED_ShowString(32,16,":",16,1);
				OLED_ShowChinese(56,16,5,16,1);
				
				OLED_ShowChinese(0,32,6,16,1);
				OLED_ShowChinese(16,32,7,16,1);
				OLED_ShowString(32,32,":",16,1);
				
				OLED_ShowChinese(0,48,10,16,1);
				OLED_ShowChinese(16,48,11,16,1);
				OLED_ShowString(32,48,":",16,1);
				
			}
			//数据显示
			OLED_ShowNum(40,0,temperature,2,16,1);
			OLED_ShowNum(40,16,humidity,2,16,1);
			OLED_ShowNum(40,32,smoke,2,16,1);
			OLED_ShowNum(40,48,lux,2,16,1);

		}
		else
		{	
			if(flag_oled_cls)
			{
				
				flag_oled_cls=0;//清屏标志置零
				OLED_Clear();
				//阈值显示界面
				OLED_ShowChinese(8,0,0,16,1);
				OLED_ShowChinese(24,0,1,16,1);
				OLED_ShowString(40,0,":",16,1);
				
				OLED_ShowChinese(8,16,3,16,1);
				OLED_ShowChinese(24,16,4,16,1);
				OLED_ShowString(40,16,":",16,1);
				
				OLED_ShowChinese(8,32,6,16,1);
				OLED_ShowChinese(24,32,7,16,1);
				OLED_ShowString(40,32,":",16,1);
				
				OLED_ShowChinese(8,48,10,16,1);
				OLED_ShowChinese(24,48,11,16,1);
				OLED_ShowString(40,48,":",16,1);
				
				
				OLED_ShowNum(48,0,tempp,2,16,1);
				OLED_ShowNum(48,16,humm,2,16,1);
				OLED_ShowNum(48,32,smokee,2,16,1);
				OLED_ShowNum(48,48,luxx,2,16,1);
			}
		}
		OLED_Refresh();
		//温度/烟雾控制风扇
		if(temperature>tempp||smoke>smokee)
		{
			GPIO_ResetBits(GPIOB,GPIO_Pin_9);
		}
		else
		{
			GPIO_SetBits(GPIOB,GPIO_Pin_9);
		}
		//湿度控制加湿器
		if(humidity<humm)
		{
			GPIO_ResetBits(GPIOB,GPIO_Pin_8);
		}
		else
		{
			GPIO_SetBits(GPIOB,GPIO_Pin_8);
		}
		//光照控制灯光
		if(lux<luxx)
		{
			GPIO_ResetBits(GPIOB,GPIO_Pin_5);
		}
		else
		{
			GPIO_SetBits(GPIOB,GPIO_Pin_5);
		}
		//阈值判断,声光报警		
		if(temperature>tempp||humidity<humm||smoke>smokee||lux<luxx)
		{
			GPIO_ResetBits(GPIOA,GPIO_Pin_8);
			GPIO_ResetBits(GPIOA,GPIO_Pin_12);
		}
		else
		{
			GPIO_SetBits(GPIOA,GPIO_Pin_8);
			GPIO_SetBits(GPIOA,GPIO_Pin_12);
		}
			
		OLED_Refresh();
		delay_ms(50);
	}
} 

⭐资料获取

我用夸克网盘分享了「室外环境.zip」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/877e3dceefe6
提取码:Math

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值