跳到内容

APRS小玩具:LoRa Tracker

博主在前一篇文章《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 + RA-01)

首先应该明白,作为便携Tracker必须具备:GNSS定位、LoRa射频、显示屏、电池管理电路和电池接口,集成所以这些模块的硬件有:TTGO T-Beam v1.2和HELTEC Wireless Tracker,使用这两个开发板的优势在于无需额外连接模块、GPIO配置无需修改,因此可以使用Web在线烧录,简单快捷。

如果打算自己DIY组装的话,建议:

  1. 选择拥有电源管理功能的ESP32 S3 Supermini,毕竟便携需要连接电池。
  2. LoRa射频模块博主分别测试了安信可的RA-01、RA-01s、RA-02,发现只有RA-01可以正常使用。
  3. GNSS定位模块推荐使用中科微ATGM336系列(博主用的18*18cm)或者ublox的。

注意这里有一个坑:

Tracker固件有一个功能是通过蓝牙连接安卓APP APRSDroid发短信息或邮件,APP目前仅支持BT Classic(也就是经典蓝牙),而BLE(低功耗蓝牙)暂不支持,没有了APP的加持快乐减半啊。这么一来主控为ESP32 C3和ESP32 S3的开发板就暂时无法使用蓝牙功能了。

综上所述,DIY开发板推荐使用ESP32 WROOM,而成品开发板推荐使用全集成的TTGO T-Beam v1.2,装上18650电池就能用;还有就是博主目前使用的,也是下文举例用的TTGO Lora32 v2.1。

TTGO Lora32 v2.1没有GNSS模块所以需要外接,模块TX连GPIO34、RX连GPIO12、VCC连3.3v;除此之外还要找一个微动开关将GPIO0和GND连接用作菜单键,因为板子上没有BOOT按钮,Tracker固件的日常操作全凭这个按钮。

3D打印外壳借鉴了Printables上的图纸,博主做了修改,顶部增加一块18*18mm的区域放GNSS定位模块,底部用不到的TF卡插槽做了封闭,只留一个MicroUSB口充电和传输数据,需要的友台可以在此下载

 

烧录

和IGate固件一样,作者CA2RXU也为Tracker提供了Web在线烧录,简单快捷,根据页面提示操作就行,这里就不详细阐述了。

由于额外增加了菜单按钮,所以我们需要修改源代码并编译烧录,编译需要先安装VisualStudioCode+PlatformIO开发环境,参考教程,而后到LoRa_APRS_Tracker项目主页下载代码ZIP包并解压。

打开VisualStudioCode,在PlatformIO扩展下选择“Open Project”

选择刚才解压好的代码文件夹并打开项目

在项目的“src”目录下找文件“boards_pinout.h”编辑,找到主控对应型号,可以看到GPIO34和GPIO12已经和我们刚才GNSS模块的TXRX对应,无需修改,剩下的只要在下面增加一行BUTTON_PIN对应菜单按键的GPIO0即可。

这里还有一处需要修改,在项目的“src”目录下找文件“power_utils.cpp”编辑,该文件包含电源管理代码,因为固件通过GPIO35(上图BATTERY_PIN参数)获取到的电池电压不准确,所以我们需要用万用表测量电池的实际电压,然后在代码中增加偏移量(代码77行附近)使屏幕显示电压和实际电压保持一致。

改好保存后依次选择:1.板子型号  2.对应串口  3.编译  4.烧录

接下来修改工作参数,在项目的“data”目录下找文件“tracker_conf.json”编辑,也可以在烧录完成后进入WebUI里修改(需要将wifiAP段里的active改为true并设置password,首次启动时就可以通过AP接入点进入WebUI了)。

与IGate固件不同的是:Tracker固件可以预定义三组呼号+SSID并设置各自的图标备注及智能信标参数,而且LoRa模块的频率和功率参数也可以预定义三组随时切换,非常方便。

具体的设置项目就不详述了,参见项目WiKi

这里需要注意的是:频率尽量统一使用433.775MHz,毕竟我国ISM段是免执照使用,不过前提条件是功率不超过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,
            "signalBandwidth": 125000,
            "codingRate4": 5,
            "power": 20
        },
        {
            "frequency": 434855000,
            "spreadingFactor": 9,
            "signalBandwidth": 125000,
            "codingRate4": 7,
            "power": 20
        },
        {
            "frequency": 439912500,
            "spreadingFactor": 12,
            "signalBandwidth": 125000,
            "codingRate4": 5,
            "power": 20
        }
    ],
    "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经典蓝牙(APP目前不支持BLE低功耗蓝牙),且“tracker_conf.json”或WebUI中开启了蓝牙,通过手机蓝牙设置完成配对。

打开安卓APP APRSDroid,在“偏好设置”里选择“连接首选项 ”,协议选择“明文TNC2”,连接类型为蓝牙SPP,TNC蓝牙设备选择已配对的Tracker,其余默认即可。

设置完成后点击右上角“信息”创建一条Message

回到主页点击“发送位置“即可发射Message(关掉APP的GPS定位权限就不会额外发送位置信标了),整个发送过程非常优雅:

A发送消息  –>  B接收解码  –>  B发送回执  –>  A接收回执

博主最近出门兜里一直装着LoRa Tracker,一有空就拿出来测试发射接收,实际效果也令人满意,最远传输距离已经达到了80公里。

下一步准备在市区部署一些LoRa IGate节点,根据覆盖区域规划好各自的转发规则,研究一下LoRa Message和Winlink Mail。

发表于无线电

3 条评论

  1. BI9ABS BI9ABS

    先留言再阅读,一起长安携神器云游

  2. bh9fdz bh9fdz

    要好好学习学习,博主石榴籽!

  3. 牛逼,抄作业已完成。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

允许上传的最大文件为2 MB。 您可以上传:图像, 视频, 存档 Drop file here