⭐项目概述
在该研究中,开发了一款高度集成的基于物联网的全屋自动化控制系统。该系统利用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