PX4 中 SiK Radio 的固件构建与 AT 命令配置完全指南
2026/9/23 16:47:21 网站建设 项目流程
  • 嵌入式
  • 物联网
  • 机器人
  • 自动驾驶
  • 智能硬件

【免费下载链接】PX4-Autopilot

PX4 Autopilot Software

项目地址:https://gitcode.com/gh_mirrors/px/PX4-Autopilot
点击查看免费下载

导读

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-DEMOHopeRF 评估/演示模块
RFD900RFDesign 长距电台(经典款)
RFD900aRFD900 改良版
RFD900p高功率版
RFD900pe高功率增强版
RFD900u带 USB 接口版
RFD900ue带 USB 接口增强版

仓库文档同时给出一个重要限制提示:SiK 仓库目前没有 RFD900x 与 RFD900ux 的固件。若需要对这两款电台升级固件(例如为了支持 MAVLink v2.0),官方建议的流程是:

  1. 从 RFDesign 官网固件页面下载对应固件;
  2. 在 Windows PC 上安装 RFD Modem Tools;
  3. 使用 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 sdcc

SDCC(Small Device C Compiler)是 8051 等小型嵌入式平台的开源 C 编译器,SiK 固件正是基于 8051 架构的(如 HopeRF HM-TRP 模块),因此这是编译链路的关键依赖。

2. 克隆仓库并编译

git clone https://github.com/LorenzMeier/SiK.git cd SiK/Firmware make install

make 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. 查看当前配置

ATI5

ATI5用于列出电台当前的完整参数设置(Net ID、波特率、发射功率、占空比、空中速率等),是配置前必做的"先查后改"步骤。

4. 设置 Net ID、保存并重启

ATS3=55 AT&W ATZ
  • ATS3=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

项目地址:https://gitcode.com/gh_mirrors/px/PX4-Autopilot
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询