Skip to the content
4 layers70 × 65 mmESP32 FC, the printed circuit board in 3D

This is the current editable KiCad 10 project for a 70 x 65 mm, four-layer controller, with an ESP32-S3-WROOM-1-N8R8, BMI088 SPI IMU, BMP280 barometer and a separate 4-in-1 ESC.

Size
70 × 65 mm
Copper layers
4
Thickness
1.6 mm
Parts
107
Nets
90
Pads
372
Tracks, vias
1,470, 194
Pours
8
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
16 Oct 2026
Updated
16 Oct 2026

Overview

ESP32 FC is an open-source printed circuit board by JS2028EE, from the JS2028EE/ESP32_FC repository on GitHub. It is a 4-layer board of 70 × 65 mm with 107 parts on 90 nets, routed with 1,470 tracks and 194 vias.

It is built around the ESP32-S3-WROOM-1-N8R8, SN74LVC125APWR-TP and BMP280, with the BMI088, TLV75533PDBVR-MS and USBLC6-2SC6 among its other parts. Its parts include 46 resistors, 27 capacitors, 10 connectors, 8 ICs and 4 diodes. It belongs with the ESP32 boards of this library.

Main components

12

README

hardware/revB/README.md

ESP32-S3 flight-controller bench prototype - Rev B

This is the current editable KiCad 10 project for a 70 x 65 mm, four-layer controller, with an ESP32-S3-WROOM-1-N8R8, BMI088 SPI IMU, BMP280 barometer and a separate 4-in-1 ESC. The FC supply accepts a 3S-6S LiPo (9-25.2 V). Motor current stays on the ESC.

Order status: prepared for a small bare-board prototype run to Order_Instructions.md. This is an unbuilt design, not validated flight hardware. KiCad checks and the source/PCB audit pass. The manufacturer still must accept the uploaded fabrication data and requested stackup through its normal DFM process. Physical regulator, USB, sensor and flight validation cannot be completed in software. No flight firmware is included.

Use the Rev B ZIP and Gerbers. The earlier Rev A packages are superseded for this build.

Open the design

Extract the entire project ZIP. Open ESP32_FC.kicad_pro, then ESP32_FC.kicad_sch or ESP32_FC.kicad_pcb. Keep all five schematic files and FC_Prototype.pretty together. In PCB Editor, Alt+3 opens the native 3D Viewer using installed KiCad 10 model libraries. A separate STEP assembly is not bundled. Some bodies are absent in the preview, including the USB connector and the new fuse; model availability does not affect the fabrication data. PCB_Preview.png is a partial 3D illustration, not an exact assembly envelope check.

What changed

  • Added Q3 and R46: USB VBUS now drives an isolated MOSFET gate. GPIO16 is pulled to the MCU's own 3.3 V rail and reads LOW when USB VBUS is present. USB cannot feed the MCU rail through the previous VBUS sense divider. USB remains data-only; battery power is required.
  • Added C27, a real 47uF/50V Panasonic radial electrolytic for input damping. C6/C7 are sourced 2.2uF/100V ceramic bypass capacitors, replacing the unsourced 47uF/50V ceramic requirement.
  • Selected Littelfuse 0476001.MR, 1 A, with a documented 10 kA interrupt rating at 86 VDC. Its 2410 lands follow the manufacturer drawing; do not fit the old 1206 fuse. This protects the FC branch, not the motor circuit.
  • Selected DMN2056U-7 MOSFETs, with on-resistance specified at low gate voltage, for output gating, buzzer and USB detection.
  • Changed R21 to 150k. Battery ADC is VIN_PROT/16; 25.2 V at the protected input gives 1.575 V. Calibrate the diode drop and ADC gain in firmware.
  • Shortened regulator bootstrap, bypass and feedback routes; connected C8 directly to U3 VIN/PGND. Recorded a JLC04161H-3313 four-layer stackup.
  • Rerouted USB D+/D- from ESD protection to the series resistors on the front layer over the uninterrupted ground plane, removing four vias. Those two sections measure 12.960 and 12.945 mm. USB is full speed, 12 Mbps; this is not 480 Mbps USB high speed. Impedance is not a measured/certified result.
  • Completed the BOM with selected component numbers, provided a grouped shopping list and a coordinate-based connector map. Stock/price and authorized distributor availability should be checked when buying; substitutions require matching the actual package and electrical characteristics.
  • Applied 1.0 mm text height and 0.15 mm text stroke to printed references. 88 references fit on silkscreen; others remain on the assembly layer. Use Assembly_Top.pdf for placement.

