如何使用 ESP32 微控制器和 Telegram 机器人构建一个高度可靠、自动化的洪水防护系统
最近,我家发生了一次令人不快的意外:由于水管爆裂,一楼被水淹,而我当时正好不在家。因此,我决定开发一套预警系统,用于及时发现此类情况,并采取相应措施以防止进一步损坏。为此,我从 DFRobot 购买了适用于 Arduino 的 Gravity 光电高精度液位传感器,该传感器灵敏度高,无需机械部件,且具有抗腐蚀性,能够耐受高温高压。
这种光电传感器的工作原理如下:
- 当检测到液位处于空气状态时,由于棱镜反射,大部分光线会进入接收端 LED,光学液位传感器将输出高电压。
- 当检测到液位处于水中时,由于液体折射,仅有少量光线进入接收端 LED,光学液位传感器将输出低电压。
该传感器的输出电压与电源电压相同,由于它可由3V3供电,因此可以直接连接到ESP32的输入端。它可朝任意方向机械安装,本次演示中我特地制作了一个小型支架来固定传感器。传感器的尖端应略高于地面,以便检测最微小的积水。如前所述,我计划使用ESP32微控制器,原因有以下几点:它价格低廉、功耗低、支持Wi-Fi和蓝牙,并且在性能上优于大多数Arduino板。
在规划项目时,一个基本需求是能够通过智能手机的移动网络,无论身处何地都能接收当前状况的信息。为此,市面上有多种服务可供选择,我选择了Telegram平台,因为它支持创建机器人,可以执行自动化任务,而且完全免费,正因如此,它常被称为程序员的天堂。
本项目由PCBWay赞助。2026年7月1日至7月31日,PCBWay正在举办第12周年活动。立即领取优惠,解锁更多专属奖励:独家优惠券、仅需5美元的PCB订单、一站式电子设计服务、3D打印和CNC加工最高50%折扣,以及PCBWay商店的特别促销。接下来,加入互动游戏,获取专属工程师色彩个性签名,点击方框参与幸运抽奖,展示你缤纷的作品,并为最受欢迎的徽章投票。
如果你还没有使用过,现在就该注册一个Telegram账户并创建一个机器人了。
逐步指南:如何创建Telegram机器人并获取聊天ID
第一部分:创建Telegram机器人
1. 如果还没有,请下载并安装 Telegram。
2. 在 Telegram 搜索栏中输入 @BotFather,然后选择官方认证账号。
3. 按下“开始”按钮以启动BotFather。
4. 在消息框中输入并发送:`/newbot`
5. 为您的新机器人输入一个友好的名称(例如:`micemk_wateralarm_bot`)。
6. 接下来,为您的机器人选择一个唯一的用户名。注意:必须以 `_bot` 结尾(例如:`Mircemk_bot`)。
7. 用户名确认后,BotFather 将立即生成一个 HTTP API 令牌。请务必安全地复制并保存该令牌,因为您需要它来编写 ESP32 代码。
第二部分:获取您的聊天 ID
1. 在 Telegram 的搜索栏中,搜索你刚创建的机器人用户名(例如 @Mircemk_bot),然后点击“开始”以初始化它。
2. 返回 Telegram 搜索栏,搜索一个名为 @IDBot 的实用机器人。
3. 打开与 @IDBot 的聊天,然后发送命令:`/getid`
4. 机器人将立即回复你的唯一数字聊天ID。请复制并保存此号码,以便在Arduino配置中使用。
创建Telegram机器人时,必须获取两个独立且唯一的字符字符串:一个是HTTP API令牌,另一个是ID。这些信息在后续编写ESP32代码时会用到。既然已经提到了代码,需要说明的是,该代码设计为可以轻松修改多个参数,包括我们在智能手机上收到的警告提示文本。
首先输入本地Wi-Fi网络的凭据,然后输入接收到的Telegram令牌和ID。接下来定义ESP32上使用的引脚,以及根据状态在智能手机上接收的相应消息。如前所述,这些消息可根据我们的需求进行更改,而无需对代码做其他修改。此外,值得一提的是,通过这个Telegram机器人,我们实现了双向通信功能,这意味着除了接收消息外,我们还可以通过智能手机发送指令,远程执行某些操作。要顺利安装代码,我们需要在板子管理器中选择“ESP32 DEV Board”,并安装提供的库文件 UniversalTelegramBot-1.3.0 和 ArduinoJson 6.21.6。
以下是对系统在实际条件下的功能演示。为此,我将使用一个容器来模拟洪水,并配备一个小型水泵用于排水。首先,通过USB端口为ESP32供电。几秒钟后,智能手机上会收到一条消息,提示系统已启动。接下来,我们检查系统安装房间的状态。为此,输入命令:/status。很快,我们会收到一份详细的系统报告,显示当前状态:房间干燥,阀门处于开启状态,蓝色和红色LED灯均未亮起。这些信息通过移动网络发送到智能手机,这意味着无论身处世界何处,我们都能接收到通知。
如前所述,该通信系统是双向的,这意味着我们也可以通过移动网络从世界任何地方向ESP32发送指令。为此,我在微控制器上安装了一个蓝色LED灯,这种设备可应用于家庭中的任意装置。要激活这个LED,我们输入Blueled on。同样,要关闭它,我们输入Blueled off。因此,我们可以用一个家庭设备替代这个LED,例如一个电子门锁,可以远程控制。
现在,我将通过向这个容器注水来模拟房屋内发生洪水的情况。系统应具备以下行为:当水位上升至传感器时,ESP32 应自动启动水泵,红色 LED 会亮起,声音警报也会响起,同时手机上会收到一条提示信息,告知已发生洪水。当水泵将水抽到所需水位后,会自动关闭,用户手机上会收到消息,提示水已被排走,房间已干燥。我们还可以通过继电器连接主供水管上的电磁阀,以取代蓝色 LED,从而实现远程完全切断供水。
在实际应用中,传感器和水泵通常会被安装在低于地面的专用空间内。
最后简要总结一下:集成软件稳定滤波器,可将普通的DIY传感器转变为坚固可靠的工业级保护系统。结合 Telegram 机器人即时通知功能,这个 ESP32 项目为智能家居安全提供了高效且经济的解决方案。
本文编译自hackster.io





