> 技术文档 > 手搓STM32H743开源飞控系列教程---(一)飞控调研与方案设计_betaflight官网

手搓STM32H743开源飞控系列教程---(一)飞控调研与方案设计_betaflight官网


 资料汇总(AI问答知识库)

物唯AI智慧文档

 CSDN系列文章

手搓STM32H743开源飞控系列教程---(一)飞控调研与方案设计-CSDN博客

手搓STM32H743开源飞控系列教程---(二)源码下载,修改引脚定义、编译固件-CSDN博客

手搓STM32H743开源飞控系列教程---(三)物唯飞控原理图讲解、硬件引脚讲解、一键适配官方固件

手搓STM32H743开源飞控系列教程---(四) 番外~~AI问答知识库上线-CSDN博客

手搓STM32H743开源飞控系列教程---(五) 飞控IMU与罗盘方向调整-CSDN博客

放在最前面

0)首飞视频

F450机架,烧录Ardupilot固件首飞

210穿越机机架,烧录Betaflight固件首飞

穿越机外场花飞,作死视频

1)PCB设计

设计软件采用国民电路板设计神器-立创EDA专业版

2)手搓实物

阻容件0402、主控芯片抛弃BGA封装,采用LQFP封装,便于手搓!

3)测试机架

本飞控打算适配2套固件:

Ardupilot固件,采用F450轴距的练习机机架。

翻出了我入门用的老古董F450机架,又从一个朋友那里薅一套航电设备。

Betaflight固件,采用210mm的穿越机机架

1、前言

        不知不觉从事无人机行业已10余年,注册CSDN也已经12年了,也从CSDN论坛学到了很多东西,是时候做点内容输出,帮助更多想了解无人机的朋友了。首先就从手搓一个开源飞控的做起吧!本人的无人机从业经验一直以较大型的行业机为主(参与了多个旋翼、油机、垂起、直升机等等),个人其实还没怎么认真玩过穿越机。因为在2014、2015年的时候穿越机被定义为烧钱娱乐的项目,今年来穿越机在军用上取得的成就大家有目共睹,因此也借着这么个开源的机会,好好了解一下穿越机的各项技术及产业链。

2、计划目标

2.1 硬件目标

1)参考市面上穿越机的飞控,设计一款飞控硬件,该有的接口都坐上!

2)PCB板层降低到4层,节省打板费用。(6层板大概200多大洋,4层板打样可在40大洋以内)

3)主控芯片要干到STM32H743,并且要用LQFP的封装,方便手搓。

2.2 固件目标

1)支持烧录Ardupilot(APM)固件,这个飞控固件的功能最为强大,可实现定高定点、航线任务飞行、自主返航以及SLAM开发等等。大家可以看到最近二毛袭击大毛的轰炸机用的就是这个APM的飞控固件。

而且另外一个技术小伙伴也在这个固件上开发了很多年,本人也用APM的固件做过很多个项目,稳定性其实已非常可以!本人用了这么多年APM固件,飞了有几千个架次,没有因为固件问题炸过机!

2)支持烧录betaflight(BF)固件,这个飞控主打的就是穿越机暴力高速飞行,穿越机在军事领域以及竞速领域,也有非常广泛的用途,因此飞控也要兼容BF固件,后续也可在BF固件上加装小模块!

2.3 教学目标

1)撰写详细的保姆级教程就为了让小白学会,宗旨是要让大家能够从原理图、到焊接、到修改官方源码的特定硬件配置文件,编译、最后将自己编译的固件烧录在自己做的飞控硬件上。

2)如果有小伙伴对源码感兴趣,后续在结合大家的技术水平,再出一期代码教程!

2.4 后续规划目标

        后续还将基于这个飞控固件增加外设模块、比如AI追踪导引头视觉辅助降落SLAM自主导航避障感知等等。想做的开源项目太多,时间有限及精力有限,先稳打稳扎,一步一个脚印做好,避免虎头蛇尾,开局就烂尾就不好了!

2.5 开源目标

代码调通并稳定飞行时间达到一定时间/架次后,确保飞机的硬件以及固件,没有严重的缺陷问题;再开源所以设计资料,包含硬件图纸、原理图、源代码、固件等。

3、三大开源飞控项目(固件)

        目前在世界上比较著名的行业级(干活飞航线任务的)飞控项目主要是Ardupilot(后面简称APM)和PX4,穿越机的飞控项目则是Betaflight(后面简称BF),还有INAV据说也可上航线用来做FPV固定翼远航。只要把功能最全的APM/PX4的硬件及固件吃透,那么BF和INAV的软硬件设计也是手到擒来!

3.1 Arudpilot项目

