Skip to the content
PCBKitNew board
4 layers38 × 38 mmZero star, the printed circuit board in 3D

STM32F407 Flight Controller with FreeRTOS

Size
38 × 38 mm
Copper layers
4
Thickness
1.6 mm
Parts
131
Nets
130
Pads
432
Tracks, vias
843, 119
Pours
505
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
15 Jan 2026
Updated
25 Jan 2026

Overview

Zero star is an open-source printed circuit board by Auodit, from the Auodit/flyamaster repository on GitHub, published under the CC-BY-SA-4.0 licence. It is a 4-layer board of 38 × 38 mm with 131 parts on 130 nets, routed with 843 tracks and 119 vias.

It is built around the AT7456E, SY8303AIC and QMC5883L, with the SPL06-001, W25Q128JVEIQ and RT9193-33GB among its other parts. Its parts include 45 capacitors, 22 resistors, 10 ICs, 7 diodes and 6 connectors. It belongs with the STM32 boards of this library.

Main components

10

README

README.md

🚁 FLYAMASTER 飞控项目

⚠️ 版权警告 / COPYRIGHT WARNING ⚠️

本项目受版权保护,严格保留所有权利!

🚫 禁止 未经授权的复制、修改、分发、商用 🚫 禁止 Fork、Clone、Download 本仓库 🚫 禁止 转载、引用本项目任何内容

违者将依法追究法律责任!详见 LICENSE


This project is protected by copyright. All rights strictly reserved!

🚫 PROHIBITED: Unauthorized copying, modification, distribution, commercial use 🚫 PROHIBITED: Fork, Clone, Download this repository 🚫 PROHIBITED: Repost or cite any content from this project

Violators will be prosecuted! See LICENSE


项目名称: FLYAMASTER - F405 Mini 高性能穿越机飞控 版本: v2.4.0 最后更新: 2026-01-23 状态: 🟢 开发中 (软件完成,硬件设计完成,等待验证) 作者: LI 助手: Doro (Desktop Pet / 桌面宠物)


📖 项目简介

FLYAMASTER 是一款基于 STM32F405RGT6 的高性能、开源、易扩展的四轴飞行控制器。

🌟 项目由来

"每个飞手心中都有一个造飞控的梦。"

这个项目源于我对无人机的热爱。从第一次看到穿越机在空中翻滚、俯冲的那一刻起,我就被这种自由飞翔的感觉深深吸引。作为一名嵌入式开发者,我不满足于仅仅使用现成的飞控,而是想要从零开始,亲手打造一款属于自己的飞行控制器。

这不仅仅是一个技术项目,更是一段探索之旅——从最初的 Mahony 姿态解算调试,到 PID 参数的反复调优;从 DMA 通道冲突的抓狂,到最终看到四轴稳稳悬停的那一刻的成就感。每一行代码、每一条 PCB 走线,都凝聚着对飞行的热爱和对技术的追求。

FLYAMASTER = FLY (飞行) + A (一个) + MASTER (大师) —— 愿每一位使用者都能成为飞行大师!

🎯 多固件支持

本硬件设计兼容多种主流开源飞控固件:

固件适用场景支持状态
INAV固定翼 / 长航时无人机 / GPS 导航✅ 完全兼容
Betaflight穿越机 / 竞速无人机 / 花飞✅ 完全兼容
ArduPilot专业航拍 / 测绘 / 自主任务✅ 完全兼容
FLYAMASTER (自研)学习研究 / 定制开发✅ 原生支持

💡 提示: 硬件引脚分配遵循 Betaflight 标准,可直接使用 Betaflight Configurator 进行配置。 对于 INAV 和 ArduPilot,需要创建对应的 Target 定义文件。

