Skip to the content
PCBKitNew board
4 layers55.9 × 55.9 mmQUADCOPTER, the printed circuit board in 3D

QuadCopter Rev B: STM32F401 four-layer flight-controller PCB, manufacturing files, hardware documentation and firmware integration plan.

Size
55.9 × 55.9 mm
Copper layers
4
Thickness
1.6 mm
Parts
103
Nets
76
Pads
310
Tracks, vias
735, 144
Pours
4
Routed
Yes
KiCad
KiCad 10.99 (file 20260623)
Created
27 Sep 2026
Updated
2 Oct 2026

Overview

QUADCOPTER is an open-source printed circuit board by Riskerx, from the Riskerx/QUADCOPTER repository on GitHub. It is a 4-layer board of 55.9 × 55.9 mm with 103 parts on 76 nets, routed with 735 tracks and 144 vias.

It is built around the STM32F401CCU6, BMM350 and BMP390L, with the 24LC256-I/P, BH18PB1WHFV-TR and BMI270 among its other parts. Its parts include 30 capacitors, 25 resistors, 7 ICs, 4 diodes and 3 switches. It belongs with the robots and motor control boards and the STM32 boards of this library.

Main components

11

README

README.md

QuadCopter F401 · Rev B

A custom four-layer flight-controller PCB

STM32F401CCU6 processing, BMI270 inertial sensing, BMP390L pressure sensing and a BMM350 magnetometer — with four ESC signal outputs, two UARTs, USB-C and SWD in a 55.88 mm square board.

Rev B PCB rendered directly from KiCad

Current milestone: prototype hardware CAD release. The board is fully routed and its configured DRC/ERC checks pass. Firmware integration, first-board bring-up and flight testing remain to be completed. The image is a CAD render; SW3 is not modeled.

Hardware guide · Connections · Firmware integration · Engineering changes · Fabrication instructions

What this project does

The PCB brings the sensing, processing and low-voltage interfaces of a small quadcopter flight controller onto one board. It is intended to read motion and environmental sensors, communicate with external receiver/telemetry peripherals, and send commands to four separate ESCs once the required firmware is implemented.

This is a flight-controller board, not a motor power-distribution board or an ESC. It contains no radio receiver or GPS module. Its 5 V input requires a regulated BEC; it must not be connected directly to a flight battery.

Release status

AreaState
Schematic and four-layer layoutCompleted for Rev B
Configured DRC errors / warnings0
Unrouted connections0
Schematic/PCB parity issues0
ERC violations0
Additional connectivity/value checks36 passed
Manufacturing and assembly exportsGerbers, drills, BOM, placement and drawings included
Firmware source / binaryNot implemented in this repository
Assembly, powered tests, calibration and flightPending

The DRC report, ERC report and validation summary with source hashes provide the evidence. No individual DRC exclusions were added. Inherited ignored rule categories and the J1 local fabrication rule are documented in the engineering notes. These are CAD results, not measured hardware or flight results.

Hardware at a glance

FeatureImplementation
ProcessorSTM32F401CCU6, Arm Cortex-M4F, up to 84 MHz; 256 KiB flash / 64 KiB SRAM
Main clock8 MHz ECS crystal; initial 30 pF C0G loads, 0 Ω series jumper
IMUBosch BMI270, accelerometer + gyroscope, SPI1
BarometerBosch BMP390L, I2C1
MagnetometerBosch BMM350, auxiliary I2C through BMI270
Storage24LC256, 32 KiB I2C EEPROM
External controlFour TIM3 ESC signal outputs through 22 Ω series resistors
CommunicationsTwo UARTs; USB full-speed device interface via USB-C
Debug / bootSWD pads, RESET and BOOT switches, defined BOOT1 pull-down
PowerRegulated 5 V BEC or selected USB; onboard 3.3 V and 1.8 V LDOs
MonitoringSelected 5 V rail sensing on PA0; power, status and error LEDs
PCB4 layers; 55.88 × 55.88 mm; nominal 1.6 mm thick
MountingFour Ø2.2 mm M2 clearance holes on a 50.8 mm square pitch
Assembly73 populated components; top-side placement

Hardware block diagram

Board views

Top: components and interfacesBottom: labels and orientation
Rev B component sideRev B rear silkscreen and FRONT arrow

Assembly drawing · Top routing view · Bottom routing view · Schematics

