Skip to the content
PCBKitNew board
4 layers70 × 52 mmFlight controller, the printed circuit board in 3D

Open-source ArduPilot-compatible flight controller for fixed-wing UAVs. STM32F405, 4-layer KiCad design, built in 5 modular stages.

Size
70 × 52 mm
Copper layers
4
Thickness
1.6 mm
Parts
39
Nets
67
Pads
206
Tracks, vias
550, 86
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
2 Aug 2026
Updated
2 Aug 2026

Overview

Flight controller is an open-source printed circuit board by ErdemA33, from the ErdemA33/stm32f405-flight-controller repository on GitHub. It is a 4-layer board of 70 × 52 mm with 39 parts on 67 nets, routed with 550 tracks and 86 vias.

It is built around the AMS1117-3.3. Its parts include 18 capacitors, 7 resistors, 6 connectors, 2 ICs and 2 diodes. It belongs with the robots and motor control boards and the STM32 boards of this library.

Main components

1

README

README.md

ArduPilot Fixed-Wing Flight Controller

An open-source, ArduPilot-compatible flight controller for fixed-wing UAVs. STM32F405-based, 4-layer, designed in KiCad.

Status: Design complete. The board has not been manufactured or tested yet. Verify independently before use.


Specifications

MCUSTM32F405RGT6, LQFP-64, 168 MHz
IMUICM-42688-P (SPI1)
BarometerDPS310 (SPI1)
FlashW25Q128JV, 16 MB for logging (SPI1)
Input3S–6S LiPo (9–25.2 V), XT60PW
Logic rail5 V / 2 A — LMR33630
Servo rail5 V / 6 A — LM61460
3.3 VLDO with diode-OR (USB or battery)
Current sensingINA286, dual parallel 0.5 mΩ shunts, 80 A
Voltage sensing91k/10k divider with RC filter
Servo outputs8 channels
UART4× JST-GH 6-pin
I2C2× JST-GH 4-pin
OtherUSB-C, SWD, buzzer, WS2812 LED, safety switch
PCB4 layers, 2 oz outer copper

Modular design approach

Rather than jumping straight to the integrated board, the design was built in five stages. Each stage was laid out and verified as a separate PCB, which kept errors isolated to small boards.

DirectoryStageContents
MCU/1STM32F405 breakout — MCU, crystal, USB, SWD
sensor_board/2IMU, barometer, flash — SPI bus verification
power_board/3Power input, protection, dual buck, current/voltage sensing
Input_Output/4Servo outputs, UART/I2C connectors, buzzer, LED
entegre_fc/5Everything combined on a single PCB
external_components/—Third-party symbol and footprint libraries

Pin map

Pins were grouped by package edge to simplify PCB routing.

Servo outputs

ChannelPinTimerDefault function
1PB14TIM12_CH1Flaperon left
2PB15TIM12_CH2Flaperon right
3PC6TIM8_CH1Elevator
4PC7TIM8_CH2Rudder
5PC8TIM8_CH3Payload servo 1
6PC9TIM8_CH4Payload servo 2
7PA8TIM1_CH1Throttle (ESC)
8PA15TIM2_CH1Spare

Flaperons share a timer group so both surfaces are driven at the same PWM rate. The ESC channel sits on its own timer so DShot can be enabled later without affecting the servo outputs.

Sensors (SPI1)

FunctionPin
SCK / MISO / MOSIPA5 / PA6 / PA7
CS_IMUPA4
CS_BAROPC4
CS_FLASHPC5
IMU_INTPB2

Communication

InterfacePins
UART1PC10 / PC11
UART2PC12 / PD2
UART3PB6 / PB7
UART4PA0 / PA1
I2C1PB8 / PB9
I2C2PB10 / PB11

Miscellaneous

FunctionPin
V_SENSEPC0
I_SENSEPC1
USB VBUS detectPC2
USB DM / DPPA11 / PA12
SWDIO / SWCLKPA13 / PA14
BuzzerPC13
Safety switchPC14
Safety LEDPC15
WS2812 LEDPB4