核心特性

  • 高性能 MCU: STM32F405RGT6 (168MHz, 1MB Flash, 192KB RAM)
  • 多固件兼容: 支持 INAV / Betaflight / ArduPilot / 自研固件
  • 宽电压输入: 支持 2S-9S 电池 (4.5V-40V),兼容各类电调
  • 板载 OSD: AT7456E 视频叠加芯片,实时显示飞行数据
  • 实时操作系统: FreeRTOS CMSIS_V2 (自研固件)
  • 姿态解算: Mahony 互补滤波 (500Hz)
  • 控制算法: 串级 PID (角度环 + 角速度环)
  • 传感器融合: IMU + 气压计 + 磁力计 + GPS + 光流
  • 遥控接收: ELRS/CRSF 协议 (420kbps, 双向遥测)
  • 黑匣子: W25Q128 Flash 日志记录 (16MB)
  • 状态指示: 7 颗专业级 LED 飞行仪表盘
  • USB 反灌保护: 肖特基二极管隔离,安全可靠

设计哲学

  1. 控制回路隔离: 姿态解算与 PID 控制拥有最高优先级
  2. DMA 满载策略: 所有高吞吐量接口强制开启 DMA
  3. 资源冲突零容忍: 针对 F405 的 DMA 通道冲突采用硬件重映射方案

🧠 核心算法原理

姿态解算 - Mahony 互补滤波

飞控的"大脑"是姿态解算算法。我们采用 Mahony 互补滤波器,它巧妙地融合了陀螺仪和加速度计的数据:

text
                    ┌─────────────────────────────────────────┐
                    │         Mahony 互补滤波器               │
                    └─────────────────────────────────────────┘
                    
    陀螺仪 (高频响应)                      加速度计 (低频稳定)
         │                                      │
         ▼                                      ▼
    ┌─────────┐                           ┌─────────┐
    │ 角速度  │                           │ 重力向量│
    │ ω       │                           │ a       │
    └────┬────┘                           └────┬────┘
         │                                      │
         │    ┌──────────────────────────┐     │
         └───►│  四元数微分方程积分       │◄────┘
              │  q̇ = ½ q ⊗ ω_corrected   │
              └───────────┬──────────────┘
                          │
                          ▼
                    ┌─────────┐
                    │ 四元数 q │ ──► Roll, Pitch, Yaw
                    └─────────┘

核心公式:

  • 误差估计: e = a × v (加速度计测量值与估计重力方向的叉积)
  • PI 校正: ω_corrected = ω_gyro + Kp·e + Ki·∫e·dt
  • 四元数更新: q += ½·q⊗ω·dt

串级 PID 控制

采用角度环 + 角速度环的串级结构,外环输出作为内环的设定值:

text
    目标角度 ──┬──► [角度环 PID] ──► 目标角速度 ──┬──► [角速度环 PID] ──► 电机输出
               │                                  │
    当前角度 ──┘                    当前角速度 ──┘

为什么用串级?

  • 外环 (角度环): 响应慢但稳定,负责"往哪飞"
  • 内环 (角速度环): 响应快,负责"怎么飞"
  • 两环配合,既稳定又灵敏

电机混控 - Airmode 算法

X 型机架的混控公式:

text
M1 (右前) = Throttle - Roll - Pitch - Yaw
M2 (左后) = Throttle + Roll + Pitch - Yaw
M3 (左前) = Throttle + Roll - Pitch + Yaw
M4 (右后) = Throttle - Roll + Pitch + Yaw

Airmode 的精髓: 当电机输出超限时,整体平移油门中心,保证姿态控制差分不变——"姿态优先,油门让步"。


⚡ 电路设计亮点

宽电压电源架构 (2S-9S)

text
    电池 (4.5-40V) ──► SY8303 DCDC ──► 5V/3A ──► RT9193 LDO ──► 3.3V/500mA
         │                  │                         │
         │                  ├──► USB 5V (带反灌保护)   ├──► MCU
         │                  ├──► 蜂鸣器               ├──► 传感器
         │                  └──► 外设接口             └──► Flash/OSD
         │
         ├──► 电机 (直接电池供电)
         └──► ADC 电压检测 (1:11 分压)

