Skip to the content
4 layers40.5 × 48.8 mmESP32 Flight Conroller, the printed circuit board in 3D

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

6

README

README.md

ESP32-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

Mitt kretskort

Hardware Design Process

1. Schematic

The schematic was designed in KiCad and ordered as a 4-layer PCB from JLCPCB. KiCad Schematic

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.

KiCad layout

Bill of Materials (BOM)

Integrated Circuits & Active Components

DesignatorComponent / PartPackageQtyFunction
U1ESP32-S3-WROOM-1SMD Module1Main Flight Controller MCU
U3Bosch BMI088LGA-1616-Axis IMU (SPI)
U4Bosch BMP388LGA-101Barometric Pressure & Altitude Sensor (I2C)
U5TI TPS54331DG4SOIC-81Step-Down Buck Converter (Battery Vin to 5V)
U6AMS1117-3.3SOT-2231Low-Dropout (LDO) Linear Voltage Regulator (3.3V)
U2USBLC6-2SC6SOT-23-61Low-Capacitance ESD Protection Array (USB)
D1, D2, D3SS14 / SS34SMA (DO-214AC)3Schottky Barrier Diodes
L115 µH (e.g. LVS606020)SMD (~6x6 mm)1Power Inductor for Buck Converter

Connectors & Switches

DesignatorDescriptionQtyFunction
J1USB-C 12-pin (TYPE-C-31-M-12)1USB Data / Programming & 5V Power
J3JST-SH 8-Pin SMD (SM08B-SRSS-TB)14-in-1 ESC Interconnect (PWM / DSHOT signals)
J2, J42.54mm Pitch Pin Headers2RC Receiver (UART) & Expansion / Debug pins
SW1, SW2SMD Tactile Push Buttons2Bootloader & 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/: Contains 3D_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
QtyValueFootprintReferences
8100nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C4, C5, C6, C7, C10, C15, C16
710kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3, R4, R9, R11, R13, R14, R15
422uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC8, C9, C13, C14
4MountingHole_PadMountingHole:MountingHole_3mm_PadH1, H2, H3, H4
3D_SchottkyDiode_SMD:D_SMAD1, D2, D3
2100kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR7, R12
210nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC2, C12
24.7kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR5, R6
25.1kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2
110uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3
115uHInductor_SMD:L_6.3x6.3_H3L1
13.3nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC11
130kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR10
14.7uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC17
152.3kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR8
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U6
1BMI088Package_LGA:Bosch_LGA-16_4.5x3mm_P0.5mm_LayoutBorder7x1y_ClockwisePinNumberingU3
1BMP388BMP388:XDCR_BMP388U4
1Conn_02x08_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_VerticalJ4
1ESC_CONNECTORConnector_JST:JST_SH_SM08B-SRSS-TB_1x08-1MP_P1.00mm_HorizontalJ3
1ESP32-S3-WROOM-1RF_Module:ESP32-S3-WROOM-1UU1
1EXPRESSELRS_CONNECTORConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1Knapp för bootButton_Switch_SMD:SW_SPST_B3U-1000PBoot1
1Reset123Button_Switch_SMD:SW_SPST_B3U-1000PReset1
1TPS54331DG4Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU5
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U2
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1

Similar boards

  • 2 layers59.5 × 40 mmMonitor, the printed circuit board in 3D

    Monitor

    Dynix7/Environment-Monitor

    49 parts1MIT
  • 4 layers66 × 47 mmRoyal Penguin, the printed circuit board in 3D

    Royal Penguin

    Aerokitties/Kitties-Hardware

    171 parts
  • 4 layers76 × 51 mmPCBv2Drona, the printed circuit board in 3D

    PCBv2Drona

    GrozaMihaiRoland/Proiect-Drona-QuadCopter-Drona-Dumitru

    Documentatia si rezumatul proiectului

    75 parts
  • 4 layers40 × 66.6 mmCanSat, the printed circuit board in 3D

    CanSat

    SzymonLy/Quadcopter_2.1

    Projekt PCB do autonomicznego quadcoptera, wersja finalna i sprawna

    142 parts
  • 4 layers40 × 55 mmCopterCat cm4, the printed circuit board in 3D

    CopterCat cm4

    matveylapin/CopterCat_cm4

    Полётный контроллер для стандарта FMU-v6u. Обычно на дронах для программирования устанавливают полётный контроллер, одноплатный компьютер и иногда arduino.

    164 parts3Apache-2.0
  • 4 layers45 × 98 mmOfc v3, the printed circuit board in 3D

    Ofc v3

    rland93/ollyfc

    A small rust-embedded flight computer. RTIC, FrSky protocols, and STM32F4 hardware.

    151 parts3MPL-2.0
  • 4 layers25 × 55 mmLyrav3, the printed circuit board in 3D

    Lyrav3

    prs2026/Lyra-flight-computer

    repo for the lyra flight computer

    76 parts3GPL-3.0
  • 4 layers27.4 × 65.2 mmDevBoard, the printed circuit board in 3D

    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).