APRS 协议介绍
自动位置回报系统(Automatic Packet Reporting System, APRS)是一种业余无线电中的实时数字通信协议,由 Bob Bruninga(呼号 WB4APR)开发。它不仅仅是一个车辆追踪系统,更是一个强大的信息分发网络,能够传输位置、气象数据、短消息、遥测数据等多种信息。APRS 的核心思想是“所见即所得”,网络中的所有电台都能看到在同一频率上广播的、未经寻址的单向数据包,从而实现对区域内动态信息的全面感知。
APRS 建立在 AX.25 协议之上。AX.25 是专为业余无线电设计的数据链路层(OSI 模型第二层)协议,它负责将数据封装成“帧”进行传输。可以将其理解为无线电世界的“以太网协议”。一个基本的 AX.25 帧包含了源地址(你的呼号)、目标地址、中继路径以及最重要的信息(Info)字段。APRS 协议正是对这个 Info 字段的内容和格式进行了标准化定义,使其能够承载各种应用数据。
数据格式
要理解 APRS 的工作方式,关键在于区分 AX.25 协议和 APRS 协议分别扮演的角色。一个 APRS 数据包,本质上是一个 AX.25 的 UI 帧 (Unnumbered Information frame)。这种帧的特点是“即发即忘”,它不需要建立正式的连接,也不要求接收方进行确认,非常适合 APRS 这种需要向所有人广播信息的场景。
我们可以把一个完整的 APRS 传输包比作一封信:
- AX.25 协议 定义了“信封”的格式:谁发的(源地址)、发给谁(目标地址)、以及通过哪些邮局传递(中继路径)。
- APRS 协议 定义了“信件”的内容:信件的类型(位置、天气、消息等)和具体信息。
两者由第一个冒号(:
)分隔。冒号之前是 AX.25 的路由信息,冒号之后是 APRS 的应用数据。
包文示例: BA7NAH-9>APRS,WIDE1-1,WIDE2-1:!3954.91N/11623.45E>TEST APRS
AX.25 协议部分
这部分负责数据包在无线网络中的路由和寻址,是 AX.25 链路层功能。
BA7NAH-9>APRS,WIDE1-1,WIDE2-1
- 源地址: 数据包的发送者。
BA7NAH
是呼号,-9
是 SSID,用于区分同一呼号下的不同设备。 - 目标地址: AX.25 帧必须有目标。由于 APRS 是广播系统,它使用一个约定的通用地址
APRS
作为“收件人”,所有 APRS 设备都会解码发往此地址的包。 - 中继路径: AX.25 允许定义中继站来转发数据。APRS 利用此功能,通过设置
WIDEn-N
这样的通用别名,让任何听到信号的数字中继器(Digipeater)都能智能地转发数据包,从而扩大覆盖范围。
SSID 列表
SSID | 用途 |
---|---|
0 | 家庭基站,或运行 iGate 的家庭基站 |
1 | 数字中继器,或运行中继/气象中继的家庭基站 |
2 | 第二个数字中继器,或 70cm 频段的中继 |
3 | 第三个数字中继器 |
4 | HF (短波) 到 VHF (甚高频) 网关 |
5 | iGate (非家庭基站) |
6 | 通过卫星操作 |
7 | 建伍 D7 手持电台 |
8 | 船只、帆船、轮船 |
9 | 移动台 (例如车载) |
10 | 仅通过互联网操作 (无射频) |
11 | APRS-TouchTone 用户 (有时也用于气球) |
12 | 便携设备 (如笔记本电脑、露营地等) |
14 | 卡车司机 |
15 | HF (短波) 操作 |
WIDEn-N 路径
WIDEn-N
是目前推荐的通用路径范式。
- n: 初始计数器。一个从
n
开始递减的数字。 - N: 最大跳数。
示例:BA7NAH-9>APRS,WIDE1-1,WIDE2-1
- 第一个 Digipeater 转发
BA7NAH-9>APRS,WIDE1*,WIDE2-1
。第一个WIDE1-1
的N
减 1 变成WIDE1*
表示转发结束。 - 第二个 Digipeater 接收到第一个 Digipeater 的转发,继续转发
BA7NAH-9>APRS,WIDE1*,WIDE2*
。
示例: BA7NAH-9>APRS,WIDE1-2
- 第一个 Digipeater 转发
BA7NAH-9>APRS,WIDE1-1
。 - 第二个 Digipeater 接收到第一个 Digipeater 的转发,继续转发
BA7NAH-9>APRS,WIDE1*
。
不正确的数据包:
BA7NAH-9>APRS,WIDE2-1
BA7NAH-9>APRS,WIDE2-1,WIDE1-1
BA7NAH-9>APRS,WIDE1-1,WIDE2-1,WIDE3-1,...
Digipeater 在转发数据包时可以插入自己的呼号来记录转发路径。例如:
收到:BA7NAH-9>APRS,WIDE1-1,WIDE2-1
转发:BA7NAH-9>APRS,BA7DIG-10,WIDE1*,WIDE2-1
APRS 协议部分
这部分是 AX.25 帧中 Info
字段的内容,其格式由 APRS 协议进行标准化。AX.25 协议本身不关心这部分内容的含义,只是原样投递。
位置信息格式
这是 APRS 最常见的应用。位置信息有多种格式,最基础的是未压缩的明文格式。
格式: !纬度/经度s标题/速度c...
- !: 数据类型标识符,表示这是一个实时 APRS 位置报告。
- 纬度:
ddmm.hhN
格式 (度、分、百分之一分、南北半球)。 - /: 纬度和经度的分隔符,同时也作为“符号表”的标识符。
- 经度:
dddmm.hhE
格式 (度、分、百分之一分、东西半球)。 - s: 代表图标的字符,与前面的符号表标识符共同决定最终显示的图标,图标集合。
- 标题/速度:
ccc/sss
格式,标题(000-360 度)和速度(节)。 - c…: 其他可选的遥测数据或注释。
示例: !3958.30N/11627.12E-Hello World!
这表示一个位于北纬 39 度 58.30 分,东经 116 度 27.12 分的位置报告,使用的图标是汽车(-),并附带消息“Hello World!”。
MIC-E 消息
- M0: Off Duty,空闲
- M1: En Route,途中
- M2: In Service,服务中
- M3: Returning,返回中
- M4: Committed,已承诺
- M5: Special,特殊状态
- M6: Priority,优先级
- Emergency,紧急状态
气象报告格式
APRS 可以传输来自自动气象站的数据。
格式: _c...s...g...t...r...p...h...b...
- _: 数据类型标识符,表示气象报告。
- c…: 风向(度)。
- s…: 过去一分钟的平均风速(英里/小时)。
- g…: 阵风风速(英里/小时)。
- t…: 温度(华氏度)。
- r…: 过去一小时的降雨量(百分之一英寸)。
- p…: 过去 24 小时的降雨量(百分之一英寸)。
- h…: 湿度(%)。
- b…: 大气压(十分之一毫巴/百帕)。
示例: _220/004g005t077r000p000h50b10235
这表示风向 220 度,风速 4mph,阵风 5mph,温度 77°F,湿度 50%,气压 1023.5hPa。
APRS-IS
APRS-IS(APRS Internet Service)是一个全球性的 TCP/IP 网络,它将世界各地的 iGate 连接起来。通过 APRS-IS,射频(RF)网络中的信息可以被传输到互联网上,使得没有无线电设备的用户也能通过网站或软件查看 APRS 活动。反之,互联网用户也可以通过 APRS-IS 将消息或数据包发送到射频网络中。
目前比较常用的在线 APRS 地图有:
注意以上地图只是从 APRS-IS 获取数据进行可视化,但并不提供 APRS-IS 的服务。
要向 APRS-IS 发送数据包,你需要一个连接到一个 APRS-IS 的转发服务器,你可以在 https://www.aprs2.net/ 上查看这些服务器地址。
为了防止网络滥用,连接到 APRS-IS 需要一个与你的呼号绑定的验证码(Passcode)。你可以通过在线生成器来获取你的验证码。
iGate 与 Digipeater
iGate(Internet Gateway)是连接本地 RF 网络和全球 APRS-IS 的桥梁。它是一台带有无线电设备和互联网连接的计算机。
iGate 的类型分为两种:
- 接收型(Rx-Only)iGate: 只接收本地 RF 信号并将其转发到 APRS-IS。这是最简单、最常见的 iGate 类型,对网络贡献巨大。
- 收发型(Tx/Rx)iGate: 不仅能接收,还能将从 APRS-IS 收到的、发往本地 RF 区域的消息或数据包通过无线电发射出去。设置此类 iGate 需要更谨慎,以避免在 RF 信道上产生不必要的拥堵。
目前常用于架设 iGate 的软件有:
Digipeater 则主要用于将接收到的 APRS 数据包处理后再次转发。它们通常不连接到互联网,只在本地 RF 网络中工作。