基于F4/F7/H7飞控硬件和px4飞控固件的廉价自主无人机系统(1)-飞控

本文详细介绍了如何选用F4/F7/H7系列飞控硬件,尤其是omnibusF4SD、KakuteF7和H7,配合px4开源固件,构建一套低成本的无人机系统。强调了在选择飞控时需要注意的IMU和气压计型号,以及如何避免选择不支持px4的硬件。同时,提供了更新bootloader和固件的步骤,以解决可能出现的CPU负载问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

穿越机F4/F7/H7飞控是一系列采用stm32系列F4xx和F7xx处理器的飞控的统称,是目前穿越机爱好者非常喜欢使用的飞控硬件,其价格也非常便宜180~410。

而px4则是一款常见的开源飞控固件,是自主无人机系统开发中非常常用的飞控固件。但是其对应的硬件往往都比较贵,即使是早期的pixhawk版本也要600+。

如果要开发一款廉价自主无人机系统,那么采用F4/F7/H7飞控硬件配合px4飞控固件是一种非常好的组合,但是需要很多的修改才能实现。

本系列文章将一步一步的通过修改F4/F7/H7飞控硬件和px4飞控固件、并搭载一些必要的设备,搭建一套廉价自主无人机系统。


飞控硬件选择

生产F4/F7/H7飞控硬件的厂家很多,也有一些自制的硬件。不论是F4、F7还是H7飞控,他们的处理器一般都是stm32f4xx和stm32f7xx。而px4固件本身除支持标准的pixhawk系列外,还支持一些其他厂家的飞控固件,其中F4系列中被比较好支持的是omnibus f4 sd系列, F7和H7系列中支持比较好的是holybro的kakute F7和H7系列飞控。

对于F7和H7,目前F7只能买到F7 mini(300+),H7则都可以买到(400+),推荐买H7系列。

对于F4,选择则非常多,但是也有很多坑。

首先,购买时一定要看是否是omnibus F4,否则不保证能成功。

而对于支持omnibus F4的飞控中,还要避开的大坑就是传感器。很多商家卖的F4飞控版本非常多,常见的有:F4 pro v2,F4 v3,F4 v3s, F4 v3 plus。其实版本不是很重要,但是重要是以下两点:1. IMU,2. 气压计。

IMU

这个是个巨坑!购买时千万不要只看网页说明,要问店家要实物图片看。F4支持的IMU很多,包括:MPU6050,L3G4200D,MPU3050,L3GD20,MPU6000,MPU6500,MPU9250,ICM20601,ICM20602,ICM20608G,ICM20649,ICM20689,ICM42605,ICM42688P,BMI160,BMI270,LSM6DSO。而px4的omnibus f4固件支持的IMU则包括:MPU6000,ICM20602,ICM20608G,ICM42670,ICM42605,ICM42688P等。可以看到,交集挺多,但是目前我只遇到这MPU6000和ICM20608g/IC268g这两种px4固件支持且F4常用的IMU。尤其注意F4 V3 plus这个版本,一定要和店家确认用的是不是mpu6000,我买的用的都看不出来是哪款IMU,估计是bmi280,px4不支持!!!

气压计

许多F4飞控没有气压计!!!这个一定要注意!

主要看硬件参数就可以,F4常用的气压计型号为bmp280。所以只要包含这个,就有气压计。

GPS和电子罗盘

另外,要实现自主飞行,F4/F7/H7系列还缺少的就是电子罗盘,而常见的解决方案就是北天GPS出品的BN880模块,该模块既有GPS还有一个常见的电子罗盘芯片HMC5883。有了这两个,就可以实现有GPS下使用auto mission进行飞行了。

推荐购买:

目前淘宝上能买到的可用的是F4 pro V2这个版本的飞控(截止2022年5月10日),这个搭载的IMU是IC268g(ICM20608g);holybro的kakute H7/H7 mini以及F7 mini,搭载MPU6000。


固件更新

一般F4/F7/H7购买时都可以选择刷好了固件,但是可选的固件是不包含px4的。这里推荐选择让店家默认刷betaflight的固件,也就是BF固件。

然后就可以利用betaflight configurator来实现刷px4固件了。

betaflight configurator的下载链接如下:

https://github.com/betaflight/betaflight-configurator/releases/latesthttps://github.com/betaflight/betaflight-configurator/releases/latest

下载后,为了刷px4固件,则需要先给飞控刷上bootloader。这里可以先刷上官方的bootloader,链接为:

https://github.com/PX4/PX4-user_guide/tree/master/assets/flight_controller/omnibus_f4_sdhttps://github.com/PX4/PX4-user_guide/tree/master/assets/flight_controller/omnibus_f4_sd

由于这个bootloader很老了,所以如果默认用这个,在后期修改px4固件代码并编译后再刷固件后,可能会在Qgroundcontrol上遇到以下错误:

Fail: No CPU load information

这是因为bootloader和px4固件不匹配的原因,方法也很简单,就是更新bootloader。


F4/F7飞控更新bootloader

对于F4飞控的bootloader刷机的方法如下:

https://docs.px4.io/master/en/advanced_config/bootloader_update_from_betaflight.htmlhttps://docs.px4.io/master/en/advanced_config/bootloader_update_from_betaflight.html首先就是下载bootloader的代码:

git clone --recursive  https://github.com/PX4/Bootloader.git
cd Bootloader
make <target> upload # For example: omnibusf4sd_bl or kakutef7_bl

完成编译后,可利用betaflight configurator进行bootloader的刷机。


H7飞控更新bootloader

对于H7飞控的bootloader刷机的方法如下:

https://docs.px4.io/master/en/advanced_config/bootloader_update.htmlhttps://docs.px4.io/master/en/advanced_config/bootloader_update.html直接在飞控固件里进行编译,并利用QGroundcontrol进行bootloader的更新即可。


利用以上方法更新bootloader后,接可以编译固件了。固件的下载地址为:

https://github.com/PX4/PX4-Autopilot.githttps://github.com/PX4/PX4-Autopilot.git默认编译和上传如下:

make omnibus_f4sd_default upload

如果更新bootloader和固件后,仍然有no cpu load information的提示,也可以用暴力的方法解决。

这个问题的核心就是preflight check里需要保证飞控的cpu负载不要过高,默认设置是90%以下才能解锁。所以暴力的方法就是不让飞控检查cpu负载即可。方法如下:

在QGroundControl里的vehicle setup里,在parameters下面搜索COM_CPU_MAX,并把这个值设置为-1,即为不检查cpu的负载了。

如此设置后,无人机就不会继续报no cpu load information的错误了。


 


参考链接:

  1. Omnibus F4 SD:https://docs.px4.io/master/zh/flight_controller/omnibus_f4_sd.htmlhttps://docs.px4.io/master/zh/flight_controller/omnibus_f4_sd.html
  2. holybro kakute F7:https://docs.px4.io/master/zh/flight_controller/kakutef7.htmlhttps://docs.px4.io/master/zh/flight_controller/kakutef7.html
  3. holybro kakute H7:https://docs.px4.io/master/zh/flight_controller/kakuteh7.htmlhttps://docs.px4.io/master/zh/flight_controller/kakuteh7.html
  4. bootloader编译:https://docs.px4.io/master/en/advanced_config/bootloader_update.htmlhttps://docs.px4.io/master/en/advanced_config/bootloader_update.html
  5. 刷bootloader:https://docs.px4.io/master/en/advanced_config/bootloader_update_from_betaflight.htmlhttps://docs.px4.io/master/en/advanced_config/bootloader_update_from_betaflight.html以及https://mbot1.blog.csdn.net/article/details/106988811https://mbot1.blog.csdn.net/article/details/106988811
  6. 更新bootloader:https://docs.px4.io/master/en/config/firmware.html#bootloaderhttps://docs.px4.io/master/en/config/firmware.html#bootloader

