

ESP32 Flight Conroller
Custom ESP32 Flight Controller using BMI088 & BMP388 sensors. Hardware and firmware built from the ground up.
- Size
- 40.5 × 48.8 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 52
- Nets
- 63
- Pads
- 238
- Tracks, vias
- 504, 72
- Pours
- 3
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 1 Oct 2026
- Updated
- 12 Oct 2026
Overview
ESP32 Flight Conroller is an open-source printed circuit board by Maxandersen1, from the Maxandersen1/ESP32-S3-Flight_Controller repository on GitHub, published under the MIT licence. It is a 4-layer board of 40.5 × 48.8 mm with 52 parts on 63 nets, routed with 504 tracks and 72 vias.
It is built around the ESP32-S3-WROOM-1-N8, BMP388 and TPS54331DG4, with the AMS1117-3.3, BMI088 and USBLC6-2SC6 among its other parts. Its parts include 17 capacitors, 15 resistors, 6 ICs, 4 connectors and 3 diodes. It belongs with the robots and motor control and sensors and measurement boards and the ESP32 boards of this library.
Main components
6ESP32-S3-WROOM-1-N8
SMD,25.5x18mm-40℃~+85℃ -98.2dBm 2.4GHz 20.5dBm 355mA 3V~3.6V 95mA Bluetooth5.0 ESP32-S3 Chip On-board PCB Antenna UART、SPI、I2C、I2S、USB SMD,25.5x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesBMP388
LGA-10(2x2)-40℃~+85℃ 1.65V~3.6V 1pa/K 2uA 30Kpa~1.25bar 50pa 8pa I2C、SPI LGA-10(2x2) Pressure Sensors ROHSBosch SensortecPressure SensorsTPS54331DG4
SOIC-8-40℃~+150℃@(TJ) 1 110uA 3.5V~28V 3A 570kHz 800mV~25V Adjustable Buck Built-in No Overcurrent Protection、Light load efficient mode、Adjustable soft-start、Cycle-by-cycle current limiting、External compensation Step-down type SOIC-8 DC-DC Converters ROHSTexas InstrumentsDC-DC ConvertersAMS1117-3.3
SOT-223-40℃~+125℃ 0.003%Vout 1 1.1V@(800mA) 15V 1A 3.3V 5mA 72dB@(120Hz) Fixed Over Current Protection、Short Circuit Protection、Thermal shutdown Positive SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSAdvanced Monolithic SystemsVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsBMI088
LGA-16(3x4.5)-40℃~+85℃ Accelerometer Gyroscope LGA-16(3x4.5) Accelerometers ROHSBosch SensortecAccelerometersUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)
README
README.mdESP32-S3 Custom Flight Controller
A custom-designed drone flight controller built from the ground up around the ESP32-S3 microcontroller. This project is a work-in-progress, covering everything from custom PCB design in KiCad to low-level sensor drivers and Web Serial 3D visualization.
Hardware Features
- Microcontroller: ESP32-S3-WROOM-1 (Dual-Core Xtensa LX7, 240MHz)
- IMU: Bosch BMI088 (6-axis accelerometer & gyroscope) via SPI
- Barometer: Bosch BMP388 via I2C
- Power System: Onboard TPS54331 buck converter (battery Vin to 5V) & AMS1117-3.3 LDO
- PCB: Custom 4-layer PCB designed in KiCad, hand-soldered SMD components.
Assembled PCB

Hardware Design Process
1. Schematic
The schematic was designed in KiCad and ordered as a 4-layer PCB from JLCPCB.
2. PCB Layout & Stackup
The layout was routed in KiCad with the following dedicated 4-layer stackup:
- Layer 1 – Top Layer (F.Cu): Primary signal layer used for component placement (ESP32-S3, IMU, Barometer) and high-speed SPI/I2C trace routing.
- Layer 2 – Inner Layer 1 (In1.Cu): Dedicated internal Ground Plane (GND) providing low-impedance return paths and EMI shielding for sensitive sensors.
- Layer 3 – Inner Layer 2 (In2.Cu): Dedicated Power Plane with split power zones distributing clean 3.3V and 5V power across the board.
- Layer 4 – Bottom Layer (B.Cu): Secondary signal and ground layer used for remaining routing and bottom-side thermal dissipation.

