基于51单片机水塔水箱液水位WIFI监控报警设计

1. 系统功能介绍

本设计的题目是基于51单片机水塔水箱液水位WIFI监控报警设计。整个系统由主机与从机两部分组成,二者通过WiFi模块ESP8266进行通信,实现远程水位监测与报警控制。其设计目的是为了解决传统水箱监测中无法实时远程传输、报警不及时等问题,从而实现更加智能化的管理方式。

在本系统中,主机安装在水箱处,负责液位传感器的数据采集与处理;从机安装在用户端或值班室内,主要负责数据接收、报警提示以及液位状态指示。主从机通过WiFi无线通信互联,确保数据能够实时传输与反馈。

系统的主要功能总结如下:

  1. 主机通过液位传感器检测水位,当检测到液位达到最低液位或最高液位时,立即通过WiFi模块将信息传输给从机。
  2. 从机接收到主机的液位信息后,如果水位处于最低或最高点,则蜂鸣器自动报警;在正常范围内,蜂鸣器不报警。
  3. 从机端配备了状态指示灯,可以实时显示水位状态。如果主从机之间通信异常,则所有指示灯熄灭,并通过黄灯闪烁提醒用户系统出现掉线或故障。
  4. 主从机电路和程序严格区分,配置参数不可互换,否则将导致系统失效。

该系统的实现具有低成本、安装简单、实时性强和可扩展性好的特点,适用于居民住宅、学校、工厂及农业灌溉等多种场景。


2. 系统电路设计

系统电路主要由主机电路和从机电路组成。主机侧重于水位检测与数据传输,从机则重点在于接收与报警。

2.1 主机电路设计

主机的电路由STC89C52单片机核心电路、液位传感器电路、ESP8266 WiFi模块电路、电源电路等部分构成。

2.1.1 单片机核心电路

STC89C52作为主控芯片,内置多个I/O口,可以用于接收液位传感器信号,并通过串口与ESP8266通信。其最小系统电路包括上电复位电路、按键复位电路以及12MHz晶振电路,保证系统稳定运行。

2.1.2 液位传感器电路

液位检测采用电极式或浮球式液位传感器,传感器输出高低电平信号,直接输入单片机I/O口。当液位达到设定点时,电平发生变化,从而实现最高和最低液位的检测。

2.1.3 WiFi模块电路

ESP8266模块通过UART与STC89C52单片机通信。主机端作为数据上传端,负责将检测到的液位状态打包并通过WiFi传输到从机模块。模块供电为3.3V,因此需加稳压电路保证其正常工作。

2.1.4 电源电路

主机采用DC 5V供电,通过AMS1117-3.3稳压芯片为ESP8266提供稳定的3.3V电压,同时为单片机和液位传感器提供5V电源。


2.2 从机电路设计

从机电路由STC89C52单片机核心电路、蜂鸣器报警电路、状态指示灯电路、ESP8266 WiFi模块电路、电源电路组成。

2.2.1 单片机核心电路

与主机相同,从机单片机也以STC89C52为核心,主要负责接收WiFi模块传来的液位信息并进行逻辑处理,控制蜂鸣器和指示灯工作。

2.2.2 蜂鸣器报警电路

蜂鸣器通过三极管驱动与单片机I/O口连接。当水位异常或超过设定阈值时,单片机输出高电平驱动三极管导通,蜂鸣器鸣响。

2.2.3 状态指示灯电路

从机端设计三种状态灯:

  • 红灯:水位过高报警
  • 绿灯:水位正常
  • 黄灯:掉线或故障提醒

当系统断开连接时,单片机周期性点亮和熄灭黄灯,以闪烁提示用户。

2.2.4 WiFi模块电路

从机WiFi模块与主机模块建立TCP/UDP连接,负责接收主机端发送的液位数据。数据解析后由单片机执行相应控制逻辑。

2.2.5 电源电路

与主机相同,从机采用5V电源,并使用AMS1117-3.3稳压为ESP8266供电。


3. 程序设计

系统软件部分分为主机程序和从机程序。主机程序主要负责液位检测与数据上传,从机程序主要完成数据接收与报警逻辑。

3.1 主机程序设计

主机的主要功能是液位信号采集与WiFi传输,包括传感器检测、串口初始化、WiFi模块初始化和数据打包发送。

3.1.1 液位检测模块

液位传感器的输出高低电平通过I/O口读取,当最低或最高液位被触发时,主机将状态写入数据包。

3.1.2 WiFi通信模块

主机通过UART向ESP8266发送AT指令,完成模块配置及数据上传。

3.1.3 主机代码示例

c 复制代码
#include <reg52.h>
#include <intrins.h>