为什么选 SY8303?

  • 输入范围 4.5-40V,覆盖 2S-9S 电池
  • 效率高达 95%,发热小
  • SOT-23-6 封装,体积小巧
  • 价格仅 ¥0.8,性价比极高

USB 反灌保护

问题: 电池供电时,5V 会通过 USB 反灌到电脑,导致 MCU 误判 USB 已连接。

解决方案: 肖特基二极管 (SS14) 隔离 + PB9 检测引脚

text
    USB VBUS ──┬──[SS14 二极管]──► +5V_USB
               │
               └──[10kΩ]──► PB9 (USB_DETECT, Pull-down)

7 颗 LED 专业飞行仪表盘

分组LED颜色功能
核心系统LED_SYS蓝系统心跳 (闪烁=待机, 常亮=已解锁)
核心系统LED_ERR红警告/错误 (快闪=传感器故障)
导航链路LED_GPS绿GPS 状态 (闪烁=搜星, 常亮=3D Fix)
导航链路LED_RX黄遥控信号 (常亮=正常, 灭=Failsafe)
飞行任务LED_MODE白飞行模式指示
飞行任务LED_LOG橙黑匣子记录状态
飞行任务LED_VTX青图传状态

🔧 问题发现与解决

开发过程中遇到了不少"坑",这里记录一些典型问题和解决方案:

问题 1: DMA 通道冲突

现象: WS2812 RGB 灯和 SBUS 接收机同时工作时,数据错乱。

原因: STM32F4 的 DMA 通道是硬件绑定的,TIM3_CH4 和 UART4_RX 共用 DMA1_Stream2。

解决: 将 WS2812 从 TIM3_CH4 (PB1) 迁移到 TIM1_CH1 (PA8),使用 DMA2 通道,彻底隔离。

问题 2: I2C 总线竞争

现象: 多任务环境下,MPU6050 和 SPL06 偶发读取失败。

原因: 两个任务同时访问 I2C1 总线,导致冲突。

解决: 引入 FreeRTOS 互斥锁 (i2c1MutexHandle),所有 I2C 操作前加锁,操作后解锁。

问题 3: Failsafe 油门被覆盖 (严重!)

现象: 失控保护触发后,飞机不下降反而继续按遥控器油门飞行。

原因: 代码中先设置 throttle = FAILSAFE_DESCENT_THROTTLE,后又被 throttle = SBUS_GetThrottle() 覆盖。

解决: 在读取遥控器油门前检查 Failsafe 状态,Failsafe 期间跳过遥控器输入。

问题 4: 偏航角漂移

现象: 飞机静止时,Yaw 角缓慢漂移。

原因: 仅使用 6 轴 IMU (加速度计+陀螺仪),无法校正偏航。

解决: 集成 QMC5883L 磁力计,升级为 9 轴 AHRS,利用地磁场校正偏航。

问题 5: 高频 printf 导致控制抖动

现象: 在 500Hz 的 IMU 任务中加 printf 调试,飞机开始抖动。

原因: printf 是阻塞式的,每次调用耗时 1-2ms,严重影响控制回路。

解决: 开发 RingBuffer 异步日志系统,Log_Printf() 仅需 <10us,数据通过 DMA 后台发送。


🛠️ 技术栈

类别技术选型说明
MCUSTM32F405RGT6ARM Cortex-M4F @ 168MHz
RTOSFreeRTOSCMSIS_V2 接口
IDEKeil MDK-ARMARM Compiler 6
配置工具STM32CubeMXHAL 库生成
EDAKiCad 9.0PCB 设计
调试匿名上位机 V7实时数据可视化

📐 硬件设计

PCB 渲染图

正面 (Top)反面 (Bottom)
PCB 正面PCB 反面

原理图

📄 原理图 PDF: Hardware/zero star/zero star.pdf

主要芯片

