SmartWay:基于 Arduino MKR Fox 1200 的儿童上学路径监护系统
项目初衷
父母总担心孩子上下学安全与准时。SmartWay 利用 GPS 定位 + Sigfox 低功耗广域网,实时监测孩子位置,偏离预设路线、到校/放学迟到、准时到达均通过邮件通知家长,并由设备端 RGB LED 与振动马达就地提醒孩子。
核心硬件
- Arduino MKR Fox 1200(内置 Sigfox 模块)×1
- GPS 模块 GY-NEO6MV2 ×1
- RGB 共阴 LED ×1
- 振动马达 ×1 + NPN 三极管 + 1 kΩ 电阻 + 0.1 µF 电容(驱动电路)
- 2×AA 电池盒 + 电池(供电)
- 跳线、面包板若干
软件架构与关键流程
六大功能模块
- Warn System:封装 LED 颜色(绿/橙/红)与振动马达触发函数。
- Get GPS:解析 NMEA 数据,获取经纬度与 UTC 时间。
- Synch RTC:首次上电从 GPS 同步板载 RTC,后续离线计时。
- Process Location:核心判逻辑——
•isOut()判断是否偏离路径(多边形围栏)
•isSchoolTime() / isHomeTime()判断上下学时间窗
•isSchool() / isHome()判断是否到达目标点 - Do Actions:根据判定结果调用 Warn System 并决定是否发包。
- Send Package:通过 Sigfox 发送 12 字节极简载荷:
“off track” / “at home” / “at school” / “late”
偏离路线处理机制
- 首次偏离:红灯 + 震动 1 秒,给 2 分钟纠正时间。
- 2 分钟后仍偏离:发送 “off track” 邮件(含坐标),此后每 2 分钟重发直至到达终点。
到校/回家判定
- 在时间窗内到达目标点:绿灯 + 震动,发 “at school” 或 “at home”。
- 时间窗结束未到达:橙灯 + 震动,发 “late”。
Sigfox 后端配置
- 登录 Sigfox Backend,进入 Device Type 编辑 MKR Fox 设备。
- 添加 Custom Callback,类型选 HTTP,URL 指向自有邮件网关或 IFTTT Webhook。
- Body 模板示例:
{"device":"{device}","msg":"{data}","lat":"{lat}","lng":"{lng}"} - 邮件网关解析 JSON,发送格式化邮件给家长。
用户自定义变量(需按实际修改)
- 上学时间、放学时间、路程预估时长
- 学校坐标、家庭坐标(经纬度)
- 调试开关
外壳设计
两块亚克力板热弯 90° 封装电路,扎带固定,电池盒置底,顶部透明盖保护走线,仅露出 GPS 天线与指示灯,佩戴舒适美观。
库依赖
- SigFox、RTCZero、TinyGPS++、ctype、String 均为 Arduino 官方或公共库,IDE 库管理器可直接安装。
完整代码
项目 GitHub 仓库提供完整 .ino 与 functions.h,上传前请务必修改所有标记 “TODO” 的变量。
制造工艺