官网链接:ArduPilot - Versatile, Trusted, Open

        Ardupilot起源于2007年,最初为APM(ArduPilot Mega)硬件开发,后扩展至Pixhawk等平台。作为历史最悠久的开源飞控之一,它支持多旋翼、固定翼、无人车、船只、潜艇等载具类型,具备高度成熟的算法和丰富的功能。

  • 提供GPS导航、自动航点任务、失控保护、低电量返航等安全机制。
  • 支持多种飞行模式(如Manual、Auto、Guided),适用于水质监测、地形扫描等场景
  • 兼容APM、Pixhawk、Cube等硬件平台,社区驱动持续优化适配
  • 采用GPLv3协议,代码修改需开源回馈,社区活跃。【修改代码新增功能后,需要开源你的代码以回馈开源社区,否则可以起诉你~~】
  • 代码维护了很多年(最早起源于2008年左右),由于维护时间久远,历史包袱比较沉重,并且这个代码也在疯狂的支持各种硬件板子以及外设模块,因此代码也日益冗余,代码风格比较混乱,采用线程调度器的方式进行代码编写,需要一定的C++代码功底才能看懂。

3.2 PX4项目

官网链接:Open Source Autopilot for Drones - PX4 Autopilot

        PX4由苏黎世联邦理工学院(ETH)于2012年发起,专为Pixhawk硬件设计,强调模块化架构和科研友好性,与Ardupilot同属DroneCode基金会(后独立)

  • 基于uORB消息中间件实现模块解耦,任务调度采用多线程设计,提升实时性。
  • 支持Gazebo仿真和ROS/ROS2集成,便于算法验证与开发。
  • BSD协议允许闭源修改,更适合商业项目,可以自由修改!
  • 配套工具完善:QGroundControl地面站、MAVLink通信协议、MAVSDK开发套件
  • 优点:由于PX4固件晚于APM固件出现,其历史包袱也比较小,采用了比较新的软件架构方式,新增外设及驱动的耦合性较小,代码分离的比较清晰,比较适合学术研究学习,被广泛应用在高校研究、集群控制、视觉导航等需快速迭代算法的场景。
  • 缺点:由于晚于APM的出现,因此在很多功能上的稍弱于APM固件。

但近几年来,PX4与APM两家的固件也逐步朝着相互兼容相互学习的方向在发展,最典型的就是两套固件的地面站都开始相互兼容了!

3.3 Betaflight项目

官网链接:Betaflight - Pushing the Limits of UAV Performance | Betaflight

Betaflight专注于多旋翼无人机(尤其是穿越机)的高性能控制,以极致响应速度和低延迟著称,适用于竞技与航拍场景。

  • 代码架构也比较简单,就是一个单片机的工程。(APM和PX4都有复杂的线程调度器或者操作系统,相对来说BF固件的软件工程就简单多了)
  • 代码简单的坏处:就是功能非常的少,只有基础的返航功能,冗余功能也少(比如APM有丢星后的策略、智能返航、EKF降级处理等等)。
  • 地面站也非常简单,无法进行航线飞行等等!(杀鸡焉用牛刀,专业的功能给专业飞控去做!)
  • 最主要是用来做穿越机竞速、花飞,另外单板价格便宜也适合用来干仗~~

4、飞控硬件厂商调研

        既然想要设计能够同时烧录BF固件与Ardupilot固件的飞控硬件,那么我们首先要对市面上已有的飞控硬件厂商进行调研,观摩一下他们都分别有哪些接口,都分别看看他们是怎么设计的?为此我花了点时间分别调研了以下飞控硬件厂商!

4.1、APM与PX4硬件调研

        首先调研了一下国内Ardupilot和PX4的飞控硬件厂商,这类飞控通常外观上有个CNC的金属壳子包裹着,做工比较精致,外设接口丰富并且在传感器的冗余设计、供电冗余设计、接口防静电、对外信号引脚的3.3V与5V电平相互转化。最重要的是里面的IMU传感器有恒温电路、做了海绵减震处理!(恒温可以控制温漂,海绵可以降低振动,特别是一些大型的飞机/油机对震动及长时间飞行的IMU温漂还是非常敏感)

             上述一系列优点组合下来,到我们消费者(特别是学生党群体)手上就体现得贵了!

                     企业盈利,赚了钱才能加大研发投入,持续出好产品,这点无可厚非!

        此外,他们还是Ardupilot/PX4官方组的赞助厂商及合作开发厂商,所以官方地面站上会自动适配并推送他们的固件,并且每次版本更新也会适配这些用户群里比较大的飞控硬件,相当于这些官方赞助商只需做好硬件板卡,固件上老外官方开发组就会持续不断的进行更新!

参考资料:Stores — ArduPilot documentation

APM与PX4的

飞控硬件厂商

原厂支持固件 部分产品外观

雷迅创新

Ardupilot、PX4

Cubepilot

(厦门赫星)

Ardupilot、PX4 Holybro(深圳合力) Ardupilot、PX4 深圳思翼 Ardupilot、PX4 广州云际 Ardupilot、PX4、FMT 零一空天 Ardupilot、PX4

