Flight Controller Design


The board is not manufacturing-ready yet: there are 29 unrouted connections, generic passives without MPNs, and the routing precheck flags blocked fine-pitch/USB pins. I’m clearing stale routing, re-placing with explicit ESP32 antenna/USB/sensor constraints, then I’ll reroute.
Routing precheck is now clean after correcting the USB/VBUS routing rules and USB pair classification. I’m starting full-board routing now.
I made substantial progress, but I’m blocked from finishing because there are no available ACUs, so I can’t continue executing fixes right now.
What I accomplished:
  • Resized the PCB to a compact 50 × 50 mm, 4-layer board.
  • Re-placed all 34 components for a compact manufacturable layout:
    • ESP32 at board edge with antenna facing outward.
    • USB-C, ESD, charger, battery connector, LDO, IMU, flash, buttons, and LEDs grouped logically.
  • Cleared stale routing and fixed the USB/VBUS routing precheck blockers.
  • Ran full-board auto-routing successfully.
Remaining blockers before the PCB is manufacturing-ready:
  • 35 invalid-layer Smart Via errors from the autorouter.
  • 1 dangling trace warning.
  • 22 generic passives missing manufacturer part numbers.
  • Final DRC/manufacturing validation still needs to be re-run after those fixes.
Suggested next steps once ACUs are available:
  1. Fix/delete or regenerate the invalid Smart Vias.
  2. Delete the dangling trace.
  3. Assign real MPNs to the generic resistors/capacitors.
  4. Re-run DRC/ERC and manufacturing checks.
  5. Export Gerbers, BOM, and pick-and-place only after checks are clean.
Fix routing errors
Complete BOM MPNs
Run final checks
Export manufacturing files

Board Bring-Up Plan — ESP32 Pickleball Tracker
Prerequisites
  • Current-limited bench supply or USB current meter.
  • Multimeter and oscilloscope if available.
  • USB-C cable connected to a computer or 5 V current-limited source.
  • PlatformIO/esptool for ESP32-C3 firmware loading.
  • Protected single-cell LiPo battery for J2.
1. Visual Inspection
  • Inspect USB-C J1, ESP32-C3 U1, LSM6DSO32 U2, W25Q16 U3, MCP73831 U4, TLV75533 U5, and all fine-pitch solder joints.
  • Confirm LED polarities for D1 and D2.
  • Confirm battery connector J2 polarity before inserting a cell.
  • Confirm no copper/components intrude into the ESP32 module antenna keepout after layout.
2. Power Rail Verification

Table


RailSourceExpected VoltageMeasure AtCurrent LimitPass Criteria
VBUSUSB-C J15.0 VJ1 VBUS / C1 P1100 mA first power4.75–5.25 V
VBATMCP73831 U4 / LiPo J23.0–4.2 VJ2 P1 / U5 VIN100 mA first powerfollows battery/charger voltage
3V3TLV75533 U53.3 VU5 VOUT / C4 P1150 mA first power3.20–3.40 V no-load/light-load
Procedure:
  1. With no battery and no USB, measure resistance from VBUS, VBAT, and 3V3 to GND.
  2. Apply USB power with current limit around 100 mA; verify VBUS.
  3. Insert protected LiPo or simulate VBAT carefully; verify VBAT polarity and voltage.
  4. Verify 3V3 before firmware flashing.
  5. If current limit trips, stop and inspect shorts before retrying.
3. Critical Signal Verification

Table


SignalExpected StateMeasure AtNotes
ESP_ENHigh after power-upU1 EN / R3 / C9SW1 pulls low for reset
ESP_BOOT_GPIO9High normallyU1 IO9 / R4SW2 pulls low for bootloader
ESP_GPIO2_BOOTHigh normallyU1 IO2 / R5Required boot-source strap
ESP_GPIO8_BOOTHigh normallyU1 IO8 / R6Avoid invalid GPIO8/GPIO9 low-low boot state
I2C_SDA/SCLIdle highR8/R9 and U2 pins4.7 kΩ pull-ups to 3V3
FLASH_CSIdle highU3 CS / R1010 kΩ pull-up
4. Connector and Interface Tests

Table


ConnectorTypePins to VerifyTest Method
J1USB-CVBUS, GND, CC1, CC2, DP, DNContinuity and USB enumeration
J2LiPoP1 VBAT, P2 GNDPolarity/voltage check before battery insertion
SW1ResetESP_EN to GNDPress button and verify EN low
SW2BootGPIO9 to GNDPress button and verify GPIO9 low
5. Programming and Debug Interface
  • Interface: ESP32-C3 native USB Serial/JTAG on GPIO18/GPIO19 via J1.
  • Tool: PlatformIO or esptool.py.
  • Bootloader entry: hold SW2 BOOT, tap SW1 RESET, release BOOT.
  • Pass criteria: ESP32-C3 enumerates over USB and accepts firmware upload.
6. Functional Validation

Table


TestComponentsExpected Output
USB enumerationJ1, D3, U1ESP32-C3 serial/JTAG device appears
Status LEDU1, R11, D1LED toggles under firmware control
Charge LEDU4, R12, D2LED indicates charging state when battery/USB present
I2C scanU1, U2, R8, R9LSM6DSO32 responds at expected address 0x6A
IMU readU2Raw accel/gyro values change with movement
SPI flash IDU3JEDEC ID read succeeds
Wi-Fi telemetryU1Device connects and sends sample payloads
7. Expected Measurements Reference

Table


MeasurementLocationExpected ValueInstrument
USB VBUSC1 P15 VDMM
Battery railJ2 P13.0–4.2 VDMM
3V3 railC4 P13.3 VDMM/scope
EN idleU1 EN3.3 VDMM/scope
I2C idleR8/R9 signal side3.3 VDMM/scope
USB D+/D-J1/D3/U1USB activity during enumerationScope optional
Pass/Fail Summary

Table


SectionResultNotes
Visual Inspection[ ] Pass / [ ] Fail
Power Rails[ ] Pass / [ ] Fail
Critical Signals[ ] Pass / [ ] Fail
Programming[ ] Pass / [ ] Fail
Functional Validation[ ] Pass / [ ] Fail
Board status: [ ] Ready for test / [ ] Requires rework
  • Prerequisites

  • 1. Visual Inspection

  • 2. Power Rail Verification

  • 3. Critical Signal Verification

  • 4. Connector and Interface Tests

  • 5. Programming and Debug Interface

  • 6. Functional Validation

  • 7. Expected Measurements Reference

  • Pass/Fail Summary