1. 系统总体设计
点击链接下载protues仿真设计资料:https://download.csdn.net/download/m0_51061483/91964733
1.1 设计背景
随着智慧校园与物联网技术的发展,教学楼的能源管理逐渐向智能化方向转型。传统教室照明通常采用人工控制方式,存在"人走灯不关""白天开灯"等浪费现象。同时,教室人数统计通常依赖人工或简单设备,缺乏实时性与数据化分析能力。
基于单片机与WiFi通信的教室人数与照明上位机监控系统,通过融合光照检测、人数检测、无线通信与上位机管理技术,实现教室照明的智能控制与集中管理。系统不仅能够根据环境光照和人数自动调节灯光,还支持远程控制与数据监控,从而提升能源利用效率与管理水平。
1.2 系统功能设计
本系统主要实现以下功能:
- 光照度检测功能:实时采集教室环境亮度;
- 人数检测功能:实现教室人数统计;
- 自动照明控制功能:根据光照与人数自动控制灯具;
- 手动控制功能:支持按键本地控制;
- 上位机监控功能:显示教室编号、人数及灯光状态;
- 远程控制功能:支持对单个或多个教室进行灯光控制;
- WiFi通信功能:实现上下位机双向数据传输;
- 节能管理功能:根据实际需求动态控制照明;
- 系统具备良好的扩展性与稳定性。
2. 系统电路设计
2.1 单片机最小系统电路设计
系统采用STC89C52单片机作为下位机控制核心。
最小系统包括:
- 晶振电路:提供稳定时钟信号;
- 复位电路:实现系统上电初始化;
- 电源电路:提供稳定5V供电。
2.2 光照度检测电路设计
系统采用光敏电阻实现光照检测。
设计方案:
- 光敏电阻与固定电阻构成分压电路;
- 输出模拟电压信号;
- 电压随光照强度变化;
- 提供自动控制依据。
2.3 A/D转换电路设计
由于光敏电阻输出为模拟信号,需要进行数字转换。
设计方法:
- 采用ADC0809进行A/D转换;
- 将模拟信号转换为数字量;
- 单片机读取数据;
- 实现光照强度采集。
2.4 人数检测电路设计
人数检测可采用红外对射或人体感应方式。
设计方案:
- 红外对射检测进出人数;
- 通过计数方式统计人数;
- 输出数字信号;
- 单片机进行处理与累加。
2.5 照明控制电路设计
照明控制采用继电器驱动。
设计要点:
- 单片机输出控制信号;
- 三极管驱动继电器;
- 控制不同区域灯具;
- 支持分区控制。
2.6 按键控制电路设计
系统设置按键用于本地控制:
- 总开关;
- 分区控制;
- 模式切换。
设计要点:
- 上拉电阻;
- 软件消抖;
- IO口读取。
2.7 WiFi通信电路设计
系统采用ESP8266模块实现无线通信。
设计特点:
- 串口通信接口;
- 支持TCP/IP协议;
- 实现数据上传与控制指令接收;
- 支持远程监控。
2.8 上位机接口设计
上位机通过串口或网络接收数据。
实现功能:
- 显示教室编号;
- 显示人数;
- 显示灯光状态;
- 发送控制指令。
2.9 电源与抗干扰设计
设计要点:
- 稳压电源提供稳定电压;
- 加入滤波电容;
- 模拟与数字电路分离;
- 提高系统抗干扰能力。
3. 系统程序设计
3.1 程序总体结构设计
系统采用模块化设计,包括采集模块、控制模块、通信模块及显示模块。
主程序如下:
c
void main()
{
System_Init();
while(1)
{
Light_Read();
People_Count();
Control_Process();
Key_Scan();
WIFI_Send();
WIFI_Receive();
}
}
3.2 光照采集程序设计
c
unsigned char Light_Read()
{
unsigned char value;
value = ADC_Read(0);
return value;
}
实现光照强度采集。
3.3 人数统计程序设计
c
void People_Count()
{
if(IR_IN == 1)
people++;
if(IR_OUT == 1 && people > 0)
people--;
}
实现人数统计。
3.4 自动控制程序设计
c
void Control_Process()
{
if(people > 0)
{
if(light < 50)
LIGHT_ON();
else
LIGHT_OFF();
}
else
{
LIGHT_OFF();
}
}
实现自动照明控制。
3.5 按键控制程序设计
c
void Key_Scan()
{
if(KEY_ON == 0)
LIGHT_ON();
if(KEY_OFF == 0)
LIGHT_OFF();
}
实现手动控制。
3.6 WiFi发送程序设计
c
void WIFI_Send()
{
printf("ID=1,People=%d,Light=%d\n",people,light_state);
}
上传数据。
3.7 WiFi接收程序设计
c
void WIFI_Receive()
{
if(RI)
{
RI = 0;
cmd = SBUF;
if(cmd == '1')
LIGHT_ON();
if(cmd == '0')
LIGHT_OFF();
}
}
接收控制指令。
3.8 分区控制程序设计
c
void Zone_Control()
{
if(people > 20)
ZONE_ALL_ON();
else if(people > 10)
ZONE_HALF_ON();
else
ZONE_MIN_ON();
}
实现分区控制。
3.9 系统初始化程序设计
c
void System_Init()
{
ADC_Init();
WIFI_Init();
Key_Init();
Relay_Init();
}
完成系统初始化。
4. 系统总结
本系统基于单片机与WiFi通信技术,实现了教室人数检测与照明控制的智能化管理,通过光照检测与人数统计,实现灯光的自动调节,并结合上位机实现集中监控与远程控制。
在电路设计方面,各模块分工明确,系统结构合理;在程序设计方面,采用模块化与事件驱动相结合,使系统运行高效稳定。
系统具有显著的节能效果和良好的扩展性,可广泛应用于智慧校园及智能楼宇管理领域。