基于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远程监控、云平台数据记录等功能,具有良好的应用前景。

相关推荐
隔窗听雨眠1 小时前
在STM32上跑通TinyML:从模型训练到推理优化的完整实战指南
stm32·单片机·嵌入式硬件
ryanuo73 小时前
Mac(M芯片)上进行嵌入式开发遇到的问题
嵌入式硬件·macos·开发板
机器视觉知识推荐、就业指导4 小时前
为什么同一个引脚不能同时做按键和串口
stm32·单片机·嵌入式硬件
崇山峻岭之间4 小时前
单片机基本定时器实验
单片机·嵌入式硬件
DS小龙哥4 小时前
基于ESP32设计的智能养蜂监测系统
stm32·单片机·嵌入式硬件·物联网·华为云
夜月yeyue5 小时前
STM32 DMA 双缓冲采样
linux·stm32·单片机·嵌入式硬件·系统架构
羊羊小栈5 小时前
Uplift营销供应链协同决策系统(基于Uplift因果推断与运筹优化算法)
前端·人工智能·算法·毕业设计·大作业
西城微科方案开发5 小时前
SIC8P370D2L-PLP16 8位OTP单片机 低功耗多功能MCU详解
单片机·嵌入式硬件
sevenll077 小时前
DocKit agentic MongoDB GUI 客户端 - 用自然语言和你的数据对话
数据库·mongodb·nosql·agent·桌面客户端
智者知已应修善业7 小时前
【51单片机初始化D5-D8亮,每按键按下D1到D4全亮,再按下恢复,如此循环】2024-3-26
c++·经验分享·笔记·算法·51单片机