IoT 设备 WiFi 看门狗:掉线自动重启路由器 (Arduino MKR1000)
项目动机
家庭/办公室 IoT 设备增多后,路由器偶尔死机、WiFi 掉线成常态,手动拔插电源恢复繁琐。本项目用 Arduino MKR1000(自带 WiFi)实现“网络心跳检测 + 继电器强制断电重启路由器 + 蜂鸣器报警”的全自动看门狗,基于有限状态机(FSM)设计,运行稳健。
硬件清单
- Arduino MKR1000 (或 Arduino + WiFi Shield) ×1
- 5V 有源蜂鸣器 ×1(接 D3)
- 1 路 5V 继电器模块(高电平触发)×1(接 D0)
- 路由器电源线(剪一线接继电器常闭 COM/NC)
- 非导电外壳、绝缘胶带、杜邦线
状态机设计
五态循环:Checking → Connected → Disconnected → RouterOff → RouterOn → Checking
| 状态 | 动作 | 转移条件 |
|---|---|---|
| Checking | 尝试 TCP 连接 google.com:80 | 成功→Connected;失败→Disconnected |
| Connected | 蜂鸣器关、继电器常通(NC 导通) | 定时器到期→Checking |
| Disconnected | 蜂鸣器响 N 秒报警 | 延时后→RouterOff |
| RouterOff | 继电器断开(切断路由器供电) | 延时 T_off 后→RouterOn |
| RouterOn | 继电器合上(恢复供电) | 等待路由器启动 T_boot 后→Checking |
接线说明
- 蜂鸣器红线接 D3,黑线接 GND。
- 继电器 IN1 接 D0,VCC 接 5V,GND 接 GND。
- 路由器电源线剪断火线(或零线),一端接继电器 COM,另一端接 NC(常闭),正常通电;继电器吸合时断开。
- 高压警示:继电器底部裸露高压端子,必须置于绝缘外壳内,严禁带电操作。
核心代码框架 (GitHub 完整版)
// 状态枚举
enum State { Checking, Connected, Disconnected, RouterOff, RouterOn };
State currentState = Checking;
unsigned long lastCheck = 0;
const unsigned long CHECK_INTERVAL = 60000; // 1 分钟检测一次
void setup() {
pinMode(3, OUTPUT); // 蜂鸣器
pinMode(0, OUTPUT); // 继电器
digitalWrite(0, HIGH); // 继电器高电平触发,初始断开继电器(常闭导通)
WiFi.begin(SSID, PASS);
}
void loop() {
switch (currentState) {
case Checking:
if (millis() - lastCheck > CHECK_INTERVAL) {
if (checkWiFi()) currentState = Connected;
else currentState = Disconnected;
lastCheck = millis();
}
break;
case Connected:
digitalWrite(3, LOW); // 静音
break;
case Disconnected:
beepAlarm(3); // 响 3 秒
currentState = RouterOff;
break;
case RouterOff:
digitalWrite(0, LOW); // 继电器吸合,断开路由器供电
delay(ROUTER_OFF_TIME); // 如 10 秒
currentState = RouterOn;
break;
case RouterOn:
digitalWrite(0, HIGH); // 继电器释放,恢复供电
delay(ROUTER_BOOT_TIME); // 如 60 秒等路由器启动
currentState = Checking;
break;
}
}
bool checkWiFi() {
WiFiClient client;
return client.connect("google.com", 80); // 简单 TCP 握手测试
}
配置参数建议
CHECK_INTERVAL:60~300 秒,避免过度探测触发路由器防火墙。ROUTER_OFF_TIME:10~15 秒,确保电容放电彻底复位。ROUTER_BOOT_TIME:60~120 秒,视路由器型号调整。- 在代码中修改
SSID与PASS为你的 WiFi 凭据。
进阶优化
- 改用 MQTT 心跳检测本地服务器,减少外网依赖。
- 加 OLED 显示状态、倒计时、上次重启时间。
- 记录重启日志到 SD 卡或通过 MQTT 上报云端。
- 双路由器冗余:主路由挂了切备用线路(需双继电器)。
安全提醒
继电器切换市电属高危操作,务必:
- 使用正规认证继电器模块,额定电流 > 路由器功率/220V。
- 所有高压节点绝缘、固定、防触碰。
- 外壳接地、贴警示标签。
- 首次通电前用万用表验证通断逻辑正确。
制造工艺
- 快速原型为何是产品开发制胜关键:从虚拟到实体的必经之路
- 掌控产品设计:攻克常见挑战的实证策略全景图
- 直接将乐高 Mindstorms NXT 超声波传感器连接到树莓派
- Drone Pi:双模Multiwii+树莓派四轴飞行器,支持手机与遥控器控制
- 面向2030的工厂未来:AI、自动化、物联网与可穿戴关键趋势前瞻
- 驱动明天制造的四大“未来工厂”趋势
- 强化美国供应链:内陆港的战略角色
- 夏季工厂降温保安全攻略:实证策略保障员工舒适
- 数据总线深度解析:架构演进与核心技术全景
- 国际空间站传感器精准WiFi RSSI定位追踪
- 基于 WiFi 的实时位置追踪:是您资产管理的正确选择吗?
- RFID与WiFi资产追踪:技术、精度与成本对比