<think>好的,用户想了解如何使用STM32与QGC地面站进行配合或开发,特别是教程数据通信方面的内容。首先,我需要整理已有的引用信息,看看是否有相关的步骤或方法。 根据引用[4],里面详细描述了使用STM32系统板烧写PX4固件的步骤,包括用ST-LINK下载器连接、烧录bootloader,然后通过QGC地面站下载固件。这说明STM32可以通过烧写PX4固件来与QGC通信。用户可能需要知道如何将STM32作为飞控板,并通过QGC进行制。 另外,引用[2]提到用ST-LINK V2给STM32H7刷写bootloader的方法,这可能涉及到硬件连接软件配置。用户可能需要在STM32上实现与QGC的通信协议,比如MAVLink,这是无人机常用的协议。 引用[3]指出QGC无法连接roslanch创建的仿真无人机,可能涉及到通信设置或端口配置的问题。这可能提示用户需要注意QGC与STM32之间的连接方式,比如串口或USB的正确配置。 接下来,用户需要教程或数据通信的方法。首先,可能需要配置STM32的硬件,例如串口或USB接口,用于与QGC通信。然后,集成MAVLink库到STM32项目中,处理消息的解析发送。此外,QGC地面站通常通过UDP或串口接收数据,所以STM32需要发送正确格式的MAVLink消息。 可能的问题包括如何烧录固件、如何配置通信协议、如何调试连接问题。需要分步骤说明硬件连接、固件烧写、代码开发、数据通信测试等。同时,要提醒用户注意供电顺序,如引用[4]中提到的先供电再连接USB,否则QGC无法识别。 最后,生成相关问题,帮助用户深入理解,比如优化通信、处理故障、选择硬件等。确保回答结构清晰,步骤详细,参考引用中的具体方法。</think>### STM32与QGC地面站协同开发指南 #### 1. **硬件准备与固件烧录** - **硬件配置**:STM32F4/F7/H7系列开发板(如STM32F405RGT6)、ST-LINK下载器、USB转串口模块、传感器模块(如IMU、GPS)[^4]。 - **Bootloader烧录**: 使用STM32 ST-LINK Utility连接开发板,加载PX4官方bootloader(如`px4fmu_bl.bin`),执行擦除芯片编程操作。 示例命令: ```bash openocd -f interface/stlink.cfg -f target/stm32h7x.cfg -c "program px4fmu_bl.bin verify reset exit" ``` - **固件烧录**:通过QGC地面站连接开发板的USB端口,选择PX4固件版本(如v1.10.2)完成在线或离线下载。 #### 2. **通信协议集成(MAVLink)** - **协议选择**:QGC通过MAVLink协议与飞控通信,需在STM32中集成MAVLink库(如C语言版本)。 - **代码配置**: - 初始化串口/USB通信(如UART3,波特率921600)。 - 实现MAVLink消息解析与封装(例如心跳包、传感器数据): ```c mavlink_message_t msg; mavlink_heartbeat_t heartbeat = {.type = MAV_TYPE_QUADROTOR}; mavlink_msg_heartbeat_encode(1, 200, &msg, &heartbeat); send_uart((uint8_t*)&msg, sizeof(msg)); ``` #### 3. **QGC地面站连接调试** - **连接方式**: - **USB直连**:STM32通过USB-CDC虚拟串口与QGC通信,需在QGC设置中选择对应端口[^4]。 - **无线模块**:通过ESP8266/WiFi或数传电台转发MAVLink数据(UDP端口14550)。 - **关键注意事项**: - 必须**先给STM32独立供电**,再连接USB到QGC,否则无法识别设备。 - 若连接失败,检查QGC的`Comm Links`设置或STM32的串口波特率是否匹配[^3]。 #### 4. **数据通信示例(传感器校准)** - **发送传感器数据**:从STM32读取IMU原始数据,封装为`MAVLINK_MSG_ID_RAW_IMU`消息。 - **QGC交互流程**: 1. QGC发送校准指令(如`MAV_CMD_PREFLIGHT_CALIBRATION`)。 2. STM32执行校准逻辑并返回状态(`MAV_RESULT_ACCEPTED`)。 #### 5. **开发资源推荐** - **教程参考**: - [QGC地面站使用教程](https://www.bilibili.com/video/BV1Uu4y197cK)(B站视频,涵盖基础连接与固件管理)[^1]。 - STM32的MAVLink实现:[PX4官方STM32HAL库](https://github.com/PX4/PX4-Autopilot/tree/master/platforms/stm32)- **调试工具**: - `mavlink-router`:用于多路MAVLink数据转发。 - `Mission Planner`:辅助验证协议兼容性。
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值