构建一个带方向信息的多节点LoRa雷达追踪器
在小径、森林、骑行路线或农田中,手机信号覆盖迅速消失。基于手机的追踪系统恰好在你最需要时失效。我想要一个简单实用的解决方案:一款小巧的设备,能显示朋友或车辆的位置、朝向以及电池电量是否即将耗尽,且无需SIM卡、无需云端服务,也无需安装应用程序。
最终诞生的是TrackPulse——一款紧凑型LoRa追踪器,配有类似雷达的实时显示屏。所有设备运行相同的固件程序。只需开启几台设备,它们便会自动互相发现,并出现在彼此的雷达上。
它做什么
•实时雷达视图:附近节点在正确距离和方向上以三角形形式显示。
•朝向显示:当您转弯时,雷达会随之旋转,因此“向上”始终指向您的朝向。
•对等朝向:每个三角形指向相应人员或车辆的朝向。
•节点数据:距离、速度、高度以及链路强度(RSSI)。
•电池监控:每台设备实时显示电压和电量百分比,低电量时变为红色。
•多节点群集:单个网络最多可连接6台设备,无需为每台设备单独设置。
•活动点指示:发送时红点闪烁,接收时绿点闪烁。
•搜索动画:雷达扫描持续进行,直到找到目标节点为止。
工作原理(整体概述)
每个节点执行四项任务:
- 知道自身位置(GNSS定位、高度、速度);
- 知道自身朝向(IMU传感器融合);
- 每约10秒通过LoRa广播这些信息;
- 根据自身的朝向将其他所有节点绘制到雷达图中,用自身朝向作为“向上”方向。
硬件
•XIAO ESP32S3:小巧、高速,具备充足的UART和I²C接口,满足各种需求。
•REYAX RYLR498(433 MHz):一款通过简单AT命令控制的LoRa模块,支持最高22 dBm输出功率和约-129 dBm灵敏度。
•GP-02 GNSS(AT6558R):可接收GPS、北斗、GLONASS、伽利略、QZSS和SBAS信号,输出标准NMEA格式数据,并配备集成陶瓷天线。
•BMX160:一款9轴惯性测量单元(加速度计、陀螺仪、磁力计),用于稳定航向定位。
•MAX17048:通过I²C接口提供精确的电池电压和电量状态的燃油表。
•GC9A01:清晰圆润的显示屏,非常适合雷达外观设计。
布线
IMU 和燃油表共用一条I²C总线。燃油表的响应地址固定为(0x36),因此不会发生冲突。[请补充如何为GP-02供电(3V3或升压至5V)以及LiPo电池、USB-C充电器和开关的连接方式]
机箱
我设计了一个小型3D打印的外壳,带有用于显示屏的镂空、用于GNSS天线的凸起垫、LoRa天线的开口以及电源开关的侧边缝隙。我制作了红色和黄色各一个,以便能区分不同设备。
固件:工作原理
固件使用Arduino C++编写。我没有发布完整的源代码,但以下是关键的设计思路。
1. 零配置蜂群
无需设置固定地址。每个设备都使用共享的网络名称,在启动时该名称会被转换为LoRa网络ID,因此所有设备都会加入同一个网络。每个设备的地址来自其芯片的唯一硬件ID,因此不会发生设备冲突。所有消息都会被广播,因此任意数量的附近节点都能接收到。该网络最多支持6个设备(5个对等设备加上你自己)。这意味着你可以在所有设备上烧录相同的文件。
2. 紧凑型数据包
每个节点发送一条简短的文本行:
为避免单位在同一时间传输,每个节点在其约10秒的间隔中加入一小段随机延迟。若某个对等节点保持静默25秒,则会从雷达中消失。
3. 传感器融合的航向
单独使用指南针会存在噪声,单独使用陀螺仪则容易漂移,因此我通过互补滤波器结合三个传感器:
•陀螺仪提供平滑且快速的旋转信息。
•加速度计用于锚定倾斜(横滚和俯仰)。
•经倾斜补偿的磁力计用于锚定真实航向(偏航)。
陀螺仪在启动时需进行校准,因此开机时请保持设备静止片刻。融合后的航向会显示在屏幕上,并实时传输,以便其他节点可获取你的朝向方向。
4. 雷达数学
对于每个同伴,固件会计算从两个GPS位置到你的距离和方位角,然后减去你自己的航向,使雷达始终朝上。距离对应屏幕上的半径。当前满量程范围设置为2公里,且可轻松更改。
5. 平滑的用户界面
雷达会先从屏幕外绘制,然后以约30帧每秒的速度一次性推送到显示区域,因此旋转过程无闪烁。较慢的项目(如卫星、节点数量、电池)每秒刷新一次。
6. 电池电量监测
燃油表每2秒读取一次。底部显示电压和百分比(例如4.0V 78%),当电量低于15%时会变为红色。如果未检测到电表,设备将继续运行并显示“BATT --”。
自行设置
•按照上图组装并连接模块。
•在Arduino IDE中安装四个库。
•为每个设备刷写相同的固件。
•将设备带出室外,等待GPS定位。
•开启第二台设备,两台设备应出现在彼此的雷达上。
测试与结果
•距离测试:几公里
•电池续航时间:超过一天
•GPS锁定时间:30秒
•航向精度:优秀
•封面照片说明:由于设备处于室内环境,屏幕显示的是GPS漂移数据,请忽略其中的距离读数。实际测试均在户外进行。
局限性与经验教训
•LoRa通信带宽低,因此位置更新大约每10秒一次,而非实时。
•GPS精度受天空视野影响,在室内时会出现漂移。
•磁力计可能受到附近金属和磁体干扰,因此请将惯性测量单元(IMU)远离这些物体。
•不同国家对发射功率和频率的规定不同,请在设置前确认当地法规。
•本版本中消息未加密。
本文编译自hackster.io