Unused pins: PA2, PA3, PA9, PA10, PB0, PB1, PB3, PB5, PB12, PB13, PC3


Layer stackup

LayerContents
L1 (F.Cu)Components, high-current polygons, short signals
L2 (In1)Uninterrupted ground plane
L3 (In2)Power regions: VIN, +5V_LOGIC, +5V_SERVO, +3V3
L4 (B.Cu)Long signal runs, ground pour

The sensor block sits diagonally opposite the switching regulators. Sensitive analog traces (V_SENSE, I_SENSE) are routed on the opposite side of the ground plane from the switching nodes.


ArduPilot parameters

ParameterValueNotes
BATT_VOLT_MULT10.191kΩ/10kΩ divider
BATT_AMP_PERVLT40INA286 at 100 V/V, dual 0.5 mΩ shunts
BATT_AMP_OFFSET0

Calibrate against a multimeter after assembly.


Design notes

The ESC header's power pin is intentionally left floating. This prevents the ESC's internal BEC from fighting the on-board servo rail. Cube Orange uses the same approach.

No RTC crystal. ArduPilot gets time from GPS, so the 32.768 kHz oscillator was omitted, freeing two GPIO pins.

SWD is preserved. PA13/PA14 could have been repurposed under pin pressure, but keeping debug access on a first-revision board was judged more valuable.

Kelvin connections for current sensing. Sense traces tap the inner edges of the shunt pads symmetrically, so copper resistance doesn't corrupt the measurement.


Requirements

  • KiCad 8 or newer
  • Libraries in external_components/ must be added to the project

Manufacturing

Targeted at JLCPCB. 4 layers, 2 oz outer copper.

Before exporting Gerbers, inspect the inner layers visually — particularly the L3 power regions. DRC does not always catch inner-layer zone geometry issues.


License

CERN-OHL-S v2


Roadmap

  • Fabricate the board
  • Verify power rails
  • Flash bootloader and ArduPilot
  • Verify sensor readings
  • Calibrate current and voltage sensing
  • Write hwdef.dat
  • HIL and flight testing

Parts

39
QtyValueFootprintReferences
7100nFCapacitor_SMD:C_0603_1608MetricC3, C4, C5, C6, C7, C8, C25
212pFCapacitor_SMD:C_0603_1608MetricC23, C24
22.2µFCapacitor_SMD:C_0805_2012MetricC19, C20
220pFCapacitor_SMD:C_0603_1608MetricC21, C22
222Resistor_SMD:R_0603_1608MetricR5, R6
25.1kResistor_SMD:R_0603_1608MetricR4, RE
2GPIOConnector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_VerticalJ5, J6
2LEDLED_SMD:LED_0603_1608MetricD1, D2
110kResistor_SMD:R_0603_1608MetricR2
110nFCapacitor_SMD:C_0603_1608MetricC18
110µFCapacitor_SMD:C_0805_2012MetricC1
11kResistor_SMD:R_0603_1608MetricR7
11µFCapacitor_SMD:C_0603_1608MetricC17
1220Resistor_SMD:R_0603_1608MetricR1
122µFCapacitor_SMD:C_0805_2012MetricC2
132.768kHzCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmY2
14.7µFCapacitor_SMD:C_0805_2012MetricC16
15V girişTerminalBlock_Phoenix:TerminalBlock_Phoenix_MPT-0,5-2-2.54_1x02_P2.54mm_HorizontalJ1
18MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U2
1BOOT0 jumperConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2
1FerriteInductor_SMD:L_0805_2012MetricFB1
1ResetButton_Switch_SMD:SW_SPST_TL3342SW1
1STM32F405RGTxPackage_QFP:LQFP-64_10x10mm_P0.5mmU1
1SWDConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ4
1USB-CConnector_USB:USB_C_Receptacle_GCT_USB4085J3