芯片功能接口
STM32F405RGT6主控 MCU-
MPU60506轴 IMUI2C1 (0x68)
SPL06-001气压计I2C1 (0x76)
QMC5883L磁力计I2C1 (0x0D)
W25Q12816MB FlashSPI1
AT7456EOSD 视频叠加SPI1
SY8303DCDC 5V/3A (2S-9S 输入)-
RT9193-33LDO 3.3V/500mA-

接口定义

接口引脚功能波特率
J1USB-C固件升级/调参CDC
J2PA2/PA3GPS 模块115200
J3PA9/PA10K210 上位机921600
J4PC6-PC94-in-1 ESCPWM 400Hz
J5PC12/PD2光流模块115200
J6PC10/PC11VTX SmartAudio115200
J22PB10/PB11ELRS 接收机420000 (CRSF)

📚 文档索引

编号文档名称说明链接
00README.md项目总览与索引 (本文档)-
0101_definitions.md命名规范与接口定义查看
0202_project_roadmap.md项目路线图与待办事项查看
0303_issue_tracker.md问题追踪日志 (Bug/Risk)查看
0404_algo_design.md算法设计与优化记录查看
0505_changelog.md版本更新日志查看
0606_operation_guide.md操作指南与环境搭建查看
0707_research_and_ideas.md调研分析与创意池查看
0808_hardware_design.md硬件架构与 PCB 设计查看

🚀 快速开始

1. 环境准备

bash
# 必需软件
- Keil MDK-ARM v5.38+
- STM32CubeMX v6.10+
- ST-Link 驱动

2. 编译项目

  1. 打开 FLYAMASTER/MDK-ARM/FLYAMASTER.uvprojx
  2. 点击 Build (F7) 编译
  3. 点击 Download (F8) 烧录

3. 调试连接

  • SWD 接口: PA13 (SWDIO), PA14 (SWCLK)
  • USB 虚拟串口: PA11/PA12 (CDC)
  • 匿名上位机: USART1 (PA9/PA10) @ 921600 baud

📁 目录结构

text
FLYAMASTER/
├── 3D/                      # 3D 模型文件
├── FLYAMASTER/              # 固件源代码
│   ├── Core/
│   │   ├── Inc/             # 头文件
│   │   │   ├── mpu6050.h    # IMU 驱动
│   │   │   ├── mahony.h     # 姿态解算
│   │   │   ├── pid.h        # PID 控制器
│   │   │   ├── motor.h      # 电机混控
│   │   │   ├── sbus.h       # CRSF 接收
│   │   │   ├── gps.h        # GPS 解析
│   │   │   ├── at7456e.h    # OSD 驱动
│   │   │   └── ...
│   │   └── Src/             # 源文件
│   │       ├── freertos.c   # RTOS 任务
│   │       ├── mpu6050.c    # IMU 驱动实现
│   │       ├── mahony.c     # Mahony 滤波
│   │       ├── pid.c        # PID 算法
│   │       ├── motor.c      # 电机控制
│   │       └── ...
│   └── MDK-ARM/             # Keil 工程
│       ├── FLYAMASTER.uvprojx
│       └── ...
├── Hardware/                # 硬件设计

🎯 项目状态

✅ 已完成

  • 硬件驱动 (IMU, PWM, CRSF, GPS, OSD)
  • 姿态解算 (Mahony 互补滤波)
  • 姿态控制 (串级 PID)
  • 定高控制 (气压计 PID)
  • GPS 定点 (位置环 PID)
  • OSD 显示 (AT7456E)
  • 匿名上位机协议 (V7)
  • 硬件原理图设计 (KiCad)
  • 7 颗 LED 状态指示系统
  • USB 插入检测 (反灌保护)

🚧 进行中

  • PCB 布局优化
  • 打样验证

📋 计划中

  • EKF 状态估计 (可选)
  • 航点飞行
  • 自动返航 (RTH)

👥 贡献者

  • LI - 项目作者 & 核心开发者
  • Doro (Desktop Pet / 桌面宠物) - AI 助手 & 文档撰写

⚖️ 版权声明

text
================================================================================
                    FLYAMASTER 飞控项目 - 版权声明
================================================================================

