Arduino MKR GSM 1400 短信即时 GPS 定位追踪器
项目简介
利用 Arduino MKR GSM 1400 的蜂窝基站定位功能,无需 GPS 模块即可实现位置查询。向设备发送含字母 “L” 的短信,系统回复包含 Google Maps 链接的坐标短信。适合资产追踪、车辆防盗、人员定位等场景。
硬件清单
- Arduino MKR GSM 1400 ×1
- GSM 天线 ×1
- LiPo 电池(JST 接口,可选,应对弱信号大电流)
- 数据 SIM 卡(需开通数据业务)
- 智能手机(发送/接收短信)
工作原理
- MKRGSM 库管理 SMS 与蜂窝定位(
GSMLocation类)。 - 收到短信后检查内容是否为 ASCII 76(大写 “L”),作为简单鉴权。
- 调用
location.available()获取基站定位坐标,精度优于 300 米时采纳。 - 拼接
https://www.google.com/maps/place/回复发送者。, - 定位超时 45 秒,失败则返回上次有效坐标。
注意:基站定位精度取决于小区覆盖半径,城市区约 100–300 米,农村可达数公里。
核心代码结构
关键全局变量
String GSMlatitude = "0.000000";
String GSMlongitude = "0.000000";
measureLocation()
void measureLocation() {
unsigned long timeout = millis();
while (millis() - timeout < 45000) {
if (location.available() && location.accuracy() < 300 && location.accuracy() != 0) {
GSMlatitude = String(location.latitude(), 6);
GSMlongitude = String(location.longitude(), 6);
break;
}
}
}
connectNetwork()
使用 gsmAccess.begin(PIN) 与 gprs.attachGPRS(APN, user, pass) 建立数据连接,含超时重试机制。
loop() 主循环
- 调用
measureLocation()更新坐标。 - 5 秒窗口内轮询
sms.available()。 - 读取首字符,非 “L” 则丢弃;是 “L” 则组装 Google Maps 链接回复。
- 发送完成后
gsmAccess.shutdown()关闭模组,LowPower.sleep(60000)深度休眠 60 秒,醒来重连网络循环。
使用步骤
- 硬件连接:插天线、SIM 卡、可选 LiPo 电池。
- 在
arduino_secrets.h或 Web Editor Secrets 页填入 PIN、APN、用户名、密码。 - 上传代码,等待 30 秒左右网络注册成功。
- 手机发短信 “L” 到设备号码,稍等片刻收到含地图链接的回复短信。
进阶建议
- 更换鉴权字符或改为多字符密码,提升安全性。
- 结合 GPS 模块(如 u-blox NEO-6M)实现双模定位,提高精度。
- 添加运动检测(加速度计),仅在移动时上报,省电。
- 接入 MQTT/HTTP 服务器,实现实时轨迹记录而非单次查询。
制造工艺