10124-基于物联网技术的智能家居WIFI无线系统设计(详细设计说明书+源码+protues+原理图+PPT)
功能需求:
该系统能够监测家庭中的温度、湿度、烟雾浓度、光照强度以及人体活动情况,并通过步进电机实现窗帘的自动化控制。通过灵活调整预设的阈值,该系统可以自动响应环境变化,智能调节室内窗帘的开关状态。检测到的数据将通过WIFI-esp32 8266传输至手机展示或控制。
串口功能可模拟无线(WIFI、蓝牙、4G等)、有线(RS232、RS485)等传输模式。
资料摘要:
随着时代发展,传统的家居生活方式已经逐渐淡出人们的视线,取而代之的是全新的智能家居概念。智能家居的概念涵盖了通过现代技术赋予家庭电器智能化控制的能力,实现家居设备的互联互通,从而为用户创造更加便捷和舒适的生活环境。其核心在于物联网(IoT)技术的运用,该技术使得家中的各种电器设备能够相互连接,形成一个智能化的网络体系。
本研究聚焦于基于物联网技术的智能家居系统,深入探讨了其控制原理。该系统能够监测家庭中的温度、湿度、烟雾浓度、光照强度以及人体活动情况,并通过步进电机实现窗帘的自动化控制。通过灵活调整预设的阈值,该系统可以自动响应环境变化,智能调节室内窗帘的开关状态。
系统由多个模块组成,包括烟雾及光线检测模块、温湿度检测模块、人体检测模块、液晶显示模块(LCD1602)、窗帘电机控制模块以及Wi-Fi模块。在软件设计方面,我们根据硬件电路的功能性需求制定了相应的软件开发流程。为了验证系统的稳定性和功能性,我们使用了Proteus等仿真软件对系统进行了全面的功能性测试和硬件电路驱动性的验证,经过大量的流程性测试,证明该系统性能达标,稳定可靠。
通过搭建系统的仿真电路,并在仿真软件中进行详细的硬件和软件调试,我们成功完成了系统的功能开发,并对所有预设功能进行了全面的测试。这些测试验证了LCD1602显示模块能够正确显示烟雾及温湿度检测数据、光照检测功能的有效性、窗户自动打开功能的可靠性以及阈值设定功能的准确性。测试结果充分表明,该系统已经成功实现了所有预期的功能,为用户提供了智能化的家居体验。
资料包含:
1、源码
2、详细设计说明书-15372字
3、仿真图片
4、仿真工程
5、介绍PPT-13页
6、原理图工程
#include "reg52.h"
#include "ADC0832.h"
#include "lcd1602.h"
#include "SHT11.h"
#define uchar unsigned char
#define uint unsigned int
sbit AA=P2^4;//电机
sbit BB=P2^5;
sbit CC=P2^6;
sbit DD=P2^7;
sbit led=P2^3;//指示灯
sbit man=P3^6;//人体红外
uchar yan=0,light=0;//烟雾、光照
uchar lim1=50,lim2=50,lim3=25,lim4=70;//阀值
uchar mode=0,time=0;
uchar disp1[]="00";
uchar disp2[]="000";
//串口发送
void send(uchar i)
{
SBUF=i;
while(!TI);
TI=0;
}
//发送字符串
void fa(uchar *p)
{
while(*p!='\0')
{
if(*p!=0xdf)
send(*p);
p++;
}
}
uchar key_scan()//按键检测
{
uchar i,j;
i=0;
j=0;
P1=0x0f;
if(P1!=0x0f) //检测有无按下
{
switch(P1)//检测行
{
case 0x0e:i=1;break;
case 0x0d:i=5;break;
case 0x0b:i=9;break;
case 0x07:i=13;
}
P1=0xf0;
switch(P1)//检测列
{
case 0xe0:j=0;break;
case 0xd0:j=1;break;
case 0xb0:j=2;break;
case 0x70:j=3;
}
while(P1!=0xf0);//等待按键松开
}
return i+j;
}
void zheng()//正转
{
uchar i=0;
for(i=0;i<20;i++)
{
BB=1;delay_uint(5000);
AA=0;delay_uint(5000);
CC=1;delay_uint(5000);
BB=0;delay_uint(5000);
DD=1;delay_uint(5000);
CC=0;delay_uint(5000);
AA=1;delay_uint(5000);
DD=0;delay_uint(5000);
}
led=0;
}
void fan() //反转
{
uchar i=0;
for(i=0;i<20;i++)
{
DD=1;delay_uint(5000);
AA=0;delay_uint(5000);
CC=1;delay_uint(5000);
DD=0;delay_uint(5000);
BB=1;delay_uint(5000);
CC=0;delay_uint(5000);
AA=1;delay_uint(5000);
BB=0;delay_uint(5000);
}
led=1;
}
//主函数
void main()
{
uchar i=0;
init_1602();
SCON=0X50; //设置为工作方式1
TMOD|=0X21;
TH1=0XFD; //11.0592MHz
TL1=0XFD;
ES=1; //打开接收中断
TR1=1; //打开计数器
TH0=0X3C;
TL0=0XB0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
fa("**** 智能家居系统开始运行!****\r\n");
fa("\r\n");
fa("\r\n");
while(1)
{
i=key_scan();//按键检测
if(i==1)//设置
{
mode=1;
write_string(1,0," ");
write_string(2,0," ");
}
if(i==2)//OK
{
mode=0;
write_string(1,0," ");
write_string(2,0," ");
}
//判断,窗户控制
if((yan>lim1)||(sht_temp>lim3)||(sht_humi>lim4))
{
if(led)
zheng();//开窗
}
else
{
if((light>lim2)|| !man)
{
if(!led)
fan();//关窗
}
}
//按键设置
if(mode==1)
{
if(i==3)//温度
{
if(lim3<99)
lim3++;
}
if(i==4)
{
if(lim3>0)
lim3--;
}
if(i==5)//烟雾
{
if(lim1<99)
lim1++;
}
if(i==6)
{
if(lim1>0)
lim1--;
}
if(i==7)//湿度
{
if(lim4<99)
lim4++;
}
if(i==8)
{
if(lim4>0)
lim4--;
}
if(i==9)//光照
{
if(lim2<255)
lim2++;
}
if(i==10)
{
if(lim2>0)
lim2--;
}
}
}
}
//定时器0中断
void Timer0() interrupt 1
{
uint i;
if(time<10)//延时采样
time++;
else
{
time=0;
yan=ADC(1);//测量烟雾
light=ADC(2);//测量光照
i=yan;
i=i*99/128;
yan=i;
ReadShtData();//测量温湿度
//显示
if(mode==0)
{
disp1[0]=yan/10+0x30;
disp1[1]=yan%10+0x30;
write_string(1,0,"Y:");
write_string(1,2,disp1);
fa("Y:");
fa(disp1);
fa("%\r\n");
disp2[0]=light/100+0x30;
disp2[1]=light%100/10+0x30;
disp2[2]=light%10+0x30;
write_string(1,4,"% G:");
write_string(1,10,disp2);
write_string(1,13,"Lx");
fa("G:");
fa(disp2);
fa("Lx\r\n");
disp1[0]=sht_temp/10+0x30;
disp1[1]=sht_temp%10+0x30;
write_string(2,0,"T:");
write_string(2,2,disp1);
fa("T:");
fa(disp1);
fa("C\r\n");
disp1[0]=sht_humi/10+0x30;
disp1[1]=sht_humi%10+0x30;
write_string(2,4,"C S:");
write_string(2,10,disp1);
write_string(2,12,"% ");
fa("S:");
fa(disp1);
fa("%\r\n");
fa("\r\n");
fa("\r\n");
}
else
{
disp1[0]=lim1/10+0x30;
disp1[1]=lim1%10+0x30;
write_string(1,0,"set:");
write_string(1,4,disp1);
disp2[0]=lim2/100+0x30;
disp2[1]=lim2%100/10+0x30;
disp2[2]=lim2%10+0x30;
write_string(1,6,"% ");
write_string(1,9,disp2);
write_string(1,12,"Lx");
disp1[0]=lim3/10+0x30;
disp1[1]=lim3%10+0x30;
write_string(2,4,disp1);
disp1[0]=lim4/10+0x30;
disp1[1]=lim4%10+0x30;
write_string(2,6,"C ");
write_string(2,9,disp1);
write_string(2,11,"% ");
}
}
TH0=0X3C;
TL0=0XB0;
}
//串口通讯
void Usart() interrupt 4
{
uchar i;
i=SBUF;//出去接收到的数据
RI = 0;//清除接收中断标志位
}