Bill of Materials (BOM)
Integrated Circuits & Active Components
| Designator | Component / Part | Package | Qty | Function |
|---|---|---|---|---|
| U1 | ESP32-S3-WROOM-1 | SMD Module | 1 | Main Flight Controller MCU |
| U3 | Bosch BMI088 | LGA-16 | 1 | 6-Axis IMU (SPI) |
| U4 | Bosch BMP388 | LGA-10 | 1 | Barometric Pressure & Altitude Sensor (I2C) |
| U5 | TI TPS54331DG4 | SOIC-8 | 1 | Step-Down Buck Converter (Battery Vin to 5V) |
| U6 | AMS1117-3.3 | SOT-223 | 1 | Low-Dropout (LDO) Linear Voltage Regulator (3.3V) |
| U2 | USBLC6-2SC6 | SOT-23-6 | 1 | Low-Capacitance ESD Protection Array (USB) |
| D1, D2, D3 | SS14 / SS34 | SMA (DO-214AC) | 3 | Schottky Barrier Diodes |
| L1 | 15 µH (e.g. LVS606020) | SMD (~6x6 mm) | 1 | Power Inductor for Buck Converter |
Connectors & Switches
| Designator | Description | Qty | Function |
|---|---|---|---|
| J1 | USB-C 12-pin (TYPE-C-31-M-12) | 1 | USB Data / Programming & 5V Power |
| J3 | JST-SH 8-Pin SMD (SM08B-SRSS-TB) | 1 | 4-in-1 ESC Interconnect (PWM / DSHOT signals) |
| J2, J4 | 2.54mm Pitch Pin Headers | 2 | RC Receiver (UART) & Expansion / Debug pins |
| SW1, SW2 | SMD Tactile Push Buttons | 2 | Bootloader & Hardware Reset |
Passives Summary
- Capacitors:
100 nF (0603)— 8 pcs (Decoupling for MCU, sensors, and regulators)10 nF (0603)— 2 pcs (Noise filtering / compensation)3.3 nF (0603)— 1 pc (Buck converter compensation loop)4.7 µF (0603)— 1 pc (Bulk decoupling)10 µF (0805)— 1 pc (LDO input/output stabilization)22 µF (0805)— 4 pcs (High-capacitance power rail smoothing)
- Resistors (all 0603):
10 kΩ— 7 pcs (Pull-ups & boot mode configuration)4.7 kΩ— 2 pcs (I2C bus pull-ups for SDA / SCL)5.1 kΩ— 2 pcs (USB-C CC line pull-downs for 5V power negotiation)100 kΩ— 2 pcs (Voltage dividers & enable lines)30 kΩ— 1 pc (Feedback network)52.3 kΩ— 1 pc (High-precision feedback resistor for buck regulator)
Software / Firmware
The firmware is written in C++ (Arduino framework) and features:
- Raw SPI Communication: Bypasses bloated libraries to communicate directly with the BMI088 registers, resolving complex ESP32 HAL macro conflicts.
- Sensor Fusion: Implements a custom Complementary Filter combining high-speed gyro data with accelerometer gravity vectors for stable, drift-free Pitch and Roll calculation.
- Barometric Altimeter: Features an auto-zeroing routine on startup to establish local ground-level pressure before calculating relative altitude in meters.
3D Web Visualizer
Included in the tools/ directory is a custom HTML5/Three.js 3D drone visualizer.
It uses the modern Web Serial API to connect directly to the flight controller via USB (no servers required) and renders the drone's orientation in real-time at 60fps based on the live IMU telemetry.
Directory Structure
hardware/: KiCad schematics and PCB layout files.firmware/FlightController/: The main C++ Arduino sketch containing sensor drivers and mathematical filters.tools/: Contains3D_Viewer.html(Double-click to open in a modern browser).
Roadmap / To-Do
- PCB Design & Assembly
- I2C & SPI Bring-up
- Raw IMU & Barometer Data Extraction
- Sensor Fusion (Complementary Filter)
- Real-time 3D Visualization
- PID Controller Implementation
- ESC Motor Output (DSHOT/PWM)
- Radio Receiver Integration (ExpressLRS/Crossfire)
Hardware designed from scratch by Max. Firmware and 3D visualization developed using AI-assisted pair programming.
Parts
52| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C1, C4, C5, C6, C7, C10, C15, C16 |
| 7 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R3, R4, R9, R11, R13, R14, R15 |
| 4 | 22uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C8, C9, C13, C14 |
| 4 | MountingHole_Pad | MountingHole:MountingHole_3mm_Pad | H1, H2, H3, H4 |
| 3 | D_Schottky | Diode_SMD:D_SMA | D1, D2, D3 |
| 2 | 100k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R7, R12 |
| 2 | 10nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C2, C12 |
| 2 | 4.7k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R5, R6 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R2 |
| 1 | 10uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C3 |
| 1 | 15uH | Inductor_SMD:L_6.3x6.3_H3 | L1 |
| 1 | 3.3nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C11 |
| 1 | 30k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R10 |
| 1 | 4.7uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C17 |
| 1 | 52.3k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R8 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U6 |
| 1 | BMI088 | Package_LGA:Bosch_LGA-16_4.5x3mm_P0.5mm_LayoutBorder7x1y_ClockwisePinNumbering | U3 |
| 1 | BMP388 | BMP388:XDCR_BMP388 | U4 |
| 1 | Conn_02x08_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_Vertical | J4 |
| 1 | ESC_CONNECTOR | Connector_JST:JST_SH_SM08B-SRSS-TB_1x08-1MP_P1.00mm_Horizontal | J3 |
| 1 | ESP32-S3-WROOM-1 | RF_Module:ESP32-S3-WROOM-1U | U1 |
| 1 | EXPRESSELRS_CONNECTOR | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J2 |
| 1 | Knapp för boot | Button_Switch_SMD:SW_SPST_B3U-1000P | Boot1 |
| 1 | Reset123 | Button_Switch_SMD:SW_SPST_B3U-1000P | Reset1 |
| 1 | TPS54331DG4 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U5 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U2 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J1 |
Similar boards
- 2 layers59.5 × 40 mm

