Skip to the content
2 layers79.8 × 79.8 mmBefore, the printed circuit board in 3D

An ESP32-WROOM-32 based flight controller designed for 1S brushed quadcopters.

Size
79.8 × 79.8 mm
Copper layers
2
Thickness
0.8 mm
Parts
76
Nets
73
Pads
279
Tracks, vias
1,253, 163
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
14 Sep 2026
Updated
15 Sep 2026

Overview

Before is an open-source printed circuit board by PNT2110, from the PNT2110/FC_ESP32 repository on GitHub. It is a 2-layer board of 79.8 × 79.8 mm with 76 parts on 73 nets, routed with 1,253 tracks and 163 vias.

It is built around the CH340C, TPS61070DDCR and MPU-6500, with the USBLC6-2SC6, SS16 and AO3400 among its other parts. Its parts include 23 resistors, 20 capacitors, 9 connectors, 6 ICs and 6 diodes. It belongs with the ESP32 boards of this library.

Main components

8

README

README.md

FC_ESP32 Flight Controller

An ESP32-WROOM-32 based flight controller designed for 1S brushed quadcopters.

Features

  • MCU: ESP32-WROOM-32 (8MB Flash)
  • IMU: MPU-6500 (SPI interface)
  • Motor Drivers: 4x AO3400 MOSFETs for brushed motors
  • Optical Flow: UART interface for MTF-01P sensor (JST SH1.0 4-pin)
  • Power: 1S LiPo input, TPS63001 Buck-Boost for 3.3V, TPS61070 Boost for 5V (USB/Optical flow)
  • USB: USB-C connector with CH340C USB-to-UART bridge
  • Expansion: I2C and UART1 breakout headers (2.54mm pitch)
  • Battery Monitor: Built-in voltage divider for telemetry

Hardware Setup & Pinout

  • Motors: J4, J5, J6, J7 pads (AO3400 driven)
  • Optical Flow (J2): pin 1 GND, pin 2 +5V_FLOW, pin 3 ESP32 TX (GPIO17 → sensor RX), pin 4 ESP32 RX (GPIO16 ← sensor TX). Verify the actual sensor cable orientation.
  • I2C Expansion (J8): VCC, GND, SDA (GPIO4), SCL (GPIO22)
  • UART1 Expansion (J9): VCC, GND, TX (GPIO14), RX (GPIO32)
  • Programming: CH340C DTR/RTS auto-download circuit; no physical Boot/Reset buttons are present in the generated BOM.

Current status

The subsequent datasheet review found B.Cu tracks inside the ESP32 antenna region, power-layout concerns and incomplete flight features despite clean ERC/DRC. See BAO_CAO_KIEM_TRA_MACH.md and validation/datasheet_audit/LOG_KIEM_TRA.md. The independent antenna check fails; do not interpret the routing checks below as proof that the design is ready to operate or manufacture.

PCB routing and final ERC/DRC/parity checks passed on 2026-09-14 (KiCad 10.0.6): zero violations and zero unconnected items. Motor solder pads moved 1.5 mm inward; J2 faces outward. See validation/FINAL_REVIEW.md and validation/final_3d.png. Not released for manufacturing or flight. Motor pitch is 66.8 mm, prop diameter 40 mm, board thickness 0.8 mm. Components are on the front; copper routing uses both layers. Firmware motor actuation is disabled by default; see firmware/README.md.

Reproducible hardware workflow

Use system Python with KiCad 10 pcbnew, sexpdata and Shapely installed. The generator replaces the working PCB and therefore discards its routing. Back up a routed board before regenerating.

sh
/usr/bin/python3 tools/build_fc.py
/usr/bin/python3 tools/prepare_route.py
# Route the new FC_ESP32/FC_ESP32.dsn with Freerouting and save FC_ESP32.ses.
/usr/bin/python3 tools/import_route.py
/usr/bin/python3 tools/finish_copper.py
python3 tools/validate_fc.py

build_fc.py now includes clearance-preserving placement and updates the BOM and design coordinates. Session import validates placement before replacing copper. The legacy critical_routes.py and repair_connections.py contain assumptions from the older layout and are not part of this workflow.

On the current machine, prefix system-Python commands with PYTHONPATH=/home/pnt/miniconda3/lib/python3.14/site-packages. This path is environment-specific. Generation was verified in an isolated copy; all 72 component placements, orientations, values, footprints and nets matched.

The current SES predates the final repairs: do not import it onto the final PCB. validation/final_routed.kicad_pcb preserves the reviewed routing. tools/repair_c3_ground.py documents the deterministic final copper repair from validation/only_c3_ground_remaining.kicad_pcb to its candidate output.

Open FC_ESP32/FC_ESP32.kicad_pro for review. Validation records current ERC, DRC, netlist parity and source hashes in FC_ESP32/validation_summary.json and returns nonzero on errors. Reports do not replace current/thermal analysis or bench testing. gerbers/ contains stale outputs, not an approved release.

Parts