版权所有 (C) 2026 FLYAMASTER 项目组
Copyright (C) 2026 FLYAMASTER Project Team

                       严格保留所有权利
                  ALL RIGHTS STRICTLY RESERVED

未经版权所有者明确书面授权,严禁:
1. 复制、下载、存储本项目的任何部分
2. 修改、改编、翻译本项目的任何内容
3. 分发、传播、共享本项目的任何文件
4. 将本项目用于任何商业目的
5. 基于本项目创建衍生作品
6. 对本项目进行逆向工程
7. 在任何平台转载、引用本项目内容

任何未经授权的使用将被视为侵权,版权所有者保留追究法律责任的权利。

详见 LICENSE 文件
================================================================================

🙏 致谢

感谢开源社区的前辈们,特别是:

  • Betaflight / INAV / ArduPilot 项目,提供了宝贵的参考
  • Mahony 和 Madgwick 的姿态解算算法论文
  • 立创开源硬件平台,提供了电源方案参考
  • 所有在 GitHub Issues 中提供反馈的朋友们

文档版本: v2.4.0 最后更新: 2026-01-23 作者: LI | 助手: Doro

Parts

131
QtyValueFootprintReferences
29Conn_01x01Connector_Wire:SolderWirePad_1x01_SMD_1x2mmBZ+1, J2, J10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J24, J25 +13
15100nFPCM_fab:C_0603C8, C24, C26, C27, C28, C29, C31, C32, C33, C36, C37, C38, C41, C44, C47
9100nfPCM_fab:C_0603C1, C2, C3, C4, C12, C13, C14, C16, C17
61kΩPCM_fab:R_0603R2, R16, R21, R25, R26, R27
622uFPCM_fab:C_0603C5, C9, C15, C18, C21, C46
410kPCM_fab:R_0603R1, R3, R4, R11
422pFPCM_fab:C_0603C10, C11, C39, C40
4LED_0603PCM_fab:LED_0603D1, D5, D8, D9
210kΩPCM_fab:R_0603R23, R24
210uFPCM_fab:C_0603C19, C43
215kΩPCM_fab:R_0603R5, R10
22.2uFPCM_fab:C_0603C6, C7
222nFPCM_fab:C_0603C20, C45
24.7kΩPCM_fab:R_0603R14, R15
247uFPCM_fab:C_0603C35, C42
2RT9193-33Package_TO_SOT_SMD:SOT-23-5U4, U10
2SY8303AICPackage_TO_SOT_SMD:TSOT-23-8U2, U3
1100kΩPCM_fab:R_0603R9
110KΩPCM_fab:R_0603R20
1110kPCM_fab:R_0603R7
11N4148Diode_SMD:D_SOD-123D7
11uFPCM_fab:C_0603C48
12.2nFPCM_fab:C_0603C25
1200kΩPCM_fab:R_0603R6
1210kΩPCM_fab:R_0603R8
1220nFPCM_fab:C_0603C34
127MhzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY2
1300R/1AInductor_SMD:L_0805_2012Metric_Pad1.05x1.20mm_HandSolderL5
14-in-1 ESCConnector_JST:JST_SH_SM08B-SRSS-TB_1x08-1MP_P1.00mm_HorizontalJ4
14.7uHInductor_SMD:L_Bourns-SRN4018L2
16.8uHInductor_SMD:L_Bourns-SRN4018L1
1600R/2AInductor_SMD:L_0805_2012Metric_Pad1.05x1.20mm_HandSolderL4
175ΩPCM_fab:R_0603R19
18MhzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1AT7456Eeasyeda:TSSOP-28_L9.7-W4.4-P0.65-LS6.4-BL-EP-2U9
1ELRSConnector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_HorizontalJ22
1GPSConnector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_HorizontalJ5
1MPU-6050Package_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mmU6
1QMC5883Leasyeda:LGA-16_L3.0-W3.0-P0.50-BL_SQU7
1SMAJ33ADiode_SMD:D_SMAD2
1SPL06-001easyeda:SENSOR-SMD_SPL06-001U5
1SS34Diode_SMD:D_SOD-123D12
1SS8050Package_TO_SOT_SMD:SOT-23Q1
1STM32F405RGTxPackage_QFP:LQFP-64_10x10mm_P0.5mmU1
1SW_SPSTButton_Switch_SMD:SW_SPST_B3U-3000P-BSW1
1VTXConnector_JST:JST_SH_SM06B-SRSS-TB_1x06-1MP_P1.00mm_HorizontalJ6
1W25Q128JVEPackage_SON:WSON-8-1EP_8x6mm_P1.27mm_EP3.4x4.3mmU8
1上位机Connector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_HorizontalJ3
1光流Connector_JST:JST_SH_SM06B-SRSS-TB_1x06-1MP_P1.00mm_HorizontalJ23

