2. 飞控固件刷写

说到飞控固件刷写,很多新手第一反应就是「刷个固件嘛,点几下鼠标的事」。嗯,表面上看确实是这样。但我在项目里见过太多因为固件选错、刷写中断导致飞控变砖的案例了。今天咱们就把这事掰开揉碎了讲清楚。

固件选择:ArduPilot 还是 PX4?

这俩是当前最主流的开源飞控固件。我个人的习惯是:先看硬件,再看任务。

对比项 ArduPilot PX4
硬件支持 极广,从Pixhawk到树莓派都行 主要支持Pixhawk系列
上手难度 较低,文档丰富 中等,需要理解内部架构
航点规划 Mission Planner原生支持,非常成熟 QGroundControl,功能稍弱
实时性 中等 较高,适合高速无人机
社区活跃度 极高,论坛回复快 较高,但偏向开发者

说白了,如果你做测绘、植保、巡检这类常规任务,ArduPilot 是首选。我最早做农业无人机项目时,用的就是 ArduPilot + Mission Planner 的组合,航点规划那叫一个顺手。

但如果你搞的是竞速机、穿越机,或者对实时控制要求极高的场景,PX4 更合适。我记得有个做编队飞行的朋友,死活调不好 ArduPilot 的编队模式,换成 PX4 后一周就搞定了。

我的建议: 初学者从 ArduPilot 开始。等你把航点规划、参数调优都玩熟了,再考虑 PX4 也不迟。

刷写步骤:Mission Planner 实操

好,假设你选了 ArduPilot。咱们开始刷写。我以 Pixhawk 为例,其他飞控大同小异。

  1. 连接飞控:用 USB 线连电脑。注意,有些飞控需要先上电再插 USB,否则可能识别不到。我遇到过好几次这种坑。
  2. 打开 Mission Planner:点击顶部菜单「初始设置」→「安装固件」。
  3. 选择固件版本:这里会列出各种飞控型号。找到你的板子,比如「Pixhawk1」。然后选固件版本——我个人习惯用最新稳定版,别追 beta 版。
  4. 开始刷写:点击「上传固件」。这时候飞控的蓝灯会开始闪烁,表示正在写入。
  5. 等待完成:大概 1-3 分钟。刷完后飞控会自动重启,Mission Planner 会提示「固件上传成功」。
小技巧: 刷写前最好把飞控的 SD 卡格式化一下。旧参数文件有时会干扰新固件。我吃过这个亏,刷完固件后飞控一直报错,折腾了半天才发现是参数冲突。

刷写失败后的救砖方法

为什么会刷写失败?最常见的原因就三个:USB 线质量差、供电不稳定、刷写过程中不小心拔了线。

一旦变砖,飞控灯不亮或者一直闪红灯。别慌,我教你几招。

方法一:强制进入刷写模式

大部分飞控都有一个「安全按钮」或「bootloader 按钮」。以 Pixhawk 为例:

  • 按住飞控上的安全按钮(小按钮)
  • 保持按住,然后插 USB 上电
  • 等 2 秒后松手
  • 这时候飞控应该进入 bootloader 模式,Mission Planner 就能重新识别了

方法二:使用命令行工具

如果 Mission Planner 死活连不上,可以用命令行工具直接刷。我常用的工具是 px_uploader.py(ArduPilot 官方提供)。

# 先找到飞控的串口号(Windows 下是 COM3 之类的)
# 然后执行:
python px_uploader.py --port COM3 --baud 115200 firmware.hex

嗯,这里要注意:波特率不一定都是 115200,有些老飞控用 57600。我曾经因为波特率设错,折腾了半小时才发现。

方法三:短接复位

这是最后的办法。如果你连 bootloader 都进不去,可能是 bootloader 本身坏了。这时候需要:

  • 拆开飞控外壳
  • 找到主控芯片(STM32 系列)的 BOOT0 和 BOOT1 引脚
  • 用镊子短接 BOOT0 到 3.3V
  • 重新上电,这时候芯片会从系统存储器启动
  • 用 STM32 Flash Loader 工具重新烧录 bootloader
警告: 短接操作需要一定的焊接和电路基础。如果你没把握,建议直接联系卖家或找有经验的朋友帮忙。我曾经帮一个学生救砖,结果他把引脚焊短路了,最后只能换芯片。

知识体系总览

下面这张图帮你理清整个固件刷写的逻辑脉络:

飞控固件刷写知识体系 固件选择 刷写步骤 救砖方法 ArduPilot PX4 连接飞控 选择固件 强制刷写 命令行 测绘/植保 → ArduPilot USB连接 → 上传固件 → 重启 安全按钮 → bootloader 核心原则:选对固件 → 稳定刷写 → 备好救砖方案

最后说一句:刷写固件这事,多练几次就熟了。我第一次刷变砖的时候也慌得不行,后来发现只要 bootloader 没坏,基本都能救回来。嗯,今天就到这,下次咱们聊航点规划的具体参数设置。