STM32 FLIGHT CONTROLLER

Flight Controller PCB - Front View Flight Controller PCB -  Back View

About The Project

I wanted to build a custom flight controller from the ground up to deepen my understanding of PCB design, embedded systems, and sensor integration for UAV applications. My goal was to create a professional grade board that goes beyond tutorials, demonstrating real engineering practices and industry relevant design skills.


The board is based on the STM32F446RE microcontroller (ARM Cortex-M4), chosen for its high performance in real-time applications. It integrates the ICM 42670P IMU for motion sensing and the BMP390 barometric sensor for altitude measurement. To support UAV control, the design includes ESC connectors, UART, SPI, CAN bus interfaces, and SWD debugging. The result is a complete embedded platform capable of powering and controlling drones or other robotics projects.


Designed and routed the multi-layer PCB in KiCad with emphasis on signal integrity, power distribution, and decoupling. Optimized oscillator and sensor routing for stability. Validated hardware in STM32CubeIDE through firmware configuration and peripheral testing

STM32 MCU

High-performance 32-bit ARM Cortex-M processor with dedicated floating point unit for real time flight calculations and sensor fusion.

IMU Integration

6-axis inertial measurement unit with accelerometer and gyroscope for precise attitude determination and flight stabilization.

Power Management

Multi-rail power distribution with voltage regulation, battery monitoring, and power-on sequencing for reliable operation.

Communication

Multiple communication interfaces including USB, UART, SPI, and I2C for telemetry, configuration, and peripheral expansion.

Technical Specifications

Microcontroller: STM32F4 Series 32-bit ARM Cortex-M4
IMU: 6 Axis Accelerometer + Gyroscope
Power Supply: 5V-24V input with multiple regulated outputs
Interfaces: USB, UART, SPI, I2C, PWM outputs
PCB: 4-layer design, 50mm x 50mm form factor
Operating Temp: -40°C to +85°C industrial grade
View on GitHub