PX4学习笔记(1)-- MicoAir743
一. 软件准备
二. 硬件准备
1.主控: 微空MicoAir743 购买链接
2.电调: E45-HF32电调32位 购买链接
3.GPS+外置罗盘: 微空M10G-5883 购买链接
4.接收机: ELRS 2.4G NANO RX FPV 购买链接
5.遥控器: 鲨伯Sub250 TinyRadio ELRS2.4G 购买链接
6.机架:FPV MAK5 购买链接
7.无刷电机: 丰云无刷 购买链接
8.桨叶: GEMFAN乾丰桨叶51466V2 购买链接
9.电池: VINNER威能6S1300MAH160C 购买链接
飞控的详细信息与外设连接位置
三. PX4 环境配置
首先确保电脑里有虚拟机或者使用WSL等工具,在电脑里配置Linux系统,我使用的是WSL + Ubuntu22.04LTS。
第一步:更新系统并安装基础工具
首先确保 Ubuntu 系统的软件包是最新的,并安装 git
sudo apt update && sudo apt upgrade -y
sudo apt install git make cmake -y
第二步:拉取 PX4 稳定版源码
【使用 PX4 v1.16 或更高版本时,我一直遇到无人机避障模块固件缺失的警告,使用 QGC Daily 版本可以避免此警告,但是为了方便,所以还是使用比较成熟的 v1.15 版本】
v1.15 版本无微空MicoAir743的板载配置文件,所以还是使用 v1.16
# 回到用户根目录
cd ~
# 克隆 v1.16.1 版本的源码(--recursive 参数用于拉取所有子模块)
git clone https://github.com/PX4/PX4-Autopilot.git --recursive -b v1.16.1
# 进入源码目录
cd PX4-Autopilot
由于包含大量子模块,这一步受网络影响较大,请确保网络稳定且耐心等待。
第三步:运行官方环境安装脚本
PX4 提供了一个自动化脚本,专门用于在 Ubuntu 上配置交叉编译器(ARM GCC)和 Python 依赖。
# 运行安装脚本
bash ./Tools/setup/ubuntu.sh
执行此脚本时,脚本会自动下载配置 arm-none-eabi-gcc 编译器以及各种编译所需的 Python 库。过程大约需要 5-15 分钟。如果出现以下报错:
[notice] A new release of pip is available: 25.3 -> 26.0.1
[notice] To update, run: python3 -m pip install --upgrade pip
ERROR: Invalid requirement: 'matplotlib>=3.0.*': .* suffix can only be used with `==` or `!=` operators
matplotlib>=3.0.*
~~~~~~^ (from line 11 of /home/crayon/PX4-Autopilot/Tools/setup/requirements.txt)
是因为新版本的 pip 强制执行了更严格的 PEP 440 版本号匹配规范,不再允许使用 >=3.0.* 这种带有 .* 后缀的语法。PX4 源码的 requirements.txt 文件里刚好有这一行,直接被 pip 拦截报错,导致 Python 依赖库安装被中断。按如下方法解决:
# 替换文件内错误语法
sed -i 's/matplotlib>=3.0.\*/matplotlib>=3.0/g' Tools/setup/requirements.txt
# 重新运行脚本文件
bash ./Tools/setup/ubuntu.sh
第四步:重启 WSL 以应用环境变量
- 关闭当前的 WSL 终端窗口。
- 打开 Windows 的 PowerShell(或 CMD),输入以下命令强制彻底关闭 WSL:
wsl --shutdown
- 重新打开 WSL Ubuntu 终端。( 如果使用的是原生 Linux 设备,就直接重启吧。)
验证环境是否搭建成功:
重新打开 WSL 后,直接在终端输入:
arm-none-eabi-gcc --version
如果输出显示了编译器的版本号(如 10.3.1 或 9.x),说明底层环境已彻底就绪。
四. 固件编译
1. 修改编译配置文件 (.px4board)
这个文件决定了底层编译时,会将哪些传感器驱动打包进飞控的 Flash 存储中。
文件路径: boards/micoair/h743-v2/default.px4board
修改操作: 打开该文件,可以直接在文件最末尾新起一行,添加配置,启用QMC5883L(罗盘) 的驱动:
CONFIG_DRIVERS_MAGNETOMETER_QMC5883L=y
2. 修改初始脚本文件 (rc.board_sensors)
这个脚本用来进行飞控系统中初始化各类传感器驱动。
文件路径: boards/micoair/h743-v2/init/rc.board_sensors
修改操作: 目前不需要修改
3. 编译 Bootloader
执行以下命令,专门针对微空 H743 V2 硬件生成引导程序:
make micoair_h743-v2_bootloader
编译成功后,生成的文件存放于以下路径:
build/micoair_h743-v2_bootloader/micoair_h743-v2_bootloader.bin
(注:因为准备进行全片擦除,此 .bin 文件稍后将使用 STM32CubeProgrammer 烧录,STM32H7 芯片的 Bootloader 起始地址为 0x08000000。)
4. 编译飞控主固件
执行以下命令,编译包含自定义传感器和接收机配置的主固件:
make micoair_h743-v2_default
编译成功后,生成的固件文件存放于以下路径:
build/micoair_h743-v2_default/micoair_h743-v2_default.px4
(注:此 .px4 文件可以直接在 QGroundControl 固件刷写界面选择“高级设置 -> 自定义固件文件”进行本地烧录。)
五. 固件烧录
在烧录之前,先将飞控上外接的 TF 卡进行格式化处理,格式成 FAT32 的格式
1.飞控进入 DFU 烧录模式
在未通电的情况下,按住飞控板上的 BOOT 按键不放。随后使用 Type-C 数据线将飞控连接至电脑 USB 接口。连接成功后即可松开 BOOT 键。让飞控进入待烧录状态,成功后有如下显示:

