
AeroHawk FC
sbbxiii/The-Eagle
The Eagle: Custom STM32F405 4-Layer Autonomous Avionics Flight Controller PCB

A learning project: build a quadcopter from scratch — own hardware, own firmware, no existing flight stack.
Drone fc is an open-source printed circuit board by neilpate, from the neilpate/Drone repository on GitHub, published under the Apache-2.0 licence. It is a 4-layer board of 30 × 40.8 mm with 37 parts on 75 nets, routed with 228 tracks and 28 vias.
It is built around the MDBT53-P1M, LMR50410XDBVR-MS and ICM-42688-P, with the TLV75533PDBVR-MS, RC0402FR-0710KL and C0402C103K5RECAUTO among its other parts. Its parts include 10 capacitors, 9 resistors, 4 ICs, 2 diodes and 2 connectors. It belongs with the robots and motor control boards of this library.
A learning project: build a quadcopter from scratch — own hardware, own firmware, no existing flight stack.
The drone is the artefact; understanding the whole stack end-to-end is the deliverable.
no_std, embassy-nrf) on the firmware; Rust on the PC-side ground-station application too.See doc/00-vision.md for the full vision and the phased milestone plan.
Phase 2 (advanced prototyping) in progress. The whole stack runs on hardware. The drone has made first free flights — brief untethered, self-levelling hops on its own battery under closed-loop control — with telemetry over a two-hop radio link and PID gains tuned live from the ground station and now persisted to flash (ADR 0025): tune, save, power-cycle, and the gains survive.
groundstation app sends four-axis pilot commands (sliders or a gamepad) over USB-CDC to a remote micro:bit, which relays to the drone over IEEE 802.15.4 (ADR 0014). Telemetry returns the same path as a high/low-rate split frame (ADR 0027), postcard + COBS framed, every buffer sized at compile time from the shared types.firmware-drone-core.The ground station plots and logs every signal live, times the round trip, pushes and saves PID gains, shows a live 3D view of the drone's attitude, and pairs with an offline analyze tool that turns a telemetry log into a legible flight report.

Recent tuning work — validating the integral term as a centre-of-mass trim corrector, balancing the airframe by the per-motor effort split, and re-zeroing out a one-directional drift — is consolidated into a new control-troubleshooting field guide (doc/06-control-troubleshooting.md).
Next (to finish Phase 2): rebuild on the lighter next-generation frame — the previous flight frame was retired in a lost-control crash — with the IMU mounted near the centre of mass (which should cut the estimator lag at its source) and a fresh, softer re-tune; plus a firmware power-limit mode and the netted test enclosure (doc/07-safety.md). In parallel, Phase 4 is well underway — the custom nRF5340 flight controller (drone_fc v2, ADR 0026, ADR 0028) is fully routed with turnkey PCBA fab exports out to PCBWay; the micro:bit stays the tuning platform meanwhile.


