基于STM32物联网WiFi智能家居控制系统设计(原理图+源代码+系统资料)

原理图:Altium Designer

程序编译器:keil 5

编程语言:C语言

设计编号:C0053

主要功能:

1.可以检测环境中温湿度,气压,一氧化碳,空气质量,烟雾浓度和光照强度;

2.将测量的值显示在屏幕上,数据上报机智云平台可以通过手机APP实时查看当前的状态;

3.通过光敏传感器检测光照强度,当光照强度小于阈值,表明此时天黑了,自动点亮LED灯照明并且自动关闭窗帘!反之!就会关闭灯!打开窗帘,可以实现手动打开关闭;

4.可以通过过按键调节系统阈值,可以实现系统阈值掉电保存。

资料下载

实物图

imgimg

电路图

img

程序

img

	while(1)
	{
		Get_Data(0);
		if(gz_value<=A_gz_value&&mode==0)
		{
			LED0=0;
			curtain_flag=0;
		}else if(gz_value>A_gz_value&&mode==0){
			LED0=1;
			curtain_flag=1;
		}
		if(last_curtain_flag!=curtain_flag&&mode==0)
		{
			BUJING_Cotrol(curtain_flag,3,270);
			last_curtain_flag = curtain_flag;
		}
		if(last_curtain_flag!=currentDataPoint.valueCurtain&&mode==1)
		{
			BUJING_Cotrol(currentDataPoint.valueCurtain,3,270);
			curtain_flag = currentDataPoint.valueCurtain;
			last_curtain_flag = currentDataPoint.valueCurtain;
		}	
		if(mode==1)
		{
			LED0=!currentDataPoint.valueLED;
		}
		if(DHT11_Temp>=A_DHT11_Temp||DHT11_Hum<=A_DHT11_Hum||Pre>=A_pre||m135_value<=A_m135_value||m2_value>=A_m2_value||m7_value>=A_m7_value)
		{
			BEEP=!BEEP;
		}else BEEP = 0;

		key_value = KEY_Scan(0);
		if(key_value==2)
		{
			display_contrl++;
		}
		if(display_contrl%2==0&&t>=10)
		{
			OLED_ShowCHinese(0,0,0);
			OLED_ShowCHinese(16,0,2);
			sprintf((char*)buff,":%2dC",DHT11_Temp);
			OLED_ShowString(32,0,buff,16);	//显示温度
			OLED_ShowCHinese(64,0,1);
			OLED_ShowCHinese(82,0,2);
			sprintf((char*)buff,":%2d%%",DHT11_Hum);
			OLED_ShowString(96,0,buff,16);//显示湿度	
			
			OLED_ShowCHinese(0,2,3);
			OLED_ShowCHinese(16,2,4);
			sprintf((char*)buff,":%2dhpa     ",Pre);
			OLED_ShowString(32,2,buff,16);//显示气压
			
			OLED_ShowCHinese(0,4,5);
			OLED_ShowCHinese(16,4,6);
			OLED_ShowCHinese(32,4,7);
			OLED_ShowCHinese(48,4,8);
			sprintf((char*)buff,":%4dppm",gz_value);
			OLED_ShowString(64,4,buff,16);//显示光照强度
			
			OLED_ShowCHinese(0,6,9);
			OLED_ShowCHinese(16,6,10);
			OLED_ShowCHinese(32,6,11);
			OLED_ShowCHinese(48,6,12);
			sprintf((char*)buff,":%4dppm",m135_value);
			OLED_ShowString(64,6,buff,16);//显示空气质量
		}else if(display_contrl%2==1&&t>=10)
		{
			OLED_ShowCHinese(0,0,13);
			OLED_ShowCHinese(16,0,14);
			OLED_ShowCHinese(32,0,15);
			OLED_ShowCHinese(48,0,16);
			sprintf((char*)buff,":%4dppm",m2_value);
			OLED_ShowString(64,0,buff,16);//显示M2数据
			
			OLED_ShowCHinese(0,2,17);
			OLED_ShowCHinese(16,2,18);
			OLED_ShowCHinese(32,2,19);
			OLED_ShowCHinese(48,2,20);
			sprintf((char*)buff,":%4dppm",m7_value);
			OLED_ShowString(64,2,buff,16);//显示M7数据
			
			OLED_ShowCHinese(0,4,5);
			OLED_ShowCHinese(16,4,6);
			OLED_ShowCHinese(32,4,7);
			OLED_ShowCHinese(48,4,8);
			sprintf((char*)buff,":%4dppm",gz_value);
			OLED_ShowString(64,4,buff,16);//显示光照强度
			
			OLED_ShowCHinese(0,6,9);
			OLED_ShowCHinese(16,6,10);
			OLED_ShowCHinese(32,6,11);
			OLED_ShowCHinese(48,6,12);
			sprintf((char*)buff,":%4dppm",m135_value);
			OLED_ShowString(64,6,buff,16);//显示M135数据
		}

		userHandle();		//用户数据采集
		WIFI_Contection(key_value);//WiFi连接控制
		gizwitsHandle((dataPoint_t *)&currentDataPoint);//机智云协议处理
		
		Canshu_Change(key_value);
		
		t++;
		delay_ms(100);
	}
}
 
void WIFI_Contection(u8 key)//WiFi连接控制
{
	if(key==4)
	{
		printf("WIFI进入AirLink连接模式\r\n");
		gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入
	}			
	if(key==3)
	{  
		
		printf("WIFI复位,请重新配置连接\r\n");
		gizwitsSetMode(WIFI_RESET_MODE);//WIFI复位
	}
}

器件清单

img

开发资料

	printf("WIFI复位,请重新配置连接\r\n");
	gizwitsSetMode(WIFI_RESET_MODE);//WIFI复位
}

}




## 器件清单

[外链图片转存中...(img-gf591BBp-1661272636568)] 



## 开发资料

![img](https://img-blog.csdnimg.cn/img_convert/a153ce382b59623599fa46a10985862a.png) 
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