很多家庭都经历过类似的场景:
某天凌晨 5 点,楼顶水塔开始往外溢水,水龙头边还能听见水泵嗡嗡作响——因为前一晚忘记关电机。
这一小小的疏忽,带来了一连串问题:
自来水被白白浪费;
电机长时间空转,电能被浪费;
更严重的是:水泵可能因过载过热而烧毁;
这一情况在 家庭、宿舍、公寓楼、乡村水塔 中每天都在重复发生。
与此同时,我们正在谈论机器人、无人机、AI、云计算,但对自家水箱 “满了没”“快空了没” 这样简单的问题,却往往依赖人工去楼顶查看——这显得有些“反差”。
因此,本文从一个真实的小痛点出发,设计并实现了一个 基于 ESP32 的 IoT 智能水位监测系统,目标是:
实时监测水塔水位,并在手机上可视化;
当水满或水位过低时推送告警;
可选:自动关闭水泵,避免溢水和过载;
使用常见器件(ESP32 + HC-SR04 + Blynk),成本低、易 DIY。
整个系统的核心思路是:
用超声波传感器测量“水面距离传感器的高度”,再换算成水位高度与百分比,通过 Wi-Fi 上传到 Blynk 云端,在手机 App 上实时显示和告警。
ESP32 开发板
集成 Wi-Fi,支持 Blynk IoT 平台;
负责传感器采集、数据处理和联网通信。
HC-SR04 超声波测距传感器
安装在水箱顶部,向下发射超声波;
测量“传感器到水面”的距离,实现非接触式水位检测。
继电器模块(可选)
由 ESP32 控制;
通过继电器控制水泵电源,实现自动“断电/开机”。
智能手机 + Blynk App
作为 IoT 云平台和人机界面;
用于显示实时水位、推送告警通知、远程控制水泵。
硬件简单、成本低、易于在家庭和乡村环境部署;
无需接触水体,传感器安装和维护难度低;
通过云平台和手机 App,全程无线化。
系统的关键公式非常直观:
水位高度 = 水箱总高度 − 传感器测得的距离
假设:
水箱深度(高度)为 TANK_DEPTH(单位 cm);
超声波测得传感器到水面的距离为 distance;
则有:
为了保证数据合理,软件会对结果做边界限制:
若计算结果 0,则归零;
若计算结果 100%,则按 100% 处理。
超声波传感器安装位置
探头正对水面中央,避免壁面干扰;
与水面之间没有管道、浮球等遮挡物;
传感器高度尽可能接近水箱顶面,以便把水箱总高度设为常数。
将 HC-SR04 固定在水箱顶部内侧,探头朝下;
尽量保证:
电气连接
继电器线圈电压与触点额定电压;
水泵电源属于高压部分,必须安全接线。
HC-SR04 的 TRIG、ECHO 分别连接到 ESP32 的 GPIO:
ESP32 通过 USB 或稳压电源供电;
若使用继电器控制水泵,需要额外注意:
周期性触发超声波测距(每 1 秒一次);
计算距离 → 换算水位高度 → 换算水位百分比;
将数据发送到 Blynk 虚拟引脚(例如 V0、V1);
在串口输出调试信息;
设置“水满”“水位偏低”的阈值,触发手机通知与电机控制。
在示例代码中:
V0:显示水位百分比(0–100%);
V1:显示水位高度(单位:cm)。
在手机端 Blynk App 上可以:
放置 Gauge(仪表盘)组件 显示百分比水位;
用 Label/Value Display 显示精确高度。
配置 事件通知 / Automation,实现:
水位 ≥ 95%:推送“水箱已满,电机已关闭”;
水位 ≤ 10%:推送“水位过低,请开启电机”。
下面是你给出的完整代码,已经可以实现 水位测量 + Blynk 实时上报。在文章中可以直接作为“参考实现”。
可以按以下思路向读者解释关键部分(如果你准备写成系列文章,可以在后续篇章展开):
超声波测距:pulseIn(ECHO_PIN, HIGH) 返回高电平持续时间(单位:微秒);声速约为 340 m/s,即 0.034 cm/μs;
距离 = 时间 × 声速 / 2(往返距离除以 2)。
定时任务:使用 BlynkTimer 每秒调用一次 measureWaterLevel();避免在 loop() 中使用 delay(),保证 Blynk 连接稳定。云端通信:Blynk.virtualWrite(V0, waterPercent) 将数据推送至虚拟引脚 V0;Blynk App 中将仪表盘绑定到 V0 即可实时显示。
如需扩展自动控制水泵,只需:
增加一个 RELAY_PIN,设置为输出;
在 measureWaterLevel() 中加入逻辑:
若 waterPercent = 95 → digitalWrite(RELAY_PIN, LOW) 关闭水泵;
若 waterPercent = 10 → 根据需求提示或自动开启水泵。
部署完成后,典型的使用体验包括:
无论在家还是出门,只要手机联网,就能随时查看水塔水位;
在水位接近 100% 前,手机自动收到“水满”的提醒,有条件可以自动关泵;
在水位过低前收到“水不足”提醒,避免临时无水可用;
再也不需要凌晨爬楼检查水塔,也避免了长期溢水和水泵过载。
从用户反馈来看,“减少了水和电的浪费,也减少了心理上的‘担心’”,是一类非常贴近日常生活的小而实用的 IoT 应用。
从工程和应用角度,这一项目具有以下意义:
节水与节能:通过自动检测和告警,减少大量日常水浪费和水泵空转耗电。
设备保护:通过自动断泵可降低水泵因长期过载而损坏的风险。
可扩展性强:可以进一步扩展成:
多水箱、多点水位监测;
接入 LoRa/4G,实现远程乡村供水系统监控;
与家庭用水统计、漏水监测等场景结合。
技术并不只属于大型工业系统或复杂的 AI 算法,它同样可以落地到家庭水箱、乡村水塔这样的“小地方”。
基于 ESP32 + 超声波传感器 + Blynk 的 智能水位监测系统,就是一个典型示例:
通过简单的硬件、开源的开发环境和成熟的 IoT 平台,就能解决长期存在的日常小问题,实现更节水、更省心的用水方式。
如果你愿意,我们下一步可以在这篇文章基础上,继续完善:
加上系统框图、接线示意图;
增补带阈值控制的继电器控制代码版本;
写一份“安装与标定步骤”,方便读者直接照做。



0 条