- 4 layers66 × 47 mm

- 4 layers76 × 51 mm

PCBv2Drona
GrozaMihaiRoland/Proiect-Drona-QuadCopter-Drona-Dumitru
Documentatia si rezumatul proiectului
75 parts - 4 layers40 × 66.6 mm

CanSat
SzymonLy/Quadcopter_2.1
Projekt PCB do autonomicznego quadcoptera, wersja finalna i sprawna
142 parts - 4 layers40 × 55 mm

CopterCat cm4
matveylapin/CopterCat_cm4
Полётный контроллер для стандарта FMU-v6u. Обычно на дронах для программирования устанавливают полётный контроллер, одноплатный компьютер и иногда arduino.
164 parts3Apache-2.0 - 4 layers45 × 98 mm

Ofc v3
rland93/ollyfc
A small rust-embedded flight computer. RTIC, FrSky protocols, and STM32F4 hardware.
151 parts3MPL-2.0 - 4 layers25 × 55 mm

- 4 layers27.4 × 65.2 mm

DevBoard
OmkarKnkr/Atlas-S3-DevBoard
Atlas S3 DevBoard is a custom ESP32-S3 development board designed from the ground up with an emphasis on compactness, usability, and clean PCB design practices.
52 parts3
Questions
How big is the ESP32 Flight Conroller PCB?
It measures 40.5 × 48.8 mm and has 4 copper layers, 1.6 mm thick.
What parts does the ESP32 Flight Conroller use?
52 parts, built around the ESP32-S3-WROOM-1-N8, BMP388, TPS54331DG4 and AMS1117-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.
Where can I download the ESP32 Flight Conroller KiCad files?
From the Maxandersen1/ESP32-S3-Flight_Controller repository on GitHub, at the commit this page was made from: the board is hardware/ESP32_Flight_Conroller.kicad_pcb and its schematic hardware/ESP32_Flight_Conroller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the ESP32 Flight Conroller design in my own project?
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).