我制作了一个5美元的Wi-Fi报警器,它会在我的网络断开时立即通知我
当你最需要它们的时候,互联网连接常常会默默地罢工。你的互联网连接可能不会经常中断,但一旦中断,它几乎总是会悄无声息地发生,没有任何警告。当然,在责怪你的互联网服务提供商之前,你应该先修复一些路由器的默认设置,但这是你总是可以预见的事情。
所以在厌倦了看到我的设备从网络上掉线并且突然失去互联网访问后,我决定采取行动。我最终做了一个很棒的小桌面小工具,花费不超过5美元,现在我可以立即知道我的互联网是否断线。
整个项目的费用不到一顿午餐的钱
一个意外有用的网络监控器背后的简单硬件
你实际上只需要一个具备 Wi-Fi 功能的微控制器,以及一个 LED 或蜂鸣器(如果你需要音频提示的话)。普通的 ESP32 足够应付这种需求,所以选择错误的 ESP32 板几乎没有风险。不过,我最终选择了我的 ESP32-S3,它是经典 ESP32 的增强版,带有内置 RGB LED,因为我不想在夜间网络中断时蜂鸣器响个不停。
RGB LED 很有帮助,因为我可以使用同一个(且相当亮的)LED 来指示不同的状态。蓝色闪烁表示板子正在连接我的 Wi-Fi,绿色常亮表示互联网正常工作,红色常亮表示离线,红色闪烁表示 Wi-Fi 网络本身不可用。我还加了一个 1.3 英寸的 SH1106 OLED 显示屏,用于显示信息,例如 SSID、本地 IP 地址、Wi-Fi 信号强度,以及根据情况显示实时的运行时间或中断持续时间计数器。
由于我 ESP32-S3 开发板上的 RGB LED,我只需要连接四个接口。SH1106 通过 I2C 连接,SDA 接到 GPIO 18,SCL 接到 GPIO 18,电源接到 ESP32 的 3.3V 引脚,地线接到板子的地线接口。
它知道你的网络何时断开
能够在几秒钟内发现故障的检测方法
我写了一个 Arduino 程序,每 10 秒运行一次连接检查。它首先检查 ESP32 是否仍然连接到 Wi-Fi 网络,因为如果你的 Wi-Fi 网络本身断开, ping 互联网就毫无意义。如果 Wi-Fi 连接正常,开发板会 ping 谷歌的 DNS 服务器 8.8.8.8——这是一个可靠的目标,本身不太可能宕机。然后开发板会连续寻找三次 ping 命令失败,才会宣布网络中断。
连接检查持续时间和 ping 命令失败阈值可以根据不同的网络进行修改。例如,如果您的互联网连接大多数时间可靠,只偶尔出现故障,您可以降低连接检查频率以更快检测到中断。相反,如果您的连接不稳定,您可能希望提高 ping 命令失败阈值,以确保不会出现误报。
一旦主板通过 TNP 连接并同步时间,OLED 就不只是装饰,而是有实际用途的。在线屏幕显示实时运行时间计数器、当前本地 IP 地址、当前信号强度(RSSI,单位 dBm)以及时间。当发生中断时,屏幕会切换到警报视图,显示中断检测的确切时间以及已过去的时间。此外,还有一个每半秒闪烁一次的警报横幅,因此结合 LED 的颜色,即使设备不在你的直接视线内,也很难错过中断信息。
建造它比你想象的要容易
刷写固件并在短短几步内上线
我使用了 Arduino 库管理器里的两个库:Adafruit SH110X 和 marian-craciunescu 的 ESP32Ping。由于设备不会离开我的网络,我直接在程序中硬编码了我的 2.4 GHz Wi-Fi 网络凭证。ESP32-S3 无法连接 5GHz 网络,但对于互联网连接来说,连接路由器的媒介并不重要。
在首次启动时,OLED 显示屏会显示带有网络名称的连接屏幕,同时 RGB LED 闪烁蓝色。一旦板子获取到 IP 并同步时钟,它会切换到监控模式。在典型的家庭网络下,整个启动过程仅需几秒钟。
你会想知道自己为什么没有早点做一个
确切知道你的连接何时中断的实际好处
运行时间计数器和停机时间戳结合在一起给你一些手机通知做不到的东西:一个持续的、始终开启的日志,你可以在不解锁任何东西的情况下瞥一眼。这是发现互联网何时中断的最过度的方法吗?可能是,但这也是其乐趣所在。
与其依赖另一个网络服务,或者只是等待浏览器中的网络停止工作,这个仪表板就直接放在我的桌子上。它已经帮助我收集到更好的ISP投诉数据,帮助我发现停机模式,老实说,也带给我一些内心的平静。如果你手上有ESP32和OLED(甚至是LED),这是一个有趣的周末项目。如果没有,你花的钱不到一杯咖啡的价格,就能完成一个非常酷的项目。