Processor pin assignment

FunctionESP32-S3 GPIONotes
Battery ADC1ADC1; senses protected input after D1
ESC current ADC2ADC1; 2:1 divider, 0-5 V analog input only
Motor 1 / 2 / 3 / 44 / 5 / 6 / 15Through U8 and 33-ohm series resistors
Gyro / accel data-ready7 / 8BMI088 INT3 / INT1
Gyro / accel CS9 / 10Active low; external 10k pull-ups
IMU MOSI / SCK / MISO11 / 12 / 13Separate from the flash/PSRAM interface
USB VBUS sense16Active-low, isolated by Q3
Receiver TX / RX17 / 18Flight-controller perspective; remapped UART1
USB D- / D+19 / 2022-ohm series termination and USBLC6 protection
Arm output21HIGH enables motor buffers; LOW disables
I2C SDA / SCL38 / 394.7k pull-ups to sensor rail
Status LED40HIGH turns LED on
Auxiliary GPIO41Exposed on J9
Active buzzer42Drives Q2; external 5 V active buzzer <=30 mA
Debug TX / RX43 / 44UART0; includes boot messages
GPS TX / RX47 / 48Remapped UART2
Boot / voltage straps0 / 45 / 46Boot pull-up, GPIO45/46 pull-downs

GPIO3 and GPIO14 are unused. GPIO35/36/37 are reserved. Critical sensor buffers and control code should use internal SRAM; do not depend on PSRAM access latency for the real-time loop. A reasonable initial firmware target is a 1 kHz gyro-triggered loop, subject to measured worst-case latency. Hardware peripherals should generate motor timing. Radio operation, flash writes, USB, and navigation tasks must be qualified for scheduling interference.

Connectors and ESC

Connector_Pin_Map.csv gives every numbered header pad and its location as viewed from the component side, with the antenna at the top. It is the definitive pad-to-net map. J5 uses 2.54 mm headers, not the 1 mm connector fitted to commercial ESCs. A custom harness is required.

ConnectorPins in numeric order
J2battery+, GND; FC branch supply only
J3GND, sensor 3.3V, SDA, SCL
J4ARM_GATE, GND; short to force outputs disabled
J5GND, battery+, motor1, motor2, motor3, motor4, analog current, telemetry breakout
J6GND, 5V, FC RX, FC TX; receiver
J7GND, 5V, FC RX, FC TX; GPS
J8GND, digital 3.3V, FC RX0, FC TX0; debug
J9GND, digital 3.3V, GPIO41, telemetry breakout
J105V, buzzer low-side drain

J2 and J5 battery pins are the same node. Use only one FC battery feed. Receiver/GPS supply is 5 V but all MCU serial logic is 3.3 V. Do not connect independently powered serial devices or a 5 V UART adapter without checking powered-off and logic-voltage compatibility. J5 analog current accepts 0-5 V and divides it by two. Telemetry is only a passive breakout to J9, not a configured MCU UART.

The reference ESC is Holybro Tekko32 F4 4in1 50A AM32, SKU31102; see ESC_Wiring.md. It supports 4S-6S, so use a 4S pack for that reference combination. The FC itself retains its 3S-6S input range; using 3S requires an ESC explicitly rated for 3S. This recommendation does not establish motor/propeller compatibility; motor current requirements must be matched separately.

Power and firmware limits

The 5 V regulator is rated 1 A; it supplies all downstream rails and peripherals. Initial allocations: digital 3.3 V <=0.70 A, sensor 3.3 V <=0.05 A, external 5 V <=0.25 A including buzzer. They correspond to about 0.84 A from 5 V at 85% digital-buck efficiency. These are design allocations, not measured continuous ratings. Begin bench tests with smaller loads and verify temperature and transients before approaching them. No VTX/air-unit supply is provided. External active buzzer <=30 mA.