Questions

How big is the Flight controller PCB?

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

What parts does the Flight controller use?

39 parts, built around the AMS1117-3.3. 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 Flight controller KiCad files?

From the ErdemA33/stm32f405-flight-controller repository on GitHub, at the commit this page was made from: the board is MCU/flight controller.kicad_pcb and its schematic Input_Output/Input_Output.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Flight controller design in my own project?

Its repository states no licence, so its author keeps all rights: ask ErdemA33 before reusing the design.

More from ErdemA33/stm32f405-flight-controller

4
  • 4 layers102.8 × 67 mmEntegre fc, the printed circuit board in 3D

    Entegre fc

    ErdemA33/stm32f405-flight-controller

    Open-source ArduPilot-compatible flight controller for fixed-wing UAVs. STM32F405, 4-layer KiCad design, built in 5 modular stages.

    129 parts3
  • 4 layers69.9 × 75.7 mmPower board, the printed circuit board in 3D

    Power board

    ErdemA33/stm32f405-flight-controller

    Open-source ArduPilot-compatible flight controller for fixed-wing UAVs. STM32F405, 4-layer KiCad design, built in 5 modular stages.

    56 parts3
  • 4 layers75.8 × 60.3 mmInput Output, the printed circuit board in 3D

    Input Output

    ErdemA33/stm32f405-flight-controller

    Open-source ArduPilot-compatible flight controller for fixed-wing UAVs. STM32F405, 4-layer KiCad design, built in 5 modular stages.

    35 parts3
  • 4 layers26 × 24 mmSensor board, the printed circuit board in 3D

    Sensor board

    ErdemA33/stm32f405-flight-controller

    Open-source ArduPilot-compatible flight controller for fixed-wing UAVs. STM32F405, 4-layer KiCad design, built in 5 modular stages.

    18 parts3

Similar boards

  • 2 layers290.1 × 130 mmPro V2, the printed circuit board in 3D

    Pro V2

    kata0510/Lily58

    6×4+4keys column-staggered split keyboard.

    312 parts2.3k
  • 2 layers26.2 × 45.5 mmPL18 multiprotocol, the printed circuit board in 3D

    PL18 multiprotocol

    pascallanger/DIY-Multiprotocol-TX-Module

    Multiprotocol TX Module (or MULTI-Module) is a 2.4GHz transmitter module which controls many different receivers and models.

    24 parts1.9kGPL-3.0
  • 4 layers99 × 53.3 mmPSLab, the printed circuit board in 3D

    PSLab

    fossasia/pslab-hardware

    PSLab Hardware Design and Schematics https://pslab.io

    199 parts1.7kApache-2.0
  • 4 layers85 × 56 mmPslab mini, the printed circuit board in 3D

    Pslab mini

    fossasia/pslab-mini-hardware

    PSLab Mini Hardware https://pslab.io

    182 parts1.2kApache-2.0
  • 4 layers100 × 54 mm32Bit shift register, the printed circuit board in 3D

    32Bit shift register

    MaltWhiskey/Mega-Cube

    16x16x16 PL9823 Cube with Teensy 4.0 and FlexIO driver

    64 parts766
  • 2 layers44.2 × 29.3 mmI2c tiny usb, the printed circuit board in 3D

    I2c tiny usb

    harbaum/I2C-Tiny-USB

    Cheap and simple I²C to USB interface

    27 parts454
  • 2 layers78 × 60 mmIce viz, the printed circuit board in 3D

    Ice viz

    muni-works/vcad

    BRep CAD kernel in Rust/WASM

    44 parts442Apache-2.0
  • 2 layers59.1 × 99.9 mmCheap FOCer 2 60mm, the printed circuit board in 3D

    Cheap FOCer 2 60mm

    shamansystems/Cheap-FOCer-2

    Low-Cost Motor Controller based on the VESC 6

    193 parts407