基于物联网的全屋自动化控制系统设计

⭐项目概述

        在该研究中,开发了一款高度集成的基于物联网的全屋自动化控制系统。该系统利用STM32F103C8T6作为主控芯片,采用了多种传感器,包括DHT11温湿度传感器、光敏电阻传感器和HC-SR505人体红外检测模块,这些传感器协同工作,能够实时监测并精确地收集室内环境的温度、湿度、光照强度以及是否有人活动的信息。系统通过OLED显示屏进行实时数据展示,使用户能够直观地了解当前环境状况。

⭐实物图

11

⭐主要功能

本系统的总体方案设计以STM32F103微控制器为核心,结合多种传感器和通信技术实现全屋自动化控制。系统首先通过DHT11温湿度传感器、光敏电阻传感器和HC-SR505人体红外检测模块监测室内环境参数和人体活动。这些传感器的数据经由STM32F103处理,以判断是否触发设定的阈值,从而控制相应的声光报警和日光灯、风扇等执行元件,自动调节室内光照和温度,以维护舒适的居住环境。

同时,系统通过ESP8266 WiFi模块连接到云平台,使用户可以通过智能手机APP远程查看实时环境数据和控制家庭设备。此外,系统还设有按键控制,允许用户手动调整环境参数的阈值,以适应个人偏好或特殊需要。这一设计不仅提升了居住舒适度,也增加了系统的互动性和用户的操作便利性。

⭐系统框图:

⭐系统原理图

⭐部分代码

 #include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "usart2.h"
#include "dht11.h" 
#include "string.h"
#include "stdio.h"
#include "adc.h"
#include "timer.h"
#include "oled.h"
#include "gizwits_product.h"
#include "cmd.h"
 
u8 page_now=0;
u8 flag_oled_cls=1;
u8 temperature=0;  	    
u8 humidity=0;
u16 lux=0;
u16 Press=0;
u8 tempp=28;
u8 humii=70;
u8 luxx=40;
u16 temperature1=0;  	    
u16 humidity1=0;
u16 lux1=0;
u16 Press1=0;

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

	delay_init();	    	   
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_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();
	hc_sr04_init();
	
	while(DHT11_Init());//DHT11初始化	
	//预读三次,防bug
	for(i=0;i<3;i++)
	{
		DHT11_Read_Data(&temperature,&humidity);
		delay_ms(100);
	}
	userInit();
	gizwitsInit();
	gizwitsSetMode(2);
	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%
		
		//土壤温度 PA4
		lux1=Get_Adc_Average(ADC_Channel_4,10);
		lux1=4096-lux1;
		lux=(int)(((((lux1*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,12,16,1);
				OLED_ShowChinese(0,16,4,16,1);
				OLED_ShowChinese(16,16,5,16,1);
				OLED_ShowString(32,16,":",16,1);
				OLED_ShowString(56,16,"%",16,1);
				OLED_ShowChinese(0,32,2,16,1);
				OLED_ShowChinese(16,32,3,16,1);
				OLED_ShowString(32,32,":",16,1);
				OLED_ShowChinese(0,48,16,16,1);
				OLED_ShowChinese(16,48,17,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,lux,2,16,1);
			if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13)==1)
			{
				OLED_ShowChinese(48,48,18,16,1);
			}
			else
			{
				OLED_ShowChinese(48,48,19,16,1);
			}
		}
		else
		{	
			if(flag_oled_cls)
			{	
				flag_oled_cls=0;//清屏标志置零
				OLED_Clear();
				OLED_ShowChinese(32,0,8,16,1);
				OLED_ShowChinese(48,0,9,16,1);
				OLED_ShowChinese(64,0,10,16,1);
				OLED_ShowChinese(80,0,11,16,1);
				OLED_ShowChinese(8,16,0,16,1);
				OLED_ShowChinese(24,16,1,16,1);
				OLED_ShowString(40,16,":",16,1);
				OLED_ShowChinese(64,16,12,16,1);
				OLED_ShowChinese(8,32,4,16,1);
				OLED_ShowChinese(24,32,5,16,1);
				OLED_ShowString(40,32,":",16,1);
				OLED_ShowString(64,32,"%",16,1);
				OLED_ShowChinese(8,48,2,16,1);
				OLED_ShowChinese(24,48,3,16,1);
				OLED_ShowString(40,48,":",16,1);
				OLED_ShowNum(48,16,tempp,2,16,1);
				OLED_ShowNum(48,32,humii,2,16,1);
				OLED_ShowNum(48,48,luxx,2,16,1);
			}
		}
		OLED_Refresh();
		
		if(GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_5))
			{
				OLED_ShowString(96,48,"Man ",16,1);
			}
		else
			{
				OLED_ShowString(96,48,"Auto",16,1);
				
				if(temperature>tempp)
				{
					GPIO_ResetBits(GPIOB,GPIO_Pin_9);
				}
				else
				{
					GPIO_SetBits(GPIOB,GPIO_Pin_9);
				}
				
				if(lux<luxx)
				{
					GPIO_ResetBits(GPIOB,GPIO_Pin_8);
				}
				else
				{
					GPIO_SetBits(GPIOB,GPIO_Pin_8);
				}
			}	
		if(temperature>tempp||humidity>humii||luxx<luxx||(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13)==1))	
		{
			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/20ae336f3063
提取码:M4Rh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值