2.全片擦除
-
打开软件 STM32CubeProgrammer。
在软件右侧的连接方式下拉菜单中选择 USB,在 Port 栏点击刷新按钮,选择识别到的 USB1,然后点击 Connect 。此时连接上飞控:
-
连接成功后,点击左侧边栏的“橡皮擦”图标(Erasing & Programming),找到并勾选 Full chip erase,点击 Erase 按钮。等待日志窗口提示 Mass erase successfully achieved,这代表芯片内部已经被彻底清空。

3. 烧录 Bootloader
- 确保界面上的 Start address(起始地址)的值为 0x08000000;
通过 Open file 找到 micoair_h743-v2_bootloader.bin 文件并打开
- 再点击 Download 进行 Bootloader 固件烧录

- 完成后将飞控与电脑断连
4. 烧录 PX4 主固件
在成功烧录 Bootloader 后,飞控已经具备了接收 PX4 固件的能力。接下来使用 QGroundControl (QGC) 烧录刚刚编译好的主固件。
- 进入 QGC 刷写界面


- 在固件这个界面,使用 Type-C 数据线将飞控直接连接到电脑(此次连接无需按住 BOOT 键)。
QGC 会自动识别到飞控进入 Bootloader 模式,并弹出固件选择界面。
勾选界面右侧的 Advanced settings (高级设置)。
在出现的下拉菜单中选择 Custom firmware file… (自定义固件文件…),然后点击右上角的 OK。
- 在弹出的文件选择窗口中,找到并选中 micoair_h743-v2_default.px4 文件。

- 等待烧录完成。提示 Upgrade complete 后,飞控会自动重启发出提示音,并与 QGC 建立连接。

- 固件烧录已经完成。
5. 参数修改
- 点开参数,找到 Serial 将配置按照如下图所示进行修改,然后点击右侧的工具。(不过我使用的接收机是CRSF协议,如果说用的是SBUS则不能按照以下配置修改)

- 选择 重启飞行器

六. 无人机校准及通道设置
传感器和遥控器根据 QGC 的提示进行校准即可。
电调校准分成三步。(插上电源调试时,务必卸除 桨叶!!!)
- 寻找MAIN 1-4 对应的真实电机位置
操作:(图框 1)在 QGC 中将 MAIN 1-4 依次映射为 Motor 1-4(1对1对应)。
目的:(图框 2)逐一推移滑块,记录每个 MAIN 端口对应电机的实际物理位置(如:推动 Motor 1 滑块,发现左后电机转动,即记下 MAIN 1 = 左后)。 - 逻辑映射
操作: 对照 PX4 标准模型(如 Quad X:右前1、左后2、左前3、右后4),修改 MAIN 端口的 Function。
目的:将物理位置绑定到正确的逻辑编号(如:既然 MAIN 1 在左后,就将其功能改为 Motor 2)。 - 方向对齐
操作: 观察各电机的实际物理转向。
目的: 在地面站模型中,根据实际转向勾选或取消 CCW 选项。确保模型上的箭头方向与物理电机的真实转向完全一致。
最后将遥控器对应的通道与对应模式相对应,就可以成功起飞了。至于对应通道的选择,看个人爱好。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)