4.2、Betaflight硬件调研

        相对于Ardupilot和PX4的飞控硬件厂商,Betaflight固件的飞控硬件那就简单多了,因为是穿越机追求的是竞速,体积要小并且也不需要很多外设。其外观基本上就是一块PCB板,主打一个轻量化。

        本人随便搜了一下,就发现穿越机的飞控有以下制造厂商,大部分穿越机的飞控厂商默认支持的固件就是Betaflight,有少部分穿越机飞控厂商的固件,厂商还额外支持Ardupilot固件(也是APM与PX4项目的赞助商)!

穿越机飞控硬件厂商 原厂支持固件

Axisflying酷飞

Betaflight

Speedy Bee快蜂

Betaflight

FlyingRC 飞盈科

Betaflight

GEPRC 格普

Betaflight、Ardupilot

Holybro 合力博

Betaflight、Ardupilot

Microair 微空

Betaflight、Ardupilot

HAKRC 海科

Betaflight

DIATONE 大通

Betaflight

TMOTOR 南京三瑞

Betaflight

MATEK

Betaflight、Ardupilot

山鹰飞控

Betaflight

JHEMCU津航

Betaflight

HGLRC化骨龙

Betaflight

iFlight翼飞

Betaflight

RUSH 刀锋

Betaflight

Aocoda-RC

Betaflight

蔚川

Betaflight

HDZERO(迪威码)

Betaflight

重山

Betaflight

FOXEER

Betaflight .... ...

随便一搜,竟有如此多的穿越机硬件厂商,看来FPV运动在我国的航模界里还是非常受欢迎的!

5、穿越机飞控接口调研

PS:本人不是穿越机的狂热爱好者(准确说是穿越机飞行小白),年纪大了玩不得刺激的东西。所以本人这个帖子在搓飞控的同时,也是对穿越机一整套行业知识体系的学习。(用装逼一点的话来说,就是用输出来倒逼输入)

          为了造价便宜,方便手搓,我打算先搓穿越机的飞控硬件。

【后续再搓一个行业机的飞控,原理都是类似的,只是在冗余设计方面的用料更足一点】

        通过上述章节四的调研,大概知道有哪些厂商,这类飞控外观是怎么样的大概有什么接口。这样我们在画原理图的时候,才大概清楚要设计哪些对外引脚?

        在设计硬件之前,首先要搞清楚,穿越机一般需要外接设备,因此我也专门去某宝找了几款穿越机飞控的接线定义图,抽离出共性的接口。

5.1穿越机飞控1-接口图

5.2穿越机飞控2-接口图

5.3穿越机飞控3-接口图

5.4穿越机飞控4-接口图

5.5 穿越机飞控接口总结:

穿越机飞控接口总结 接口名称 数量 说明 备注 电调PWM接口 2

与4合一电调板相连。

一般穿越机只有4个电机,但是为了兼容X8机架。所以要8路PWM

X8机体,载重能力强,挂大相机,用来拍大片。

电压与电流检测 2 检测电池电压和总电流 和电调PWM接口融合  GPS接口 1 接GPS模块可返航。 IIC接口 1 接入罗盘 与GPS模块一体 模拟图传接口 1 接入模拟图传 (马赛克画质) 模拟摄像头接口 1 接入模拟摄像头 (马赛克画质) 高清数字图传接口 1 可接大疆O3/O4图传 高清与模拟,通常是二选1 接收机接口 1 可接入SBUS接收机、ELRS接收机 CAN通讯接口 1 后续可在APM固件中接入CAN通讯的设备 先引出,备用 SPI通讯接口 1 后续可在APM固件中接入CAN通讯的设备 先引出,备用 调试接口 1 STLINK烧录接口 USB接口 1 用于连接地面站 蜂鸣器接口 1 接蜂鸣器 LED灯带接口 1 接彩色LED灯带

6、飞控硬件设计框图

7、核心传感器选型

主要器件 型号 备注说明 主控 STM32H743VIT6*1 LQFP封装 IMU1 ICM-42688-P*1 IMU2 ICM-42605 气压计 DPS310*1 测量高度 磁罗盘 IST8310*1 OSD AT7456E*1 电源芯片 MP9943GQ-Z*2

4V~36V输入,可调输出电源芯片

1路为5V输出。

1路为10V输出。

电源芯片 MD7218E33QC3*2

5V转3.3V电源芯片

1路3.3V给主控供电。

1路3.3V给传感器供电。

8、PCB布局

为了降低打样成本,方便批量手搓,PCB必须要降至4层板。

(立创虽然6层免费,但是一个月只能打样一次,而且近期规则改了,不能同样的文件反复打,每次总要修改点什么。)

10、对外接口及焊点

11、PCB实物

12、本章完结

        不知不觉水了5000余个字,章节1就先写到这里把!

 接下来,我会继续更新调试相关的教程!包含手搓飞控常见的问题:

1)如何编译APM固件以及BF固件?

2)传感器的引脚定义我是随便定义的,如何让官方源码适配我自己设计的板子?

3)IMU的方向是我随便摆放的,烧录固件后方向不对该怎么调整等等!     

感谢大家的观看,如果喜欢的话,就高抬贵手点个赞或留个言吧!

你们的支持是我写下去的动力!

o(* ̄▽ ̄*)ブ