sbit LEVEL_LOW = P1^0;   // 最低液位传感器
sbit LEVEL_HIGH = P1^1;  // 最高液位传感器

void UartInit(void) {
    SCON = 0x50;      // 串口模式1
    TMOD |= 0x20;     // 定时器1方式2
    TH1 = 0xFD;       // 波特率9600
    TL1 = 0xFD;
    TR1 = 1;          // 启动定时器
}

void SendByte(unsigned char dat) {
    SBUF = dat;
    while(!TI);
    TI = 0;
}

void SendString(char *s) {
    while(*s) {
        SendByte(*s++);
    }
}

void main() {
    UartInit();
    while(1) {
        if(LEVEL_LOW == 0) {
            SendString("LOW\n");   // 水位过低
        } else if(LEVEL_HIGH == 0) {
            SendString("HIGH\n");  // 水位过高
        } else {
            SendString("NORMAL\n");// 正常
        }
    }
}

3.2 从机程序设计

从机的主要功能是接收WiFi数据并根据水位状态控制蜂鸣器与指示灯

3.2.1 数据接收模块

从机串口接收主机发送的数据帧,并进行字符串匹配,根据不同状态执行不同动作。

3.2.2 报警与指示灯控制模块

当接收到"LOW"或"HIGH"数据时,蜂鸣器启动并点亮红灯;当接收到"NORMAL"时,绿灯点亮蜂鸣器关闭;若长时间未收到数据,黄灯闪烁提示掉线。

3.2.3 从机代码示例

c 复制代码
#include <reg52.h>
#include <string.h>

sbit LED_RED = P2^0;
sbit LED_GREEN = P2^1;
sbit LED_YELLOW = P2^2;
sbit BEEP = P2^3;

char buffer[10];
unsigned char count = 0;

void UartInit(void) {
    SCON = 0x50;
    TMOD |= 0x20;
    TH1 = 0xFD;
    TL1 = 0xFD;
    TR1 = 1;
    ES = 1;
    EA = 1;
}

void Uart_ISR(void) interrupt 4 {
    if(RI) {
        buffer[count++] = SBUF;
        RI = 0;
        if(SBUF == '\n') {
            buffer[count] = '\0';
            count = 0;
        }
    }
}

void main() {
    UartInit();
    while(1) {
        if(strstr(buffer, "LOW")) {
            LED_RED = 0; LED_GREEN = 1;
            BEEP = 0;
        } else if(strstr(buffer, "HIGH")) {
            LED_RED = 0; LED_GREEN = 1;
            BEEP = 0;
        } else if(strstr(buffer, "NORMAL")) {
            LED_GREEN = 0; LED_RED = 1;
            BEEP = 1;
        } else {
            LED_YELLOW = 0;  // 通讯异常时闪烁
        }
    }
}

4. 总结

本系统实现了基于STC89C52单片机ESP8266 WiFi模块的水塔水箱液位监控与报警设计。主机负责液位检测并通过WiFi模块发送数据,从机接收数据后通过蜂鸣器和LED指示灯实现状态提醒。

该设计不仅能实时监控水位,还能在通信异常时及时提示用户,极大提高了系统的可靠性与实用性。同时,由于系统采用了模块化设计,未来可扩展到手机APP远程监控、云平台数据记录等功能,具有良好的应用前景。

相关推荐
szxinmai主板定制专家5 小时前
基于RK3588与ZYNQ7045的ARM+FPGA+AI实时系统解决方案
arm开发·人工智能·嵌入式硬件·fpga开发
自激振荡器5 小时前
2,GUI Guider的安装与导入STM32裸机工程
stm32·单片机·嵌入式硬件·lvgl·gui guider
深蓝电商API5 小时前
爬虫数据存储:MongoDB 在电商采集中的应用
数据库·爬虫·mongodb
计算机编程小央姐5 小时前
【Spark+Hive+hadoop】基于spark+hadoop基于大数据的全球用水量数据可视化分析系统大数据毕设
大数据·hadoop·数据分析·spark·课程设计
<man>6 小时前
STM32_08_中断(☆☆☆)
stm32·单片机·嵌入式硬件
沐欣工作室_lvyiyi6 小时前
基于单片机的智能奶茶机(论文+源码)
单片机·嵌入式硬件·毕业设计·智能奶茶机
俊昭喜喜里6 小时前
stm32中的位带操作的使用意义
stm32·单片机·嵌入式硬件
IT学长编程6 小时前
计算机毕业设计 基于Python的音乐推荐系统 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·hadoop·python·深度学习·毕业设计·课程设计·音乐推荐系统
工业互联网专业7 小时前
南京某高校校园外卖点餐系统_django
vue.js·python·django·毕业设计·源码·课程设计·校园外卖点餐系统