The 127 most common of 131 parts.

Questions

How big is the Zero star PCB?

It measures 38 × 38 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Zero star use?

131 parts, built around the AT7456E, SY8303AIC, QMC5883L and SPL06-001. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Zero star KiCad files?

From the Auodit/flyamaster repository on GitHub, at the commit this page was made from: the board is Hardware/zero star/zero star.kicad_pcb and its schematic Hardware/zero star/4 IN 1/4 IN 1/4 IN 1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Zero star design in my own project?

Its repository publishes it under the CC-BY-SA-4.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from Auodit/flyamaster

2
  • 4 layers38 × 38 mmZero star, the printed circuit board in 3D

    Zero star

    Auodit/flyamaster

    STM32F407 Flight Controller with FreeRTOS

    144 partsCC-BY-SA-4.0
  • 4 layers38 × 38 mmZero star rounded, the printed circuit board in 3D

    Zero star rounded

    Auodit/flyamaster

    STM32F407 Flight Controller with FreeRTOS

    142 partsCC-BY-SA-4.0

Similar boards

  • 4 layers41 × 41 mmFlight Controller, the printed circuit board in 3D

    Flight Controller

    benwys/SparrowHawk

    Open source flight controller for FPV drones. Includes two complete hardware designs (kicad) with production files. Will include custom firmware (bare-metal cpp). In progress :-)

    103 partsMIT
  • 4 layers108 × 74 mmSTM32 Drone, the printed circuit board in 3D

    STM32 Drone

    bassammorsy/stm32-flight-controller

    Custom 4-layer STM32F405RGTx quadcopter flight controller PCB designed in KiCad. Betaflight compatible, 4S–6S LiPo input, SMT assembled by JLCPCB.

    104 parts3MIT
  • 4 layers38 × 74 mmStratosdrone, the printed circuit board in 3D

    Stratosdrone

    equationstratos/STRATOSDRONES

    A 4-layer, 36×70 mm Tello-style portrait controller board for the STRATOSDRONE: chip-down ESP32-P4 (flight + camera + hardware H.264) with an ESP32-C6-MINI-1 Wi-Fi co-processor, IMU / barometer / ToF / optical-flow…

    115 parts
  • 4 layers42 × 42 mmVayuF7, the printed circuit board in 3D

    VayuF7

    ishantmahatopro/Vayu-F722

    Custom 42x42mm 4-layer STM32F722 FPV flight controller for 5in and 7in cinematic and telemetry quads.

    146 partsMIT
  • 4 layers48 × 48 mmFlight controller, the printed circuit board in 3D

    Flight controller

    Eryk-Mozdzen/uav-tvc-goose

    Single rotor, thrust vector controlled UAV

    73 parts9
  • 2 layers78.5 × 20.6 mmKamiTrack, the printed circuit board in 3D

    KamiTrack

    kitspace-test-repos/kicad6-file-collection

    65 partsMIT
  • 2 layers33.2 × 40 mmDesk Display, the printed circuit board in 3D

    Desk Display

    ANSHUMANDOCX/Desk-Display

    It is a desk display made using an E ink display.

    63 parts