The renders use actual project geometry. Custom model alignment is illustrative rather than a certified mechanical enclosure model; standard KiCad 10 3D libraries are needed for a complete local preview.

Electrical design

Regulated 5 V only. SW3 selects the BEC input or diode-isolated USB power. U5 supplies the 3.3 V rail, while U7 supplies the BMM350's 1.8 V core. BMM350 VDDIO and auxiliary-bus pull-ups stay at 3.3 V to match the BMI270. PA0 monitors the selected 5 V rail through a 10 kΩ / 10 kΩ divider.

USB-C uses separate 5.1 kΩ CC pull-downs, both data-contact orientations, grounded shield pads and USBLC6-2P6 protection. SWD remains the primary programming/recovery interface. PA9 is allocated to UART TX, so application firmware must account for unavailable USB VBUS sensing on that pin.

The inner ground plane provides a return path; In2.Cu distributes power. The BMM350 has local core/I/O decoupling and its specified 2.2 µF nonmagnetic CRST capacitor. The MCU analog rail is filtered with a ferrite bead. C2/C3 and R5 still need oscillator startup/drive-level qualification on real hardware.

See hardware details for the power path, PCB stack, sensors, protection and fabrication constraints.

External connections

LabelMCU functionUse
M1PB4 / TIM3_CH1ESC1 logic signal
M2PB5 / TIM3_CH2ESC2 logic signal
M3PB0 / TIM3_CH3ESC3 logic signal
M4PB1 / TIM3_CH4ESC4 logic signal
TX1 / RX1PA9 / PA10USART1
TX2 / RX2PA2 / PA3USART2
CLK / DIOPA14 / PA13SWD clock / data
3V3Target referenceSWD target-voltage reference
5V IN / GNDRegulated inputOne BEC; no raw LiPo
5V / GNDSelected railExternal low-voltage peripherals

TX/RX labels are from the controller's perspective. Use compatible 3.3 V logic and a common ground. Motor power goes directly to external ESCs; do not connect motor windings or battery power to the signal pads. Full pad ordering and wiring notes.

Firmware: what is planned

This repository currently contains hardware and firmware integration documentation, not flight firmware. There is no flashable binary, tested CubeMX project, ready-made Betaflight/INAV/ArduPilot target or qualified DShot DMA map.

The firmware guide covers:

  • Clock, peripheral and interrupt assignments for this exact board.
  • BMI270 SPI initialization and the BMM350 auxiliary-bus transport.
  • BMP390L compensation, EEPROM persistence, UARTs, USB and ADC sensing.
  • Proposed acquisition, calibration, estimation, control and mixer modules.
  • Arming states, receiver freshness, watchdog/fault handling and telemetry.
  • A staged bring-up plan and measurable acceptance milestones.

The intended flow is timestamped sensor acquisition → calibration/filtering → state estimation → control → mixer/limits → ESC commands, supervised by arming and fault logic. Actual scheduling rates, filter settings, PID gains and motor protocol must be selected and validated on the assembled system.

Upstream starting points are STM32CubeF4, BMI270 SensorAPI, BMP3 SensorAPI and BMM350 SensorAPI. They are referenced rather than included as tested dependencies.

Open, fabricate and assemble

  1. Clone this repository and open QuadCopter.kicad_pro in KiCad 10.99 or a compatible newer version. Close/reload any editor still holding an earlier board before saving.
  2. Read the fabrication instructions, especially fine-pitch solder-mask and J1 locator-hole clearances.
  3. Use QuadCopter_RevB_Fabrication.zip for Gerbers and Excellon drills.
  4. Use bom.csv, positions-assembly.csv, and assembly-top.svg for assembly. Confirm placement rotation conventions with the assembler.
  5. Follow the first-board acceptance procedure using a current-limited supply, then SWD and diagnostic firmware. Keep propellers removed throughout initial motor testing.

Complete project archive · Archive checksums

Generic passives are specified by value/package/tolerance/dielectric/voltage in the BOM. Use the exact C20 reverse-geometry nonmagnetic part. Confirm the retained ROHM 1.8 V regulator's availability before assembly. Do not infer a high-current peripheral rating or flight certification from the existence of manufacturing files.

Reproduce the CAD checks and exports

Python 3 and the KiCad CLI are required; the CAD verification/export scripts use only Python's standard library.

sh
python3 tools/verify_project.py
python3 tools/build_release.py

