基于51单片机水塔水箱液水位WIFI监控报警设计
基于51单片机水塔水箱液位WIFI监控报警设计
1 功能介绍
本设计实现了对水塔或水箱液位的实时监测,并通过WiFi模块完成主从机之间的通信,远程监控液位状态。当液位达到最低值或最高值时,系统会触发报警提示,从而提醒管理人员采取相应措施,避免水塔缺水或溢出。整个系统分为主机和从机两部分,各自承担不同的功能,但通过ESP8266 WiFi模块保持紧密的通信联系。
具体功能包括:
- 主机通过液位传感器检测水塔液位,并实时判断是否处于最低液位或最高液位。
- 当检测到液位异常时,主机通过ESP8266 WiFi模块将状态信息传输给从机。
- 从机在接收到液位状态数据后,蜂鸣器根据液位情况决定是否报警;当液位处于最低或最高点时,蜂鸣器发出声响。
- 从机的指示灯用于显示当前液位状态,同时提供掉线提示功能。如果通信中断,所有指示灯熄灭,黄色指示灯闪烁,提示系统失联。
- 主机和从机的程序和模块配置不同,不可互换,保证了系统的稳定性与功能的独立性。
该系统不仅能实现对液位的自动监控,还能远程报警,适合在农业灌溉、水厂及工业储液场景中应用。
2 系统电路设计
本系统由主机电路和从机电路两部分组成。主机主要负责液位检测与数据上传,从机则负责数据接收与报警提示。两者通过ESP8266 WiFi模块建立无线通信,保证数据传输的可靠性。
2.1 主机电路设计
主机的核心任务是检测水塔液位,并将数据通过WiFi模块上传给从机。其电路主要由以下部分组成:
2.1.1 STC89C52单片机最小系统
STC89C52单片机作为主控芯片,负责液位传感器数据采集、逻辑判断与通信控制。最小系统包括电源电路、时钟电路和复位电路,确保单片机稳定运行。
2.1.2 液位传感器电路
液位传感器用于检测水塔中的液位变化。系统可采用浮球液位开关或电极式液位传感器,分别检测水位是否达到最低点或最高点。传感器输出信号经过电平转换送入单片机IO口,单片机通过读取高低电平判断水位状态。
2.1.3 ESP8266 WiFi模块电路
主机与从机之间通过ESP8266 WiFi模块进行无线通信。ESP8266通过UART接口与STC89C52单片机连接,使用AT指令配置网络参数,实现数据的收发。主机检测到水位变化后,会通过ESP8266模块向从机发送对应状态信息。
2.1.4 电源电路
主机电路由5V电源供电,通过AMS1117稳压芯片将电压转换为3.3V,为ESP8266模块提供稳定电源。同时配备电容滤波与防反接设计,保证整个电路长期稳定运行。
2.2 从机电路设计
从机的主要功能是接收主机发送的水位状态,并通过蜂鸣器和指示灯进行提示,辅助远程监控。
2.2.1 STC89C52单片机最小系统
从机同样采用STC89C52单片机作为主控,用于处理接收到的液位状态数据,驱动蜂鸣器和指示灯输出相应状态信息。
2.2.2 蜂鸣器报警电路
从机配置有有源蜂鸣器。当液位处于最低点或最高点时,单片机控制蜂鸣器发声,提醒用户水塔状态异常。其电路简单可靠,响应速度快。
2.2.3 指示灯电路
从机配置多色LED指示灯,用于实时显示液位情况和系统通信状态:
- 绿色LED:液位正常。
- 红色LED:液位异常(最低或最高)。
- 黄色LED:通信中断提示,闪烁提醒。
2.2.4 ESP8266 WiFi模块电路
从机通过ESP8266 WiFi模块接收主机传输的液位状态信息。WiFi模块同样通过UART与单片机通信,接收数据后由单片机进行解析和处理。
2.2.5 电源电路
从机同样使用5V电源供电,并通过稳压芯片提供3.3V电压给ESP8266,保证模块正常运行。
3 程序设计
系统程序分为主机程序和从机程序。主机主要负责液位采集与数据上传,从机负责数据接收与报警处理。
3.1 主机程序设计
主机程序的核心流程为:初始化 → 液位检测 → 状态判断 → 通过ESP8266上传数据。
3.1.1 初始化程序
包括单片机时钟、串口通信、液位检测引脚和WiFi模块初始化。
void Uart_Init(void)
{TMOD |= 0x20; TH1 = 0xFD; TL1 = 0xFD; TR1 = 1; SCON = 0x50; EA = 1; ES = 1;
}
3.1.2 液位检测程序
通过读取液位传感器输入信号,判断水位是否到达最低点或最高点。
unsigned char Check_Level(void)
{if(MIN_LEVEL == 0) return 1; // 最低液位if(MAX_LEVEL == 0) return 2; // 最高液位return 0; // 正常液位
}
3.1.3 数据上传程序
当液位状态变化时,通过串口向ESP8266发送数据包。
void Send_Data(unsigned char level)
{if(level == 1)printf("LEVEL_LOW\n");else if(level == 2)printf("LEVEL_HIGH\n");elseprintf("LEVEL_NORMAL\n");
}
3.2 从机程序设计
从机程序的核心流程为:初始化 → 接收WiFi数据 → 状态解析 → 驱动蜂鸣器与指示灯。
3.2.1 初始化程序
配置串口通信、蜂鸣器端口与LED端口。
void IO_Init(void)
{P2 = 0xFF; // 初始化指示灯BUZZER = 0; // 关闭蜂鸣器
}
3.2.2 数据接收程序
从机通过串口接收主机发来的液位状态数据。
void Uart_ISR(void) interrupt 4
{if(RI){RI = 0;recv_buf = SBUF;Parse_Data(recv_buf);}
}
3.2.3 状态解析与控制程序
解析数据后,驱动蜂鸣器与LED指示灯输出对应的报警状态。
void Parse_Data(char *data)
{if(strstr(data,"LEVEL_LOW")){BUZZER = 1;LED_RED = 0;LED_GREEN = 1;}else if(strstr(data,"LEVEL_HIGH")){BUZZER = 1;LED_RED = 0;LED_GREEN = 1;}else if(strstr(data,"LEVEL_NORMAL")){BUZZER = 0;LED_RED = 1;LED_GREEN = 0;}
}
3.2.4 通信中断提示
若从机在设定时间内未接收到主机数据,则进入掉线提示模式,黄色LED闪烁提醒。
void Comm_Check(void)
{if(timeout_flag){LED_ALL = 1;LED_YELLOW = !LED_YELLOW;}
}
4 总结
本设计实现了基于51单片机和ESP8266 WiFi模块的水塔水箱液位监控报警系统,分为主机和从机两部分。主机负责液位检测与数据上传,从机负责数据接收与报警提示。系统功能全面,具有以下特点:
- 实时监控:液位状态实时采集与上传,保证数据的时效性。
- 远程报警:当液位异常时,从机蜂鸣器立即报警,提供声光提醒。
- 通信监控:从机具备掉线提示功能,保证设备在线状态可控。
- 模块独立:主机与从机程序与配置不同,不可互换,避免系统混淆。
该系统不仅适合家用水塔的液位监控,也可广泛应用于农业灌溉、工业储液和智慧水务等领域,具有较高的应用价值与推广意义。