Skip to the content
PCBKitNew board
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

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

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