Set KICAD_CLI if the executable is not on PATH or at the normal macOS location. Verification refills and saves copper zones, checks schematic parity and ERC, then asserts critical net connections/values. The release builder exports manufacturing data and packages the project. Social image generation is separate; see the image-set instructions.

Repository map

text
QuadCopter.kicad_pro / .kicad_pcb / .kicad_dru
QuadCopter.kicad_sch             Root schematic
mcu.kicad_sch                    MCU, clock, reset, debug
IMU.kicad_sch                    Sensor subsystem
power.kicad_sch                  Input selection and rails
pad.kicad_sch                    External pads
libraries/                      Local symbols, footprints, custom models
docs/                           Hardware/connection guides and images
firmware/README.md               Firmware integration plan (no binary)
manufacturing/                  Gerbers, drills, BOM, placement, SVGs
verification/baseline/           Original CAD-check evidence
verification/final/              Rev B reports, views and source hashes
release/                        Fabrication and complete-project archives
social/linkedin/                Caption, four shareable images, alt text
tools/                          Verification, export and media-generation scripts
HARDWARE_RELEASE.md              Detailed corrections and bench acceptance

Engineering work captured in Rev B

The revision corrects the 3.3 V supply/LED path, USB-C CC resistor values and connectivity, the ADC divider, magnetometer supply/bypass/CRST connections, boot pull-down and crystal selection. It also completes routing, revises ground returns, refines fine-pitch mask geometry, packages local libraries and reorganizes silkscreen. Before/after details and primary sources.

Project images and LinkedIn caption

Download the LinkedIn image kit · Caption · Four-image preview · Upload order and alt text

The images use actual KiCad renders and distinguish CAD verification from pending hardware/firmware tests. Repository access depends on the current GitHub visibility setting.

Next milestones

  • Fabricate and inspect the first assembled board.
  • Characterize rails, oscillator, USB and peripheral interfaces.
  • Implement and test the board-specific firmware/driver layer.
  • Calibrate sensors and verify body axes/motor mapping.
  • Validate receiver loss, watchdog, reset and brownout behavior.
  • Record controlled motor and eventual flight-test results.

Hardware CAD is the current milestone. Every future test result should identify the exact PCB revision and firmware commit used.

Parts

103
QtyValueFootprintReferences
10QuadCopter:QC_R5R5
10.47uQuadCopter:QC_C29C29
11.5kQuadCopter:QC_R3R3
11.5kQuadCopter:QC_R4R4
1100nQuadCopter:QC_C6C6
1100nQuadCopter:QC_C1C1
1100nQuadCopter:QC_C11C11
1100nQuadCopter:QC_C14C14
1100nQuadCopter:QC_C19C19
1100nQuadCopter:QC_C8C8
1100nQuadCopter:QC_C15C15
1100nQuadCopter:QC_C16C16
1100nQuadCopter:QC_C18C18
1100nQuadCopter:QC_C21C21
1100nQuadCopter:QC_C9C9
1100nQuadCopter:QC_C17C17
1100nQuadCopter:QC_C5C5
1100nQuadCopter:QC_C10C10
110kQuadCopter:QC_R23R23
110kQuadCopter:QC_R25R25
110kQuadCopter:QC_R24R24
110kQuadCopter:QC_R1R1
110uQuadCopter:QC_C4C4
112402012E212AQuadCopter:QC_J1J1
11uQuadCopter:QC_C12C12
11uQuadCopter:QC_C22C22
11uQuadCopter:QC_C13C13
11uQuadCopter:QC_C23C23
12.2uQuadCopter:QC_C25C25
12.2uQuadCopter:QC_C24C24
12.2uQuadCopter:QC_C28C28
12.2uQuadCopter:QC_C26C26
12.2uQuadCopter:QC_C20C20
12.2uQuadCopter:QC_C27C27
122QuadCopter:QC_R12R12
122QuadCopter:QC_R7R7
122QuadCopter:QC_R9R9
122QuadCopter:QC_R8R8
122QuadCopter:QC_R19R19
122QuadCopter:QC_R11R11
122QuadCopter:QC_R13R13
122QuadCopter:QC_R20R20
122QuadCopter:QC_R6R6
122QuadCopter:QC_R10R10
122RQuadCopter:QC_R2R2
122uQuadCopter:QC_C30C30
124LC256QuadCopter:QC_U4U4
130pQuadCopter:QC_C2C2
130pQuadCopter:QC_C3C3
1330QuadCopter:QC_R22R22
1330QuadCopter:QC_R18R18
1330QuadCopter:QC_R21R21
14.7kQuadCopter:QC_R14R14
14.7kQuadCopter:QC_R15R15
14.7uQuadCopter:QC_C7C7
15.1kQuadCopter:QC_R16R16
15.1kQuadCopter:QC_R17R17
1500ASSP3M2QEQuadCopter:QC_SW3SW3
1BH18PB1WHFV-TRQuadCopter:QC_U7U7
1BMI270QuadCopter:QC_U2U2
1BMM350QuadCopter:QC_IC1IC1
1BMP390LQuadCopter:QC_U3U3
1ECS-80-18-23B-JGN-TRQuadCopter:QC_Y1Y1
1FerriteBeadQuadCopter:QC_FB1FB1
1LEDQuadCopter:QC_D1D1
1LED_errorQuadCopter:QC_D3D3
1LED_statusQuadCopter:QC_D4D4
1MountingHoleQuadCopter:QC_H4H4
1MountingHoleQuadCopter:QC_H1H1
1MountingHoleQuadCopter:QC_H2H2
1MountingHoleQuadCopter:QC_H3H3
1PMEG3020EJQuadCopter:QC_D2D2
1PTS810SJM250SMTR LFSQuadCopter:QC_SW2SW2
1PTS810SJM250SMTR LFSQuadCopter:QC_SW1SW1
1STM32F401CCU6QuadCopter:QC_U1U1
1TLV75733PDRVQuadCopter:QC_U5U5
1TestPointQuadCopter:QC_TP_m1_pwr2TP_m1_pwr2
1TestPointQuadCopter:QC_TP_m1_pwr3TP_m1_pwr3
1TestPointQuadCopter:QC_TP_M2TP_M2
1TestPointQuadCopter:QC_TP_m1_pwr7TP_m1_pwr7