76
QtyValueFootprintReferences
7100nFFC_Local:C_0402_1005MetricC2, C4, C5, C7, C9, C15, C18
6SS16FC_Local:SS16D1, D2, D3, D4, D5, D6
5100RFC_Local:R_0402_1005MetricR11, R15, R17, R19, R21
510kFC_Local:R_0402_1005MetricR1, R2, R6, R9, R10
4H1, H2, H3, H4
4100kFC_Local:R_0402_1005MetricR16, R18, R20, R22
4100nF 10VFC_Local:C_0603_1608MetricC21, C22, C23, C24
4AO3400FC_Local:AO3400Q1, Q2, Q3, Q4
2100k 1%FC_Local:R_0402_1005MetricR3, R4
210uF 10V X5RFC_Local:C_0805_2012MetricC12, C13
222uF 10V X5RFC_Local:C_0805_2012MetricC1, C17
24.7kFC_Local:R_0402_1005MetricR23, R24
25.1k 1%FC_Local:R_0402_1005MetricR7, R8
2MMBT3904FC_Local:MMBT3904Q5, Q6
11.8M 1%FC_Local:R_0402_1005MetricR12
110RFC_Local:R_0402_1005MetricR5
110nFFC_Local:C_0402_1005MetricC6
11uFFC_Local:C_0402_1005MetricC8
11uFFC_Local:C_0603_1608MetricC3
11uF 10VFC_Local:C_0603_1608MetricC11
12.2uH VLF4012-2R2M1R5FC_Local:L_VLF4012L1
1200k 1%FC_Local:R_0402_1005MetricR13
14.7uH >=1A shieldedFC_Local:L_4x4L2
147uF 10V X5RFC_Local:C_1206_3216MetricC19
1BAT 1SFC_Local:Battery_Wire_PadsJ3
1CH340CFC_Local:CH340CU3
1ESP32-WROOM-32 (8MB)FC_Local:ESP32U1
1I2CFC_Local:Header_1x04_P2.54mmJ8
1M1 + / -FC_Local:Motor_Wire_PadsJ4
1M2 + / -FC_Local:Motor_Wire_PadsJ5
1M3 + / -FC_Local:Motor_Wire_PadsJ6
1M4 + / -FC_Local:Motor_Wire_PadsJ7
1MPU-6500FC_Local:MPU6500U2
1MTF-01P SH1.0FC_Local:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_HorizontalJ2
1TPS61070DDCRFC_Local:SOT-23-6U6
1TPS63001DRCRFC_Local:Texas_DRC0010JU5
1UART1FC_Local:Header_1x04_P2.54mmJ9
1USB4105-GF-AFC_Local:USB_CJ1
1USBLC6-2SC6FC_Local:SOT-23-6U4

Similar boards

  • 4 layers2.1 × 59.4 mmPN7160 STM32, the printed circuit board in 3D

    PN7160 STM32

    Jack-Cb/sensOrbPorted

    Repository for undergraduate thesis code, documentation, and PCB design. Thesis link: https://ir.library.oregonstate.edu/concern/honors_college_theses/b5645158b?locale=en

    87 parts
  • 2 layers120 × 90 mmPLC STM32 Modbus, the printed circuit board in 3D

    PLC STM32 Modbus

    danhmanu/PLC-STM32F407VET6

    Mạch nguyên lý KiCad 10 cho bộ PLC: điều khiển qua LAN bằng Modbus TCP (module W5500 Lite), nạp code qua USB‑C (CH340C), 16 ngõ ra transistor cách ly quang, 10 ngõ vào analog 4–20mA.

    264 parts
  • 2 layers100 × 100 mmHour meter board microfit can handroute, the printed circuit board in 3D

    Hour meter board microfit can handroute

    ilomon10/embedded-totalizer-hour-meter

    ESP32 engine hour meter & totalizer: firmware, SensorFrame protocol, Node host tools, KiCad PCB and a Deno device simulator

    152 parts
  • 4 layers28 × 55 mmESP32 Custom DevBoard, the printed circuit board in 3D

    ESP32 Custom DevBoard

    nakul-biovaco/ESP32-Custom-PCB

    Production-Grade 4-Layer ESP32-WROOM-32E Custom Development Board with Synchronous Buck Converter & Type-C (KiCad 8/10, JLCPCB PCBA Ready)

    52 parts1MIT
  • 4 layers70 × 100 mmFlightcontroller, the printed circuit board in 3D

    Flightcontroller

    ukinori/flightcontroller

    STM32H743 VTOL/fixed-wing flight-controller hardware in KiCad 10: routed 4-layer PCB, schematics, BOM notes, connector pinouts and verification reports. Experimental prototype; PX4 port planned.

    132 parts
  • 2 layers36 × 58 mmUps adaptor, the printed circuit board in 3D

    Ups adaptor

    aronreid/ups-to-esp32

    Put a USB-only UPS on the network: an ESP32-S3 board and firmware that serves NUT on TCP 3493, with a web UI. No host computer, no Raspberry Pi.

    38 parts130GPL-3.0
  • 2 layers106.3 × 21.7 mmNanoleaf shapes, the printed circuit board in 3D

    Nanoleaf shapes

    Cptmeme/Nanoleaf-Shapes-controller

    Bus-powered half-duplex interface board between a 3.3 V MCU and the Nanoleaf Shapes panel bus

    63 parts3GPL-3.0
  • 2 layers45 × 100 mmWalkiepcb, the printed circuit board in 3D

    Walkiepcb

    houseofthe051010/ESP32-Walkie-Talkie-V2

    This ESP32 Walkie Talkie is redesigned with a SX1262 radio, a PCB, and a full case redesign.

    93 parts1

Questions

How big is the Before PCB?

It measures 79.8 × 79.8 mm and has 2 copper layers, 0.8 mm thick.

What parts does the Before use?

76 parts, built around the CH340C, TPS61070DDCR, MPU-6500 and USBLC6-2SC6. 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 Before KiCad files?

From the PNT2110/FC_ESP32 repository on GitHub, at the commit this page was made from: the board is validation/antenna_fix/before.kicad_pcb and its schematic FC_ESP32/FC_ESP32.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Before design in my own project?

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