





Flight Controller
I designed and prototyped several iterations of a custom flight controller PCB for UAV applications, featuring an STM32F103 microcontroller as the core processor. The board was built from scratch in KiCAD, including schematic drafting, PCB routing, and bill of materials (BOM) preparation. This project was a step beyond integration-focused UAV builds, focusing instead on system-level hardware design and the electronics that power flight stacks.
System Overview:
The controller was designed to serve as the computational and sensing hub of a quadcopter. The STM32F103 MCU handled real-time control loops, sensor fusion, and communication with peripherals. The board integrated key sensors and communication modules:
MPU6050 (6-DOF IMU: accelerometer + gyroscope) for inertial navigation.
Magnetometer for yaw and heading stabilization.
NRF24L01 Radio module for wireless communication and telemetry.
Expansion headers for additional sensors and companion computer connectivity.
Key Features & Technical Implementation:
MCU & Interfaces:
STM32F103 Cortex-M3 microcontroller.
Designed routings for SPI, I²C, and USART buses to support modular sensor and communication integration.
Later iterations added CAN bus support for robust, distributed communication between UAV subsystems.
PCB Design in KiCAD:
Created complete schematics of all subsystems (power regulation, MCU, sensors, radio, external I/O).
Routed multilayer PCB ensuring signal integrity and isolation between high-noise motor control signals and sensitive IMU/magnetometer traces.
Paid attention to ground planes, decoupling capacitors, and trace impedance to maintain reliable performance.
Power Management:
Designed onboard voltage regulators to step down LiPo input to 5V and 3.3V rails for MCU and sensors.
Protection circuits for reverse polarity and overcurrent.
Bill of Materials (BOM):
Selected components based on availability, cost-effectiveness, and ease of sourcing.
Considered package types for ease of hand-soldering and prototyping.
Challenges & Lessons Learned:
Understood the importance of system-level design in embedded hardware, balancing sensor placement, communication buses, and power delivery.
Learned the significance of component selection not just from a technical standpoint, but also from a supply chain/logistics perspective (e.g., sourcing STM32 chips vs. Arduino-compatible MCUs).
Gained experience in PCB design best practices: minimizing trace lengths for high-frequency signals, grounding strategies for IMUs, and reserving test pads for debugging.
Participated in design reviews, learning how to critique and iterate on schematic/PCB layouts before fabrication.
Why This Project Matters:
This was my first step into hardware design for UAV avionics, moving beyond ready-made flight controllers to a custom-designed board. It taught me how flight-critical systems are architected at the circuit and PCB level, and gave me a much deeper appreciation of the electronics that underpin UAV autonomy.
I Wish I Could:
Fabricate and test the PCB with a minimal flight stack implementation (e.g., running a basic PID stabilization loop).
Add sensor redundancy (dual IMUs, barometer) for reliability in flight.
Incorporate SD card logging and USB bootloader for easier debugging and data analysis.
Evolve toward a modular, CAN-enabled flight controller for scalable UAV designs.
Explore integration with PX4/Ardupilot firmware ports on custom STM32-based boards.
© 2025. All rights reserved.
All company logos, images, and trademarks are the property of their respective owners. Images sourced from public press releases are used here for informational and educational purposes only, with proper attribution. All other images, including photographs and project visuals, are original and owned by the site author. The inclusion of company images does not imply endorsement, sponsorship, or affiliation.