
PDB2
nimaakbari2006/fpv-drone-flight-controller
Custom power distribution board and STM32F405 flight controller PCBs designed in KiCad for a 5-inch FPV drone. Dual synchronous buck converters, ICM-42688-P gyro, 4-layer layout, Betaflight-compatible.

Custom power distribution board and STM32F405 flight controller PCBs designed in KiCad for a 5-inch FPV drone. Dual synchronous buck converters, ICM-42688-P gyro, 4-layer layout, Betaflight-compatible.
Flightcontroller is an open-source printed circuit board by nimaakbari2006, from the nimaakbari2006/fpv-drone-flight-controller repository on GitHub, published under the MIT licence. It is a 4-layer board of 36 × 36 mm with 87 parts on 82 nets, routed with 2,239 tracks and 85 vias.
It is built around the W25Q128JVSIQ, ICM-42688-P and SPX3819M5-L-3-3. Its parts include 31 capacitors, 18 resistors, 5 ICs, 5 connectors and 2 switches. It belongs with the robots and motor control and power boards and the STM32 boards of this library.
Two custom PCBs designed from scratch in KiCad for a 5-inch FPV drone, plus complete component selection and compatibility validation for the full build. This project covers the full stack: switching power supply design, a Betaflight-compatible flight controller, and systems-level integration of the entire aircraft.
The goal was to replace the stock electronics of a 5-inch FPV drone with custom-designed hardware, as an electrical engineering portfolio project. Two boards were designed:
Both boards were designed to the standard 30.5 × 30.5 mm FPV stack mounting pattern to integrate with the airframe and ESC.
A dual-output switching power supply feeding the drone's electronics.
Key features:
Design decisions:
(See /PDB/ for schematic, layout, 3D render, and Gerbers.)
A full-featured, Betaflight-compatible flight controller.
Core:
Peripherals:
Design decisions:
(See /FlightController/ for schematic, layout, 3D render, and Gerbers.)
The design methodology was datasheet-driven: each IC's manufacturer datasheet specifies a recommended application circuit, and following those recommended values — for decoupling, compensation, loop stability, and support components — is the correct engineering practice rather than guessing or reinventing them. Where the design required application-specific values that the datasheet does not give directly (chiefly the regulator output voltages and the battery-sense scaling), those were calculated from the relevant equations. This section documents both.
The majority of passive values came directly from the manufacturers' recommended application circuits:
Using the datasheet's recommended circuit is deliberate: manufacturers characterise these values for stability and noise performance, and deviating from them without reason is how power supplies end up oscillating or ICs end up unstable.
A few values are application-specific and were derived rather than copied:
Buck converter output voltages (feedback dividers). The MP2307 servos its feedback pin to an internal 0.925 V reference; the output is set by a divider:
Vout = 0.925 V × (1 + Rtop / Rbot)With Rbot fixed at 10 kΩ, Rtop was solved for each rail:
1% (E96) resistors were used so output accuracy is set by the reference and divider, not resistor drift.
Battery voltage sensing. A 100 kΩ / 10 kΩ divider scales the raw battery voltage down to the STM32's 3.3 V ADC range: at 4S full charge (16.8 V) the ADC sees ~1.5 V, at 6S (25.2 V) ~2.3 V — both safely under the 3.3 V limit with headroom. This matches Betaflight's default voltage-sensing scale.
Crystal load capacitors. Sized from the crystal's specified load capacitance and estimated board stray capacitance using Cload_cap ≈ 2 × (CL − Cstray), giving ~22 pF per oscillator node.
Pull-ups and pull-downs were chosen high enough to draw negligible current but low enough to hold a defined logic level against pin leakage — 10 kΩ for the NRST pull-up, BOOT0/BOOT1 pull-downs, and the SPI flash/OSD chip-select and hold lines; 100 kΩ for the buzzer MOSFET gate pull-down so it stays off while its GPIO is floating during boot.
Beyond the PCBs, the project involved specifying and validating an entire FPV drone, ensuring every component is electrically and mechanically compatible.
Key selection decisions:
Interface & connector compatibility (each verified against the actual component pinouts):
(See /BOM/FPV_Drone_BOM.xlsx for the complete bill of materials with compatibility notes.)
KiCad · schematic capture · PCB layout · 4-layer stackup design · switching power supply design · SPI/UART bus architecture · USB routing · DRC/ERC verification · library management (symbol/footprint import) · datasheet-driven design · systems integration · component selection & compatibility analysis
Both boards are fully designed and verified in KiCad (ERC and DRC clean). Manufacturing files (Gerbers, BOM, placement) generated for fabrication and assembly. Full drone build specified and components sourced.
Physical assembly and flight testing to follow — this README will be updated with assembly photos and results.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 18 | 100n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C3, C10, C11, C12, C13, C14, C15, C17, C18, C21, C24, C25, C26, C27, C28, C30 +2 |
| 9 | 10K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R4, R7, R8, R9, R14, R15, R16, R17, R18 |
| 4 | 22p | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C8, C9, C19, C20 |
| 3 | 1u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1, C5, C31 |
| 3 | 2.2u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2, C22, C23 |
| 2 | 100K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R3, R12 |
| 2 | 1K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R11, R13 |
| 2 | 5.1K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R2 |
| 2 | 75 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R6, R10 |
| 2 | SW_Push | Button_Switch_SMD:SW_SPST_TL3305A | SW1, SW2 |
| 1 | 10n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C4 |
| 1 | 27MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm_HandSoldering | Y1 |
| 1 | 2N7002 | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | 3.3V | TestPoint:TestPoint_Pad_D1.0mm | H16 |
| 1 | 330 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R5 |
| 1 | 4.7n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C16 |
| 1 | 4.7u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C29 |
| 1 | 5V | TestPoint:TestPoint_Pad_D2.5mm | H7 |
| 1 | 5V | TestPoint:TestPoint_Pad_D1.5mm | H10 |
| 1 | 600Ω @ 100MHz | Inductor_SMD:L_0805_2012Metric_Pad1.05x1.20mm_HandSolder | FB1 |
| 1 | 8MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm_HandSoldering | Y2 |
| 1 | AT7456ELAH_C42388749 | ProLib_1pcs_2026-09-07:LGA-16_L6.8-W4.0-P0.65-TL-2EP | U4 |
| 1 | BATT | TestPoint:TestPoint_Pad_D2.5mm | H18 |
| 1 | Buzzer | Buzzer_Beeper:Buzzer_CUI_CPT-9019S-SMT | BZ1 |
| 1 | CURRENT | TestPoint:TestPoint_Pad_D1.5mm | H6 |
| 1 | Camera | Connector_JST:JST_SH_SM06B-SRSS-TB_1x06-1MP_P1.00mm_Horizontal | J3 |
| 1 | D_Schottky | Diode_SMD:D_SOD-123 | D1 |
| 1 | GND | TestPoint:TestPoint_Pad_D1.5mm | H11 |
| 1 | GND | TestPoint:TestPoint_Pad_D2.5mm | H12 |
| 1 | GPS | Connector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal | J5 |
| 1 | ICM-42688-P | ICM-42688-P:PQFN50P300X250X97-14N | U1 |
| 1 | LED Strip | Connector_JST:JST_SH_SM03B-SRSS-TB_1x03-1MP_P1.00mm_Horizontal | J2 |
| 1 | Motor_1 | TestPoint:TestPoint_Pad_D1.5mm | H1 |
| 1 | Motor_2 | TestPoint:TestPoint_Pad_D1.5mm | H2 |
| 1 | Motor_3 | TestPoint:TestPoint_Pad_D1.5mm | H3 |
| 1 | Motor_4 | TestPoint:TestPoint_Pad_D1.5mm | H4 |
| 1 | RECEIVER_RX | TestPoint:TestPoint_Pad_D1.5mm | H9 |
| 1 | RECEIVER_TX | TestPoint:TestPoint_Pad_D1.5mm | H8 |
| 1 | SPX3819M5-L-3-3 | Package_TO_SOT_SMD:SOT-23-5 | U2 |
| 1 | STM32F405RGTx | Package_QFP:LQFP-64_10x10mm_P0.5mm | U5 |
| 1 | SWCLK | TestPoint:TestPoint_Pad_D1.0mm | H14 |
| 1 | SWDIO | TestPoint:TestPoint_Pad_D1.0mm | H13 |
| 1 | TELEMETRY | TestPoint:TestPoint_Pad_D1.5mm | H5 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J1 |
| 1 | VTX | Connector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal | J4 |
| 1 | W25Q128JVS | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U3 |
The 83 most common of 87 parts.
It measures 36 × 36 mm and has 4 copper layers, 1.6 mm thick.
87 parts, built around the W25Q128JVSIQ, ICM-42688-P and SPX3819M5-L-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 nimaakbari2006/fpv-drone-flight-controller repository on GitHub, at the commit this page was made from: the board is FlightController/Flightcontroller.kicad_pcb and its schematic FlightController/Flightcontroller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

nimaakbari2006/fpv-drone-flight-controller
Custom power distribution board and STM32F405 flight controller PCBs designed in KiCad for a 5-inch FPV drone. Dual synchronous buck converters, ICM-42688-P gyro, 4-layer layout, Betaflight-compatible.

nikipoatgit/FlightController_H743
repo contains flight controller target files, PCB Gerber files, and the schematic.

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.



Kirg5/2040Inverter
RP2040 Based BLDC Inverter for sensored motors, capable of putting out 50a 100v

ayaxan7/SolarAlert
SolarAlert is a compact embedded hardware project designed to monitor the health and performance of solar panels.

wangbo13/OSHW
Lexsion 的开源硬件项目,尽管拿去使用!Open-source hardware projects by Lexsion, that everyone can use!

fdiwth/tvc-drone
This repository contains the documentation, hardware designs, and source code for a Thrust Vector Control (TVC) drone.