- 嵌入式
- 物联网
- 机器人
- 自动驾驶
- 智能硬件
【免费下载链接】PX4-Autopilot
PX4 Autopilot Software
导读
SiK(SiK Radio)是一套面向遥测电台(telemetry radio)的开源固件与工具集,PX4 飞控与其保持协议兼容,是连接飞控与地面站之间无线 MAVLink 链路最常见的方案之一。本文以 PX4 仓库中开发者向文档 docs/en/data_links/sik_radio.md 为主体,系统讲解 SiK 固件的支持硬件、从源码构建固件、通过 AT 命令完成电台配置的完整流程,并结合仓库内遥测集成资料,说明如何在 PX4 侧将 SiK 电台接入TELEM1端口并完成串口参数配置。读完本文,你将能够独立完成一对 SiK 遥测电台的刷机、配对与 PX4 集成,解决"两块电台无法建立链路"等常见问题。
SiK 是什么,PX4 如何与之协同
SiK 是 LorenzMeier 维护的一套遥测电台固件与工具集合(仓库名即SiK),它运行在基于 8051 内核的廉价射频模块上,提供透明串口桥接与 MAVLink 协议帧封装能力。PX4 官方文档明确说明:PX4 与使用 SiK 固件的电台协议兼容,一般情况下即插即用,无需额外驱动或协议适配,相关说明见 docs/en/telemetry/sik_radio.md 与 docs/en/telemetry/index.md。
典型使用形态是一对电台:
- 机载电台:通过 6 针 JST-GH 线缆接到飞控的
TELEM1端口(TELEM2也可用,但默认推荐TELEM1),通常无需额外配置; - 地面端电台:通过 USB 接入地面站(如 QGroundControl),基本属于即插即用。
SiK 电台之所以在 PX4 生态中流行,是因为其固件专门针对 MAVLink 数据包做了优化,并可与 QGroundControl、PX4 Autopilot 深度集成。硬件上,SiK 电台有 915 MHz(美国等区域)与 433 MHz(欧盟、亚洲、非洲、大洋洲大部分地区)等频段变体,选择时需对照当地无线电法规。
注意:PX4 仓库中 docs/en/data_links/sik_radio.md 是开发者向的深度文档,聚焦"如何从源码构建固件 + AT 命令配置";面向普通用户的"如何使用"说明位于 docs/en/telemetry/sik_radio.md。本文整合两层内容,供开发者一站式查阅。
支持的电台硬件
根据 docs/en/data_links/sik_radio.md,SiK 仓库包含以下遥测电台的 bootloader 与固件(截至 2020-02-25):
| 型号 | 说明 |
|---|---|
| HopeRF HM-TRP | 标准 SiK / 3DR 电台常用的射频模块 |
| HopeRF RF50-DEMO | HopeRF 评估/演示模块 |
| RFD900 | RFDesign 长距电台(经典款) |
| RFD900a | RFD900 改良版 |
| RFD900p | 高功率版 |
| RFD900pe | 高功率增强版 |
| RFD900u | 带 USB 接口版 |
| RFD900ue | 带 USB 接口增强版 |
仓库文档同时给出一个重要限制提示:SiK 仓库目前没有 RFD900x 与 RFD900ux 的固件。若需要对这两款电台升级固件(例如为了支持 MAVLink v2.0),官方建议的流程是:
- 从 RFDesign 官网固件页面下载对应固件;
- 在 Windows PC 上安装 RFD Modem Tools;
- 使用 RFD Modem Tools 的 GUI 界面将固件刷入 RFD900x / RFD900ux。
在 PX4 生态中,基于 SiK 的成品电台由多家厂商提供,PX4 仓库文档列出的供应商包括:
- Holybro Telemetry Radio
- HolyBro SiK Long Range
- RFD900 Telemetry Radio
- ThunderFly TFSIK01 Telemetry Radio
HKPilot Telemetry Radio(已停产)3DR Telemetry Radio(已停产)
其中 RFD900 系列被定位为"长距"方案,官方宣称使用普通天线即可在 5 km 以上保持可靠连接。而 Holybro 等"短距/桌面级"方案(100 mW 可调功率、-117 dBm 接收灵敏度)典型开箱距离为 300 m 以上,配合地面端平板天线可扩展到数公里。这些电台普遍具备跳频扩频(FHSS)、可配置占空比、最高纠正 25% 位错误的纠错能力,并可通过 Mission Planner / APM Planner 进行配置(详见 docs/en/telemetry/holybro_sik_radio.md)。
从源码构建 SiK 固件
构建 SiK 固件需要 8051 编译器,而它不在 PX4 默认构建工具链中,必须单独安装。仓库文档给出的完整流程如下(以 Mac OS 为例,Linux 下安装对应发行版的 sdcc 包即可)。
1. 安装 SDCC 工具链
brew install sdccSDCC(Small Device C Compiler)是 8051 等小型嵌入式平台的开源 C 编译器,SiK 固件正是基于 8051 架构的(如 HopeRF HM-TRP 模块),因此这是编译链路的关键依赖。
2. 克隆仓库并编译
git clone https://github.com/LorenzMeier/SiK.git cd SiK/Firmware make installmake install会根据默认目标配置编译出各支持电台的固件镜像(如dst/radio~hm_trp.ihx),.ihx是 Intel HEX 格式的固件文件。
3. 刷写固件到电台
使用 SiK 仓库自带的 Python 上传工具(记得把串口号改成你实际的设备名):
tools/uploader.py --port /dev/tty.usbserial-CHANGETHIS dst/radio~hm_trp.ihx示例中的radio~hm_trp.ihx即标准 SiK / 3DR 电台对应的固件镜像。如果你的电台是其他型号,请从dst/目录中选择对应的.ihx文件。
使用 AT 命令配置电台
SiK 固件内置了类 Hayes 风格的 AT 命令集,用于查询状态、修改参数与保存配置。整体流程为:打开串口终端 → 进入命令模式 → 查看/修改参数 → 写回并重启。
1. 打开串口终端
screen /dev/tty.usbserial-CHANGETHIS 57600 8N1关键参数:
- 波特率57600(SiK 电台默认的 AT 命令通信波特率,8N1 即 8 数据位、无校验、1 停止位);
- 设备路径需替换为实际串口名(Mac 下形如
/dev/tty.usbserial-*,Linux 下常为/dev/ttyUSB0)。
2. 进入 AT 命令模式
在串口终端中输入转义序列:
+++⚠️ 重要:在输入
+++之前和之后的一秒内,不要键入任何其他字符。这是 Hayes 风格命令模式的标准保护机制,防止飞行过程中遥测数据里的+++序列误触发命令模式。
3. 查看当前配置
ATI5ATI5用于列出电台当前的完整参数设置(Net ID、波特率、发射功率、占空比、空中速率等),是配置前必做的"先查后改"步骤。
4. 设置 Net ID、保存并重启
ATS3=55 AT&W ATZATS3=55:将 Net ID(网络 ID,对应S3参数)设置为55。配对使用的两块电台必须设置为相同的 Net ID 才能建立链路,这是多组电台在同一区域同时工作而不互相干扰的关键;AT&W:将当前参数写入非易失存储(断电不丢失);ATZ:重启电台,使新配置生效。
提示:若重启后仍未连接到第二块电台,可能需要对电台进行断电重上电(power-cycle)。
PX4 侧的集成与串口配置
SiK 电台刷好固件、配对完成后,剩下的工作就是让 PX4 与机载电台正确通信。PX4 通过 MAVLink 模块与遥测端口进行交互,见 docs/en/data_links/telemetry.md:只要电台支持 MAVLink 且提供电平与接口兼容的 UART,就无需再做协议级集成。
TELEM1 端口与 SER_TEL 参数
机载电台默认接到飞控TELEM1端口。PX4 启动脚本中通过SER_TEL1_BAUD参数设定该端口的串口波特率,例如:
- ROMFS/px4fmu_common/init.d/airframes/6002_draco_r 中设置
param set-default SER_TEL1_BAUD 57600,与 SiK 电台常用的 57600 波特率一致; - 而 ROMFS/px4fmu_common/init.d/airframes/4016_holybro_px4vision 等机型的
TELEM1则默认配置为 921600,用于高速数传链路。
因此在接入 SiK 电台时,通常需要把飞控的SER_TEL1_BAUD与电台的串口波特率设置为一致(常见为 57600)。同理,若使用TELEM2端口,则对应SER_TEL2_BAUD。这一参数映射关系可以从仓库启动脚本中看到,例如 ROMFS/px4fmu_common/init.d/airframes/18001_TF-B1 设置了SER_TEL2_BAUD 9600,ROMFS/px4fmu_common/init.d/airframes/4601_droneblocks_dexi_5 设置了SER_TEL2_BAUD 3000000,可见不同机型对遥测端口波特率的差异化需求。
MAVLink 实例的启动方式
在 PX4 启动脚本中,遥测端口上的 MAVLink 实例通过mavlink start命令显式拉起。例如:
- ROMFS/px4fmu_common/init.d/rcS 第 620 行附近:
mavlink start -d /dev/ttyACM0,通过-d指定 UART 设备; - ROMFS/px4fmu_common/init.d/airframes/4901_crazyflie21 中的示例:
mavlink start -d /dev/bridge0 -b 57600 -m osd -r 40000,其中-b 57600显式指定波特率,-m osd指定 MAVLink 模式,-r 40000指定数据速率。
对于采用标准 Pixhawk 布局的飞控,TELEM1在启动流程中会被自动挂载为 MAVLink 遥测实例,这也是"机载电台接TELEM1即可用"的底层原因。此外,MAVLink 模块还支持跨端口转发,例如 src/modules/mavlink/module.yaml 中记录了在 TELEM2 上启用 MAVLink 转发的相关选项,适用于需要把遥测链路扩展到第二端口的场景。
地面站侧
地面端电台通过 USB 接入 PC/地面站,Windows 下会自动安装驱动并显示为一个新的"USB Serial Port"(COM 口),QGroundControl 或 Mission Planner 直接选择该端口即可建立连接,无需任何额外配置。
常见问题与排查
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 两块电台无法建链(配对不上) | Net ID 不一致;需要断电重启 | 用 AT 命令确认并统一两块电台的S3参数,AT&W保存后ATZ重启,必要时 power-cycle |
| 建链后地面站无数据 | 飞控TELEM1波特率与电台不一致 | 将SER_TEL1_BAUD与电台串口波特率(如 57600)设为一致 |
| 老硬件无法使用 MAVLink 2 | 固件过旧 | 按本文流程重新编译并刷写新版 SiK 固件 |
| RFD900x / RFD900ux 无法刷 SiK 固件 | SiK 仓库不支持该型号 | 改用 RFDesign 官方固件 + RFD Modem Tools 刷写 |
| 误入命令模式导致链路中断 | 遥测数据中出现+++序列 | 遵循"输入+++前后 1 秒不键入任何字符"的原则,配置完成后及时退出命令模式 |
总结
SiK Radio 是 PX4 生态中验证最充分、集成成本最低的遥测方案之一:对普通用户,成品电台接上TELEM1即用;对开发者,docs/en/data_links/sik_radio.md 提供了一条从 8051 工具链搭建、固件编译、刷写到 AT 命令级参数配置的完整通路。将固件侧的 Net ID(S3)与串口波特率,以及 PX4 侧的SER_TEL1_BAUD对齐,即可获得稳定可靠的无线 MAVLink 数据链路。若需要将全新的遥测系统接入 PX4,可进一步参考 docs/en/data_links/telemetry.md 的集成指南,并与 PX4 开发团队沟通。
- 嵌入式
- 物联网
- 机器人
- 自动驾驶
- 智能硬件
【免费下载链接】PX4-Autopilot
PX4 Autopilot Software
相关推荐
Earthfile 指令参考:Earthly 构建文件完整命令与配置指南
Earthfile 指令参考:Earthly 构建文件完整命令与配置指南 Earthfile 是 Earthly 构建框架的核心配置文件,它由一系列目标(tar
CI/CDDevOps构建工具AgentScope 2.0 多智能体框架:5 种权限模式 + 8 种沙箱后端,让智能体能干活还不失控
AgentScope 2.0 多智能体框架:5 种权限模式 + 8 种沙箱后端,让智能体能干活还不失控 AgentScope 2.0 是阿里巴巴通义实验室开源的
嵌入式物联网机器人自动驾驶智能硬件PX4 Autopilot 适配 CUAV Nora 飞控:硬件特性、接线供电与固件构建全指南
PX4 Autopilot 适配 CUAV Nora 飞控:硬件特性、接线供电与固件构建全指南 本指南以 PX4 官方文档 cuav_nora.md https
嵌入式物联网机器人自动驾驶智能硬件
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考