The N8R8 module is specified by Espressif for ambient temperatures up to 65 C, which is lower than the 85 C rating of several passive parts. No board temperature operating range is qualified. Avoid inductors heating the sensors/module. Use the barometer without blocking its pressure port.

Q1 and U8 disable motor outputs during MCU reset. J4 is a physical disable strap. A frozen MCU that leaves ARM asserted is not stopped by independent watchdog hardware: firmware must configure watchdog reset, receiver timeout, arming checks, brownout handling and motor timing. Start with unidirectional DShot300 for ESC bring-up; bidirectional DShot is unsupported through U8. No stock Betaflight/PX4/ArduPilot binary is assumed to work on this custom ESP32 board.

Before applying power

Follow Assembly_and_Bringup.md. Solder paste and hot-air/reflow are required for the LGA sensors and exposed-pad regulator. Observe component moisture/reflow limits. All components mount on the front; C27 and headers are soldered after reflow. The 6.3 mm diameter C27 body is 11.2 mm tall. Inspect soldering and check resistance to ground before using a current-limited bench supply. Fit the kill strap; leave ESC, motors, receiver and GPS disconnected initially.

References

See Sources.md for manufacturer documents used for this revision, Order_Instructions.md for fabrication settings and Validation.md for the actual checks and their limits.

Parts

107
QtyValueFootprintReferences
1310kResistor_SMD:R_0603_1608MetricR1, R2, R3, R4, R9, R17, R18, R22, R23, R24, R33, R45, R46
11100nCapacitor_SMD:C_0603_1608MetricC2, C4, C10, C14, C19, C20, C22, C23, C24, C25, C26
833RResistor_SMD:R_0603_1608MetricR13, R14, R15, R16, R25, R26, R27, R28
71kResistor_SMD:R_0603_1608MetricR34, R36, R37, R39, R41, R42, R43
422uCapacitor_SMD:C_0805_2012MetricC1, C13, C15, C16
447kResistor_SMD:R_0603_1608MetricR29, R30, R31, R32
4MountingHole_3.2mm_M3MountingHole_3.2mm_M3H1, H2, H3, H4
3100kResistor_SMD:R_0603_1608MetricR10, R35, R44
3DMN2056UPackage_TO_SOT_SMD:SOT-23Q1, Q2, Q3
2100RResistor_SMD:R_0603_1608MetricR38, R40
21uCapacitor_SMD:C_0603_1608MetricC3, C17
22.2u / 100VCapacitor_SMD:C_1210_3225MetricC6, C7
222RResistor_SMD:R_0603_1608MetricR5, R6
222u / 25VCapacitor_SMD:C_1210_3225MetricC11, C12
24.7kResistor_SMD:R_0603_1608MetricR19, R20
24.7uCapacitor_SMD:C_0603_1608MetricC18, C21
25.1kResistor_SMD:R_0603_1608MetricR7, R8
110nCapacitor_SMD:C_0603_1608MetricC5
1150kResistor_SMD:R_0603_1608MetricR21
11A / 476FC_Prototype:Fuse_Littelfuse_476F1
11N4148WDiode_SMD:D_SOD-123D4
11u / 16VCapacitor_SMD:C_0603_1608MetricC9
120kResistor_SMD:R_0603_1608MetricR12
1220n / 100VCapacitor_SMD:C_0805_2012MetricC8
122uHInductor_SMD:L_Bourns_SRP6060FAL1
14-IN-1 ESCConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ5
14.7uHInductor_SMD:L_Bourns_SRP5030TL2
147u / 50VCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC27
180.6kResistor_SMD:R_0603_1608MetricR11
1ACTIVE BUZZERConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ10
1AP63203WU-7Package_TO_SOT_SMD:TSOT-23-6U4
1AUX GPIO / TELEMETRYConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ9
1BATTERY 3S-6SConnector_Wire:SolderWire-1sqmm_1x02_P5.4mm_D1.4mm_OD2.7mmJ2
1BMI088Package_LGA:Bosch_LGA-16_4.5x3mm_P0.5mm_LayoutBorder7x1y_ClockwisePinNumberingU6
1BMP280FC_Prototype:BMP280_SilkClearU7
1BOOTButton_Switch_SMD:SW_SPST_TL3342SW2
1CRSF RECEIVERConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ6
1DEBUG UART0Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ8
1ESP32-S3-WROOM-1-N8R8FC_Prototype:ESP32_S3_WROOM_EdgeU1
1GPS UARTConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ7
1GREENLED_SMD:LED_0603_1608MetricD3
1I2C / 3.3V ONLYConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ3
1KILL STRAPConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ4
1LMR36510ADDARPackage_SO:Texas_HTSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.95x4.9mm_Mask2.4x3.1mm_ThermalViasU3
1RESETButton_Switch_SMD:SW_SPST_TL3342SW1
1SMBJ28ADiode_SMD:D_SMBD2
1SN74LVC125APWRPackage_SO:TSSOP-14_4.4x5mm_P0.65mmU8
1SS310 / 100V 3ADiode_SMD:D_SMAD1
1TLV75533PDBVRPackage_TO_SOT_SMD:SOT-23-5U5
1USB-C / USB2 FSFC_Prototype:USB_C_HRO_EdgeJ1
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U2

