
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.

Open-source ArduPilot-compatible flight controller for fixed-wing UAVs. STM32F405, 4-layer KiCad design, built in 5 modular stages.
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.
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.
| MCU | STM32F405RGT6, LQFP-64, 168 MHz |
| IMU | ICM-42688-P (SPI1) |
| Barometer | DPS310 (SPI1) |
| Flash | W25Q128JV, 16 MB for logging (SPI1) |
| Input | 3S–6S LiPo (9–25.2 V), XT60PW |
| Logic rail | 5 V / 2 A — LMR33630 |
| Servo rail | 5 V / 6 A — LM61460 |
| 3.3 V | LDO with diode-OR (USB or battery) |
| Current sensing | INA286, dual parallel 0.5 mΩ shunts, 80 A |
| Voltage sensing | 91k/10k divider with RC filter |
| Servo outputs | 8 channels |
| UART | 4× JST-GH 6-pin |
| I2C | 2× JST-GH 4-pin |
| Other | USB-C, SWD, buzzer, WS2812 LED, safety switch |
| PCB | 4 layers, 2 oz outer copper |
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.
| Directory | Stage | Contents |
|---|---|---|
MCU/ | 1 | STM32F405 breakout — MCU, crystal, USB, SWD |
sensor_board/ | 2 | IMU, barometer, flash — SPI bus verification |
power_board/ | 3 | Power input, protection, dual buck, current/voltage sensing |
Input_Output/ | 4 | Servo outputs, UART/I2C connectors, buzzer, LED |
entegre_fc/ | 5 | Everything combined on a single PCB |
external_components/ | — | Third-party symbol and footprint libraries |
Pins were grouped by package edge to simplify PCB routing.
| Channel | Pin | Timer | Default function |
|---|---|---|---|
| 1 | PB14 | TIM12_CH1 | Flaperon left |
| 2 | PB15 | TIM12_CH2 | Flaperon right |
| 3 | PC6 | TIM8_CH1 | Elevator |
| 4 | PC7 | TIM8_CH2 | Rudder |
| 5 | PC8 | TIM8_CH3 | Payload servo 1 |
| 6 | PC9 | TIM8_CH4 | Payload servo 2 |
| 7 | PA8 | TIM1_CH1 | Throttle (ESC) |
| 8 | PA15 | TIM2_CH1 | Spare |
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.
| Function | Pin |
|---|---|
| SCK / MISO / MOSI | PA5 / PA6 / PA7 |
| CS_IMU | PA4 |
| CS_BARO | PC4 |
| CS_FLASH | PC5 |
| IMU_INT | PB2 |
| Interface | Pins |
|---|---|
| UART1 | PC10 / PC11 |
| UART2 | PC12 / PD2 |
| UART3 | PB6 / PB7 |
| UART4 | PA0 / PA1 |
| I2C1 | PB8 / PB9 |
| I2C2 | PB10 / PB11 |
| Function | Pin |
|---|---|
| V_SENSE | PC0 |
| I_SENSE | PC1 |
| USB VBUS detect | PC2 |
| USB DM / DP | PA11 / PA12 |
| SWDIO / SWCLK | PA13 / PA14 |
| Buzzer | PC13 |
| Safety switch | PC14 |
| Safety LED | PC15 |
| WS2812 LED | PB4 |
Unused pins: PA2, PA3, PA9, PA10, PB0, PB1, PB3, PB5, PB12, PB13, PC3
| Layer | Contents |
|---|---|
| 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.
| Parameter | Value | Notes |
|---|---|---|
BATT_VOLT_MULT | 10.1 | 91kΩ/10kΩ divider |
BATT_AMP_PERVLT | 40 | INA286 at 100 V/V, dual 0.5 mΩ shunts |
BATT_AMP_OFFSET | 0 |
Calibrate against a multimeter after assembly.
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.
external_components/ must be added to the projectTargeted 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.
CERN-OHL-S v2
hwdef.dat| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 100nF | Capacitor_SMD:C_0603_1608Metric | C3, C4, C5, C6, C7, C8, C25 |
| 2 | 12pF | Capacitor_SMD:C_0603_1608Metric | C23, C24 |
| 2 | 2.2µF | Capacitor_SMD:C_0805_2012Metric | C19, C20 |
| 2 | 20pF | Capacitor_SMD:C_0603_1608Metric | C21, C22 |
| 2 | 22 | Resistor_SMD:R_0603_1608Metric | R5, R6 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R4, RE |
| 2 | GPIO | Connector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_Vertical | J5, J6 |
| 2 | LED | LED_SMD:LED_0603_1608Metric | D1, D2 |
| 1 | 10k | Resistor_SMD:R_0603_1608Metric | R2 |
| 1 | 10nF | Capacitor_SMD:C_0603_1608Metric | C18 |
| 1 | 10µF | Capacitor_SMD:C_0805_2012Metric | C1 |
| 1 | 1k | Resistor_SMD:R_0603_1608Metric | R7 |
| 1 | 1µF | Capacitor_SMD:C_0603_1608Metric | C17 |
| 1 | 220 | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 22µF | Capacitor_SMD:C_0805_2012Metric | C2 |
| 1 | 32.768kHz | Crystal:Crystal_SMD_3215-2Pin_3.2x1.5mm | Y2 |
| 1 | 4.7µF | Capacitor_SMD:C_0805_2012Metric | C16 |
| 1 | 5V giriş | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MPT-0,5-2-2.54_1x02_P2.54mm_Horizontal | J1 |
| 1 | 8MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2 |
| 1 | BOOT0 jumper | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J2 |
| 1 | Ferrite | Inductor_SMD:L_0805_2012Metric | FB1 |
| 1 | Reset | Button_Switch_SMD:SW_SPST_TL3342 | SW1 |
| 1 | STM32F405RGTx | Package_QFP:LQFP-64_10x10mm_P0.5mm | U1 |
| 1 | SWD | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J4 |
| 1 | USB-C | Connector_USB:USB_C_Receptacle_GCT_USB4085 | J3 |
It measures 70 × 52 mm and has 4 copper layers, 1.6 mm thick.
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.
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.
Its repository states no licence, so its author keeps all rights: ask ErdemA33 before reusing the design.

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

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

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

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


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

fossasia/pslab-hardware
PSLab Hardware Design and Schematics https://pslab.io


MaltWhiskey/Mega-Cube
16x16x16 PL9823 Cube with Teensy 4.0 and FlexIO driver



shamansystems/Cheap-FOCer-2
Low-Cost Motor Controller based on the VESC 6