

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