博主在前一篇文章《APRS小玩具:LoRa IGate》介绍了LoRa在APRS中的IGate网关应用,IGate是用来做固定网关的,得先搞好技术设施建设,基建搞好了我们接下来就可以搞五花八门的Tracker应用了,APRS的常见玩法无非:位置信标、短信息、邮件、遥测等,在此应用中都能一一实现。
本文介绍的固件LoRa_APRS_Tracker的和前文LoRa APRS iGate同属一位作者CA2RXU,与全能固件ESP32APRS_LoRa不同的是作者将IGate和Tracker功能分开来做,根据用途不同为两个固件设计了独立的界面,IGate固件偏向于WebUI界面控制,Tracker固件则完全使用按钮和屏幕操作,非常方便。
硬件
项目说明中给出了固件所支持的硬件,与IGate固件类似,可以使用成品LoRa开发板,也可以DIY用ESP32开发板和LoRa模块组装。
博主尝试了两种LoRa开发板和一个DIY组装件,总结了一些心得分享给大家。
图中分别为:TTGO Lora32 v2.1、HELTEC Wireless Tracker、DIY(ESP32 C3 + LoRa模块)
首先应该明白,作为便携Tracker必须具备:GNSS定位、LoRa射频、显示屏、电池管理电路和电池接口,集成所以这些模块的硬件有:TTGO T-Beam v1.2和HELTEC Wireless Tracker,使用这两个开发板的优势在于无需额外连接模块、GPIO配置无需修改,因此可以使用Web在线烧录,简单快捷。
如果打算自己DIY组装的话,建议:
- 选择拥有电源管理功能的ESP32 S3 Supermini,毕竟便携需要连接电池。
- LoRa射频模块博主目前手上只有安信可的RA-01、RA-01s、RA-02,测试发现只有RA-01可以正常使用;但安信可RA-01模块使用的是较老的SX1278 LoRa芯片,在接收灵敏度上不如新版的SX1268芯片,各位如果有测试稳定可用的其它品牌SX1268芯片LoRa模块可以分享一下。
- GNSS定位模块推荐使用中科微ATGM336系列(博主用的18*18mm)或者ublox的。
注意这里有一个坑:
Tracker固件有一个功能是通过蓝牙连接安卓APP APRSDroid发短信息或邮件,官方APP目前仅支持BT Classic(也就是经典蓝牙),而BLE(低功耗蓝牙)暂不支持,没有了APP的加持快乐减半啊。这么一来主控为ESP32 C3和ESP32 S3的开发板就暂时无法使用蓝牙功能了。
综上所述,DIY开发板推荐使用ESP32 WROOM,而成品开发板推荐使用全集成的TTGO T-Beam v1.2(分6M和M8N两个版本,前者是单模GNSS模块,定位效果较差。),装上18650电池就能用;或者Heltec Wireless Tracker(需要外接聚合物电池和开关),还有就是博主目前使用的,也是下文举例用的TTGO Lora32 v2.1。
TTGO Lora32 v2.1没有GNSS模块所以需要外接,模块TX连GPIO34、RX连GPIO12、VCC连3.3v、G连GND;除此之外还要找一个微动开关将GPIO15和GND连接用作菜单键,因为板子上没有BOOT按钮,Tracker固件的日常操作全凭这个按钮。
3D打印外壳借鉴了Printables上的图纸,博主做了修改,顶部增加一块18*18mm的区域放GNSS定位模块,底部用不到的TF卡插槽做了封闭,只留一个MicroUSB口充电和传输数据,需要的友台可以在此下载。
烧录
和IGate固件一样,作者CA2RXU也为Tracker提供了Web在线烧录,博主推荐此方式,原因就是简单快捷无门槛,根据页面提示操作就行,这里就不详细阐述了。
如果你有软件基础,想修改GPIO来扩展功能,或者定制个性化固件,那就需要修改源代码并编译烧录了,编译需要先安装VisualStudioCode+PlatformIO开发环境,参考教程,而后到LoRa_APRS_Tracker项目主页下载代码ZIP包并解压。
打开VisualStudioCode,在PlatformIO扩展下选择“Open Project”
选择刚才解压好的代码文件夹并打开项目
在项目的“variants”目录下找对应型号的“boards_pinout.h”文件,就可以对芯片及引脚进行自定义了。
修改“src”目录下的代码可以实现功能和菜单个性化。
这里有一个“power_utils.cpp”文件需要注意,该文件包含电源管理代码,因为固件通过GPIO35(上图BATTERY_PIN参数)获取到的电池电压不准确,所以我们需要用万用表测量电池的实际电压,然后在代码中增加偏移量,使屏幕显示电压和实际电压保持一致。
改好保存后依次选择:1.板子模块型号 2.对应串口 3.编译 4.烧录
接下来修改工作参数,在项目的“data”目录下找文件“tracker_conf.json”编辑,也可以在烧录完成后进入WebUI里修改(需要将wifiAP段里的active改为true并设置password,首次启动时就可以通过AP接入点进入WebUI了)。
与IGate固件不同的是:Tracker固件可以预定义三组呼号+SSID并设置各自的图标备注及智能信标参数,而且LoRa模块的频率和功率参数也可以预定义三组随时切换,非常方便。
具体的设置项目就不详述了,参见项目WiKi。
这里需要注意的是:频率尽量统一,固件默认433.775MHz是ITU第一区的ISM段频率。博主查阅了相关资料,虽然我国没有划分ISM段,但根据无线电管理条例对微功率设备的使用是无需许可的,前提是符合微功率技术要求,参照要求433.775MHz发射时功率不得超过10mW(包含天线增益),也就是10dBm,所以这里Power建议修改为10以内;
{ "beacons": [ # 三组配置分别为步行、单车、汽车 { "callsign": "BG9ABC-3", "gpsEcoMode": false, "symbol": "[", # 和overlay同为图标参数 "overlay": "/", # 参考aprs.tv/symbols "micE": "", "comment": "", # 信标内容 "smartBeaconActive": true, # 是否使用智能信标 "smartBeaconSetting": 0 # 根据速度自动切换 }, { "callsign": "BG9ABC-3", "gpsEcoMode": false, "symbol": ">", "overlay": "/", "micE": "", "comment": "", "smartBeaconActive": true, "smartBeaconSetting": 2 }, { "callsign": "BG9ABC-3", "gpsEcoMode": false, "symbol": "b", "overlay": "/", "micE": "", "comment": "", "smartBeaconActive": true, "smartBeaconSetting": 1 } ], "display": { "showSymbol": true, # 屏幕显示信标图标 "ecoMode": false, # 屏幕省电模式 "timeout": 4, # 开启省电模式后的熄屏延时 "turn180" : false # 180度翻转屏幕 }, "battery": { "sendVoltage": false, # 信标内容包含电池电压 "voltageAsTelemetry": true, "sendVoltageAlways": false # 每个信标中都包含电压 }, "other": { "simplifiedTrackerMode": false, "sendCommentAfterXBeacons": 10, "path": "WIDE1-1", # 信标转发路径 "nonSmartBeaconRate": 10, # 未开启智能信标的发送间隔 "rememberStationTime": 60, # 信标接收列表的保存时长 "standingUpdateTime": 15, # 位置未变化时的发送间隔 "sendAltitude": false, # 信标内容包含海拔 "disableGPS": false }, "winlink": { "password": "ABCDEF" # 需要申请winlink.org }, "bme": { "active": false, # 激活已连接的bme280传感器 "temperatureCorrection": 0.0, "sendTelemetry": false # 传感器数据通过遥测信标发送 }, "notification": { # 外接指示灯和蜂鸣器的设置 "ledTx": false, "ledTxPin": 13, "ledMessage": false, "ledMessagePin": 2, "ledFlashlight": false, "ledFlashlightPin": 14, "buzzerActive": false, "buzzerPinTone": 33, "buzzerPinVcc": 25, "bootUpBeep": false, "txBeep": false, "messageRxBeep": false, "stationBeep": false, "lowBatteryBeep": false, "shutDownBeep": false }, "lora": [ # 三组射频配置 在菜单中切换 { "frequency": 433775000, "spreadingFactor": 12, # LoRa射频参数 保持默认 "signalBandwidth": 125000, # LoRa射频参数 保持默认 "codingRate4": 5, # LoRa射频参数 保持默认 "power": 10 # 功率dBm 建议10以内 }, { "frequency": 434855000, "spreadingFactor": 9, "signalBandwidth": 125000, "codingRate4": 7, "power": 10 }, { "frequency": 439912500, "spreadingFactor": 12, "signalBandwidth": 125000, "codingRate4": 5, "power": 10 } ], "bluetooth": { "type": 1, # 0.iPhone 1.Android 2.BLE Text "active": true # 始终打开蓝牙 }, "pttTrigger": { # 联动外部电台或功放 "active": false, "io_pin": 4, "preDelay": 0, "postDelay": 0, "reverse": false }, "wifiAP": { # 修改文件配置或WebUI配置二选一 "active": false, # 第一次启动时打开AP接入点和WebUI "password": "1234567890" # AP接入点密码 } }
无论“tracker_conf.json”文件改动与否,都要将其上传。左侧选择PlatformIO蚂蚁图标,点击“Upload Filesystem Image”上传工作参数到板子。
完成后按RST重启,屏幕上看到呼号就说明上传的设置生效了,如果开启了wifiAP选项此时就可以搜索到名为“LoRaTracker-AP”的WiFi接入点,浏览器输入IP打开WebUI修改配置,此处不做详述,参见项目WiKi。
操作
屏幕显示内容丰富简洁大方,定位成功会显示校准后的时间(UTC)、经纬度、QTH、卫星数量、海拔、速度、近一次收到的信标或短消息,电池电压及百分比。
单击菜单按钮手动发射信标(卫星数必须大于4),长按可以在三个预定义呼号配置间切换,双击打开/关闭主菜单,可以收发短信息和Winlink/Mail(需要连接I2C键盘或者蓝牙APP)、查看信标接收列表、发送天气预报请求(国内不好用)、修改频率等。在菜单界面单击向下翻、长按确定、双击返回,还是蛮好操作的。
接下来要说的蓝牙APP功能博主非常喜欢,这也就是前文慎重选择硬件的原因。
首先确保开发板支持BT经典蓝牙(官方版本APRSDroid目前不支持BLE低功耗蓝牙),且“tracker_conf.json”或WebUI中开启了蓝牙,通过手机蓝牙设置完成配对。
打开安卓APP APRSDroid,在“偏好设置”里选择“连接首选项 ”,协议选择“明文TNC2”,连接类型为蓝牙SPP,TNC蓝牙设备选择已配对的Tracker,其余默认即可。
设置完成后点击右上角“信息”创建一条Message
回到主页点击“发送位置“即可发射Message(关掉APP的GPS定位权限就不会额外发送位置信标了),整个发送过程非常优雅:
A发送消息 –> B接收解码 –> B发送回执 –> A接收回执
博主最近出门兜里一直装着LoRa Tracker,一有空就拿出来测试发射接收,实际效果也令人满意,在海拔较高的地方测试最远传输距离已经达到了80公里。
下一步准备在市区部署一些LoRa IGate/Digi节点,根据覆盖区域规划好各自的转发规则,研究一下LoRa Message和Winlink Mail。
先留言再阅读,一起长安携神器云游
要好好学习学习,博主石榴籽!
牛逼,抄作业已完成。
羡慕了
“只有RA-01可以正常使用”
可以试试把tracker_config.json里的pin全部改成-1,看代码应该是完全可以兼容多种模块的
“APP目前不支持BLE低功耗蓝牙”
有个folk可以试试
https://github.com/ge0rg/aprsdroid/issues/124#issuecomment-2477453541
01和02的模块是一样的,区别只在于有无IPEX天线座,我尝试了RA-02发现不行,也有可能是手上的这个模块有问题。
之前看到过这个修改版APRSDroid的视频,TNC设置里有BLE选项,但是不知为何APP总提示装不上,只能期待官方加入BLE的支持,毕竟Meshtastic都支持。
感谢建议!
LILYGO分 Paxcounter 和Disaster-Radio,我该选哪个?
不清楚,我买的那家只有一种。
感谢版主。
大佬咨询下,我的一直卡这2个界面,请问是哪里出错了?感谢。
PS:已连接好按钮和GPS模块也接了电池。望请大佬指点,万分感谢。
用官方网页方式刷入的话首次启动需要手机连WiFiAP然后浏览器输入192.168.4.1进Web页面设置参数,加了按键的话建议用编译方式刷固件,刷之前要把按键的GPIO0加入到代码里。
在最新固件中作者已经把“BATTERY_PIN”按键参数加入到代码里了,默认为GPIO15,以后无需修改。
博文已做更新