See doc/progress.md for the dated milestone history, doc/dev-environment.md for the toolchain, and doc/decisions/ for the full decision history.
AGENTS.md — shared context file for AI coding assistants (Copilot, Claude, etc.). Read first.crates/ — Cargo workspace. firmware-drone-microbit (on-target binary), firmware-drone-shared (board-agnostic tasks/signals), firmware-drone-core (host-testable logic).doc/ — design notes, vision, architecture, hardware/software/control docs.doc/02-architecture.md — system architecture overview (two micro:bits, RF link, ground-station evolution).doc/decisions/ — Architecture Decision Records (ADRs).hardware/ — mechanical (Fusion 360) and electrical (KiCad).Host-testable logic (wire types, the supervisor state machine, the ground-station helpers) is unit-tested and run with cargo-nextest:
cargo nextest run # workspace host crates
cargo nextest run --manifest-path crates/groundstation/Cargo.toml # the GUI crateA tracked pre-push git hook runs the suite before every push, and GitHub Actions runs fmt + clippy + tests on every push and pull request (the badge above). On-target firmware is exercised on hardware, not in CI. See doc/ci-and-testing.md for the details and the one-time hook setup.
proto crate for the wire protocol..f3d source + .stl mesh (STEP dropped, amended 2026-07-09).core/task split, HIL deferred.crates/, doc/, hardware/{mechanical,electrical}/, all lowercase.firmware-<role> naming; core/task split realised as sibling crates.board module inside firmware-drone, Cargo-feature-selected, tasks take erased types.main stays rustfmt-clean and clippy-clean; suppressions require justification.Channel / Watch / Signal / PubSubChannel.no_std crates: cfg_attr(not(test), no_std), inline mod tests, cargo test honours default-members.PercentageValue base.firmware-drone-core, supervisor is the sole publisher of motor commands.TelemetryState, tick-sampling per-source Watches at 100 Hz and owning frame-level fields.firmware-drone-core (Proposed).Dual-licensed under either of:
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this work, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 10k | Resistor_SMD:R_0402_1005Metric | R5, R6, R7, R8, R9 |
| 4 | 100nF | Capacitor_SMD:C_0402_1005Metric | C4, C7, C8, C9 |
| 4 | M2 soft mount | MountingHole_3.0mm | H1, H2, H3, H4 |
| 2 | 1k | Resistor_SMD:R_0402_1005Metric | R3, R4 |
| 2 | 1uF | Capacitor_SMD:C_0402_1005Metric | C2, C3 |
| 1 | +3V3 | TestPoint:TestPoint_Pad_D1.0mm | TP4 |
| 1 | +4V | TestPoint:TestPoint_Pad_D1.0mm | TP3 |
| 1 | 10nF | Capacitor_SMD:C_0402_1005Metric | C10 |
| 1 | 10uF | Capacitor_SMD:C_1206_3216Metric | C1 |
| 1 | 15uH | Inductor_SMD:L_0805_2012Metric | L1 |
| 1 | 22.1K | Resistor_SMD:R_0402_1005Metric | R2 |
| 1 | 22uF | Capacitor_SMD:C_0805_2012Metric | C5 |
| 1 | 4.7uF | Capacitor_SMD:C_0603_1608Metric | C6 |
| 1 | 66.5K | Resistor_SMD:R_0402_1005Metric | R1 |
| 1 | Blue_Radio | LED_SMD:LED_0402_1005Metric | D2 |
| 1 | Cortex_SWD_10P | Connector:Tag-Connect_TC2050-IDC-NL_2x05_P1.27mm_Vertical | J1 |
| 1 | ESC_4IN1_JST_SH | Connector_JST:JST_SH_SM08B-SRSS-TB_1x08-1MP_P1.00mm_Horizontal | J2 |
| 1 | GND | TestPoint:TestPoint_Pad_D1.0mm | TP1 |
| 1 | Green_Status | LED_SMD:LED_0402_1005Metric | D1 |
| 1 | ICM-42688-P | drone_fc_v2_footprints:LGA-14_2.5x3.0mm_P0.5mm_ICM42688P | U4 |
| 1 | LMR50410_Buck | Package_TO_SOT_SMD:SOT-23-6 | U2 |
| 1 | MDBT53-P1M | drone_fc_v2_footprints:MDBT53-P1M | U3 |
| 1 | SMAJ24A | Diode_SMD:D_SMA | TVS1 |
| 1 | TLV75533PDBVR | Package_TO_SOT_SMD:SOT-23-5 | U1 |
| 1 | VBAT | TestPoint:TestPoint_Pad_D1.0mm | TP2 |
It measures 30 × 40.8 mm and has 4 copper layers, 1.6 mm thick.
37 parts, built around the MDBT53-P1M, LMR50410XDBVR-MS, ICM-42688-P and TLV75533PDBVR-MS. 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 neilpate/Drone repository on GitHub, at the commit this page was made from: the board is hardware/electrical/v2/drone_fc.kicad_pcb and its schematic hardware/electrical/v1/drone_fc.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the Apache-2.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).

sbbxiii/The-Eagle
The Eagle: Custom STM32F405 4-Layer Autonomous Avionics Flight Controller PCB

afewyards/HydroMix
A mains-powered, Zigbee-connected controller for a hydronic 3-way mixing valve — it regulates the supply-water temperature of a floor heating/cooling system and keeps regulating autonomously if the Zigbee link goes down.




mathieupommery/MINIREX_G473
The following table demonstrates the estimated component costs based on Mouser volume pricing. The unit price of each component dynamically adapts to the total quantity required for the entire production batch (1, 100…


nguyencanhanh/luckfox-rv1103-drone
AI quadcopter on one RV1103 (Luckfox Pico Mini B): Linux + RISC-V MCU flight loop, SITL with 3D pilot view, KiCad flight-controller board