Similar boards

  • 4 layers104 × 64 mmFYDP, the printed circuit board in 3D

    FYDP

    mingzejin11/FYDP

    4B capstone project repository containing PCB design files

    259 parts
  • 4 layers60 × 44 mmElevator, the printed circuit board in 3D

    Elevator

    Bruhdows/klink

    Klink is a magnetic tile system for building programmable machines. First up: a marble run with sensors, buttons, lights, gates, splitters and an elevator.

    51 parts
  • 2 layers100 × 100 mmCTRL, the printed circuit board in 3D

    CTRL

    DD1SB/ARDF-TX

    Date: 2026-10-15. Engineering review only; unbuilt and unenergized. Open RF80.kicadpro, schematic and native PCB in KiCad10.0.6. Three primary PCBs and the separate VHF true-AM design are unchanged.

    256 partsMIT
  • 2 layers70 × 64 mmWindpcb, the printed circuit board in 3D

    Windpcb

    lindestad/wind-controller

    LINDESTAD simracing wind controller: ESP32-C3 Zephyr firmware, KiCad PCB and SimHub integration

    82 parts
  • 4 layers118 × 250 mmPcb lab, the printed circuit board in 3D

    Pcb lab

    y-watal/pcb_lab

    285 parts
  • 2 layers42 × 54 mmClick counter Q5, the printed circuit board in 3D

    Click counter Q5

    dudgeon/count-fidget

    A lightweight, rechargeable two-key fidget that counts clicks, resets with a second key, and remembers its count while asleep or unpowered. Designed for a home-printed enclosure and professionally assembled electronics.

    96 parts
  • 4 layers100 × 100 mmPCB V1, the printed circuit board in 3D

    PCB V1

    nikolajevs/ai

    Открыть PCBV1.kicadpro в KiCad 10. После обновления репозитория перечитать открытый проект с диска перед сохранением.

    170 parts
  • 4 layers66 × 100 mmPixy M2, the printed circuit board in 3D

    Pixy M2

    Galm007/KiCad-Pixy-M2

    Schematic For Our Micromouse Robot "Pixy M2"

    79 partsMIT

Questions

How big is the ESP32 FC PCB?

It measures 70 × 65 mm and has 4 copper layers, 1.6 mm thick.

What parts does the ESP32 FC use?

107 parts, built around the ESP32-S3-WROOM-1-N8R8, SN74LVC125APWR-TP, BMP280 and BMI088. 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 FC KiCad files?

From the JS2028EE/ESP32_FC repository on GitHub, at the commit this page was made from: the board is hardware/revB/ESP32_FC.kicad_pcb and its schematic hardware/revB/Auxiliary.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the ESP32 FC design in my own project?

Its repository states no licence, so its author keeps all rights: ask JS2028EE before reusing the design.