The 80 most common of 103 parts.

Questions

How big is the QUADCOPTER PCB?

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

What parts does the QUADCOPTER use?

103 parts, built around the STM32F401CCU6, BMM350, BMP390L and 24LC256-I/P. 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 QUADCOPTER KiCad files?

From the Riskerx/QUADCOPTER repository on GitHub, at the commit this page was made from: the board is QuadCopter.kicad_pcb and its schematic IMU.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the QUADCOPTER design in my own project?

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

Similar boards

  • 4 layers31.8 × 130 mmSensify Main Board, the printed circuit board in 3D

    Sensify Main Board

    smvumbaco/Sensify-FA24

    Generate Hardware - Sensify Fall 2024

    146 parts
  • 4 layers50 × 65 mmFeroFlyF405, the printed circuit board in 3D

    FeroFlyF405

    Ozonised/FeroFlyF405

    FeroFlyF405 an open source STM32F405 based flight controller running INAV

    150 parts44CERN-OHL-P-2.0
  • 4 layers70 × 70 mmWindsensor, the printed circuit board in 3D

    Windsensor

    kristofkatzenberger/windsensor

    This repository contains the design files for a portable wind sensor developed in 2025/26 at the University of Applied Sciences Technikum Wien. This project was completed as part of the Bachelor's Thesis:

    128 partsMIT
  • 4 layers45 × 81 mmRAM R2, the printed circuit board in 3D

    RAM R2

    nimishcoder1232/Bedroom-Engineering-Propulsive-Landing-Project

    This repo has everything that I made for my rocket that can propulsive landing, while still being under ITAR restrictions.

    78 parts
  • 2 layers45.3 × 81 mmRAM R2, the printed circuit board in 3D

    RAM R2

    nimishcoder1232/TVC-Rocket

    This is the repo for my TVC rocket that took two years to develop.

    65 parts
  • 4 layers56.6 × 39 mmMultimodal Actuator mk2, the printed circuit board in 3D

    Multimodal Actuator mk2

    TheUnknownAlias/betr_kicad_resources

    This repository contains shared KiCad symbols and footprints for our projects.

    91 parts
  • 4 layers49.5 × 49 mmAERoS, the printed circuit board in 3D

    AERoS

    TKAman23/AERoS

    An All-Encompassing Rocket System (AERoS) currently in development

    119 partsAGPL-3.0
  • 4 layers64.5 × 0.1 mmPebble, the printed circuit board in 3D

    Pebble

    Yatekii/pebble

    167 parts