基于 ESP32 与 Blynk 的智能水塔水位监测系统设计

嵌入式系统 时间:2025-11-14来源:


1. 问题背景:凌晨 5 点溢出的水

很多家庭都经历过类似的场景:
某天凌晨 5 点,楼顶水塔开始往外溢水,水龙头边还能听见水泵嗡嗡作响——因为前一晚忘记关电机。

这一小小的疏忽,带来了一连串问题:

与此同时,我们正在谈论机器人、无人机、AI、云计算,但对自家水箱 “满了没”“快空了没” 这样简单的问题,却往往依赖人工去楼顶查看——这显得有些“反差”。

因此,本文从一个真实的小痛点出发,设计并实现了一个 基于 ESP32 的 IoT 智能水位监测系统,目标是:


2. 系统整体方案

整个系统的核心思路是:
用超声波传感器测量“水面距离传感器的高度”,再换算成水位高度与百分比,通过 Wi-Fi 上传到 Blynk 云端,在手机 App 上实时显示和告警。

2.1 使用的主要硬件

  1. ESP32 开发板

    • 集成 Wi-Fi,支持 Blynk IoT 平台;

    • 负责传感器采集、数据处理和联网通信。

  2. HC-SR04 超声波测距传感器

    • 安装在水箱顶部,向下发射超声波;

    • 测量“传感器到水面”的距离,实现非接触式水位检测。

  3. 继电器模块(可选)

    • 由 ESP32 控制;

    • 通过继电器控制水泵电源,实现自动“断电/开机”。

  4. 智能手机 + Blynk App

    • 作为 IoT 云平台和人机界面;

    • 用于显示实时水位、推送告警通知、远程控制水泵。

2.2 方案特点


3. 工作原理与测量逻辑

系统的关键公式非常直观:

水位高度 = 水箱总高度 − 传感器测得的距离

假设:

则有:

waterLevel = TANK_DEPTH - distance
waterPercent = (waterLevel / TANK_DEPTH) * 100%

为了保证数据合理,软件会对结果做边界限制:


4. 硬件安装:传感器与水箱布局

  1. 超声波传感器安装位置

    • 探头正对水面中央,避免壁面干扰;

    • 与水面之间没有管道、浮球等遮挡物;

    • 传感器高度尽可能接近水箱顶面,以便把水箱总高度设为常数。

    • 将 HC-SR04 固定在水箱顶部内侧,探头朝下;

    • 尽量保证:

  2. 电气连接

    • 继电器线圈电压与触点额定电压;

    • 水泵电源属于高压部分,必须安全接线。

    • HC-SR04 的 TRIGECHO 分别连接到 ESP32 的 GPIO:

      #define TRIG_PIN  5
      #define ECHO_PIN  18
    • ESP32 通过 USB 或稳压电源供电;

    • 若使用继电器控制水泵,需要额外注意:


5. 软件设计与 Blynk 云平台

5.1 核心功能

5.2 Blynk 端数据映射

在示例代码中:

在手机端 Blynk App 上可以:


6. 完整代码解析(ESP32 + HC-SR04 + Blynk)

下面是你给出的完整代码,已经可以实现 水位测量 + Blynk 实时上报。在文章中可以直接作为“参考实现”。

/************* Smart Water Level Monitoring System *************
   Hardware: ESP32, HC-SR04 Ultrasonic Sensor, Blynk App
   Features:
   ✔ Measure water level in tank
   ✔ Send percentage to Blynk App
   ✔ Show water level on Serial Monitor
   ✔ Automatically detect tank full or empty
   ✔ Motor control can be added easily
****************************************************************/

#define BLYNK_TEMPLATE_ID "Your_Template_ID"
#define BLYNK_TEMPLATE_NAME "Water Level Monitor"
#define BLYNK_AUTH_TOKEN "Your_Blynk_Auth_Token"

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

// Wi-Fi Credentials
char ssid[] = "Your_WiFi_Name";
char pass[] = "Your_WiFi_Password";

// Ultrasonic Sensor Pins
#define TRIG_PIN  5
#define ECHO_PIN  18

// Tank Dimensions (in cm)
const int TANK_DEPTH = 100; // Tank height in centimeters

long duration;
float distance, waterLevel, waterPercent;

BlynkTimer timer;

/***************** Function to Measure Water Level *****************/
void measureWaterLevel() {
  // Send ultrasonic pulse
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  // Read echo time
  duration = pulseIn(ECHO_PIN, HIGH);

  // Calculate Distance (cm)
  distance = duration * 0.034 / 2;

  // Calculate water level
  waterLevel = TANK_DEPTH - distance;

  // Calculate percentage
  waterPercent = (waterLevel / TANK_DEPTH) * 100.0;

  if (waterPercent < 0) waterPercent = 0;
  if (waterPercent > 100) waterPercent = 100;

  // Send data to Blynk
  Blynk.virtualWrite(V0, waterPercent);  // Water Level in %
  Blynk.virtualWrite(V1, waterLevel);    // Water Level in cm

  // Print on Serial Monitor
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.print(" cm | Water Level: ");
  Serial.print(waterLevel);
  Serial.print(" cm | Tank Filled: ");
  Serial.print(waterPercent);
  Serial.println(" %");
}

/***************** Setup Function *****************/
void setup() {
  Serial.begin(115200);

  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  // Connect to Blynk
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);

  // Timer runs every 1 second
  timer.setInterval(1000L, measureWaterLevel);
}

/***************** Main Loop *****************/
void loop() {
  Blynk.run();
  timer.run();
}

可以按以下思路向读者解释关键部分(如果你准备写成系列文章,可以在后续篇章展开):

如需扩展自动控制水泵,只需:


7. 实际使用体验

部署完成后,典型的使用体验包括:

从用户反馈来看,“减少了水和电的浪费,也减少了心理上的‘担心’”,是一类非常贴近日常生活的小而实用的 IoT 应用。


8. 应用价值与扩展方向

从工程和应用角度,这一项目具有以下意义:


9. 结语

技术并不只属于大型工业系统或复杂的 AI 算法,它同样可以落地到家庭水箱、乡村水塔这样的“小地方”。

基于 ESP32 + 超声波传感器 + Blynk 的 智能水位监测系统,就是一个典型示例:
通过简单的硬件、开源的开发环境和成熟的 IoT 平台,就能解决长期存在的日常小问题,实现更节水、更省心的用水方式。

如果你愿意,我们下一步可以在这篇文章基础上,继续完善:


关键词: DIY

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版