PCB Connectivity Audit and Fix


  1. U5 3V3 regulatorU5 = AP2112K-3.3TRG1, Diodes Inc. AP2112 3.3 V LDO, pins: VIN → VBAT_SW, VOUT → 3V3, EN → VBAT_SW, GND → GND; caps: C4 4.7 µF VIN-GND, C5 4.7 µF VOUT-GND, plus C3 10 µF bulk on 3V3 — VERDICT: PROBLEM. Datasheet: AP2112 is 600 mA min output, VIN 2.5–6.0 V, dropout typ/max: 125/200 mV at 300 mA and 250/400 mV at 600 mA. It can supply ESP32-C3 peak current by current rating, but cannot guarantee 3.3 V regulation from a LiPo at 3.3–3.4 V during 350–500 mA RF bursts; it needs roughly 3.3 V + dropout, i.e. about 3.5–3.7 V worst-case depending current. This is the highest-risk design issue.
  2. U2 chargerU2 = TP4056, PROG pin → R4 2.4 kΩ → GND, VCC → VBUS, BAT → BATT_PLUS, TEMP → VBUS, CE → VBUS, EP/GND → GNDVERDICT: CORRECT with caveat. Datasheet: RPROG = 1100 / IBAT; 2.4 kΩ sets about 458 mA. That is ~0.9 C for 500 mAh, within the user’s requested 250–500 mA range but near the upper end. Caveat: TP4056 datasheet says disabling temperature sensing normally ties TEMP to GND; this schematic ties TEMP to VBUS, which is also within the “not too hot/not too cold” voltage window but is not the datasheet’s stated no-NTC connection.
  3. Battery protection U3 + Q1U3 = DW01A; VDD → DW_VDD via R12 from BATT_PLUS, VSS → BATT_MINUS, OD → Q1 G1, OC → Q1 G2, CSI → R13 → GND; Q1 = FS8205A, S1 → BATT_MINUS, S2 → GND, common drains Q1 pins 2/5 → PROTECT_FET_COMMON_DRAINVERDICT: CORRECT. Datasheet: DW01A typical single-cell protection uses VDD through resistor/cap to cell positive, VSS to cell negative, OD/OC to the back-to-back MOSFET gates, and CSI sensing pack negative/load negative through a resistor. FS8205A is a dual N-MOSFET intended for battery protection.
  4. 3V3 / ESP32 decouplingC3 10 µF bulk on 3V3, C1 100 nF ESP32 3V3 decoupling, C5 4.7 µF LDO output cap, C4 4.7 µF LDO input cap — VERDICT: CORRECT. Datasheet: ESP32-C3-MINI-1 typical peripheral schematic shows 10 µF + 0.1 µF on VDD33; AP2112 requires at least 1 µF input/output caps and is stable with ceramic caps.
  5. ENU1 EN → EN net; R1 10 kΩ from EN → 3V3; C2 1 µF from EN → GNDVERDICT: CORRECT. Datasheet: ESP32-C3-MINI-1 says EN must not float and recommends RC delay, usually R = 10 kΩ, C = 1 µF.
  6. ESP32-C3 strappingGPIO9/U1 IO9 → GPIO9_BUTTON → SW2 pin1 + C12 pin1; SW2 pin2 + C12 pin2 → GND; no external pull-up resistor found on GPIO9; GPIO2/U1 IO2 has no external pull-up found; GPIO8/U1 IO8 has no external pull-up found — VERDICT: PROBLEM. Datasheet: ESP32-C3 boot mode uses GPIO2, GPIO8, GPIO9; SPI boot requires GPIO2=1, GPIO9=1; Joint download boot requires GPIO2=1, GPIO8=1, GPIO9=0. Datasheet says GPIO9 has an internal weak pull-up, and GPIO2 is recommended pulled up due to glitches. For robust production, add external pull-ups for at least GPIO9 and GPIO2, and ensure GPIO8 is high when requesting USB-Serial-JTAG download. Nothing in the schematic forces UART0 boot instead of USB-Serial-JTAG, but the lack of explicit strap pull-ups is a production risk.
  7. SW2 BOOT buttonSW2 = TS-1088-AR02016, footprint/package SW-SMD_L3.9-W3.0-P4.45, schematic pins only 1 and 2; pin1 → GPIO9_BUTTON, pin2 → GND; C12 100 nF across same two nodes — VERDICT: CORRECT in schematic, but hardware symptom suggests footprint/pad mapping must be physically probed. Datasheet/library source identifies it as a normally-open SPST switch where terminal 1 connects to terminal 2 when pressed. If your fabricated board does not pull GPIO9 low, the most likely causes are footprint pad numbering mismatch, unsoldered/misaligned side-actuated switch, or wrong substituted switch orientation—not the schematic netlist.
  8. USB D+/D-USB_DP net: J1 DP1/DP2 + D1 I/O1 pins 1/6 + U1 IO19; USB_DN net: J1 DN1/DN2 + D1 I/O2 pins 3/4 + U1 IO18; D1 = USBLC6-2SC6, VBUS → VBUS, GND → GNDVERDICT: CORRECT. Datasheet: ESP32-C3-MINI-1 maps GPIO18 = USB_D-, GPIO19 = USB_D+; USBLC6-2SC6 is a 2-line low-capacitance USB 2.0 ESD protector, 3.5 pF max, intended for USB data lines and should not block native USB.
  9. MPU-6050 I2CU4 SDA → I2C_SDA → U1 IO4 + R6 4.7 kΩ to 3V3; U4 SCL → I2C_SCL → U1 IO3 + R5 4.7 kΩ to 3V3VERDICT: CORRECT. Datasheet: MPU-6050 SDA/SCL are open-drain bidirectional I2C lines and need pull-ups to the logic rail; max I2C speed 400 kHz.
  10. MPU-6050 support pinsU4 CPOUT → C10 2.2 nF → GND; U4 REGOUT → C11 100 nF → GND; U4 VLOGIC → 3V3 + C9 10 nF → GND; U4 VDD → 3V3 + C8 100 nF → GND; U4 AD0 → GND; also CLKIN, FSYNC, and pin 25 tied to GND — VERDICT: CORRECT. Datasheet: typical circuit uses CPOUT 2.2 nF, REGOUT 0.1 µF, VDD 0.1 µF, VLOGIC 10 nF; AD0 low selects I2C address 0x68.
  11. LEDs — green: U1 IO6 → GREEN_LED_GPIO → R7 330 Ω → GREEN_LED_A → LED1 anode, LED1 cathode → GND; blue: U1 IO7 → BLUE_LED_GPIO → R8 330 Ω → BLUE_LED_A → LED2 +, LED2 - → GNDVERDICT: CORRECT. At 3.3 V, 330 Ω limits current to a few mA depending LED Vf, comfortably below ESP32 GPIO limits.
  12. Motor driverU1 IO5 → MOTOR_GPIO → R9 1 kΩ → MOTOR_GATE → Q2 gate; R10 100 kΩ gate pulldown to GND; Q2 = AO3400A, source → GND, drain → MOTOR_MINUS; J3 P1 → VBAT_SW, J3 P2 → MOTOR_MINUS; D2 = B5819W, K → VBAT_SW, A → MOTOR_MINUSVERDICT: CORRECT. Datasheet: AO3400A is a logic-level N-MOSFET with RDS(on) specified at VGS 2.5 V and 4.5 V; B5819W is a 40 V, 1 A Schottky suitable as a flyback diode for a small vibration motor. Motor is powered from VBAT_SW, not 3V3.
  13. Tip connector J4J4 = B3B-PH-SM4-TB(LF)(SN); pin1 → VBAT_SW; pin2 → GND; pin3 → TIP_DATA; U1 IO10 → TIP_DATA_GPIO → R11 330 Ω → TIP_DATA → J4 pin3VERDICT: CORRECT with strap caveat. GPIO10 is not double-used elsewhere in the schematic. It is free for the tip data signal, but note it is near the ESP32-C3 strap cluster; avoid external circuitry on J4 that can back-power or clamp the pin during boot.
  14. USB-C CC1/CC2J1 CC1 → CC1 → R2 5.1 kΩ → GND; J1 CC2 → CC2 → R3 5.1 kΩ → GNDVERDICT: CORRECT. USB-C UFP/device mode requires Rd pull-downs, nominally 5.1 kΩ, on both CC pins.
Final findings
  • Pin double-booking: none found on the functional GPIOs checked. GPIO3/4 are I2C, GPIO5 motor, GPIO6/7 LEDs, GPIO9 boot button, GPIO10 tip data, GPIO18/19 USB.
  • Schematic-connected but unrouted in layout: none reported by the layout connectivity checks; no airwire/dangling-trace issues were returned.
  • Wrong / risky values or topology:
    1. Major: AP2112 LDO will not guarantee 3.3 V regulation from a low LiPo at ESP32 RF burst current. Use a buck-boost or lower-voltage system threshold, or specify operation only above ~3.6–3.7 V under load.
    2. Production robustness: ESP32-C3 strapping lacks explicit pull-ups on GPIO2 and GPIO9, and download mode depends on GPIO8 being high. Add external strap resistors for 100-unit reliability.
    3. Hardware debug: SW2 schematic is correct, but your real-board symptom strongly suggests a footprint/pad/solder/substitution issue; probe SW2 pads directly for continuity while pressed and compare against pad numbers.
Fix power issues
Choose regulator
Add strap resistors
Debug boot button
Create production checklist

D1
U3
U5
C5
Capacitance
4.7uF
R13
Resistance
1kΩ
C8
Capacitance
100nF
R11
Resistance
330Ω
C12
Capacitance
100nF
R7
Resistance
330Ω
C10
Capacitance
2.2nF
R6
Resistance
4.7kΩ
C4
Capacitance
4.7uF
C1
Capacitance
100nF
R8
Resistance
330Ω
C9
Capacitance
10nF
C11
Capacitance
100nF
R12
Resistance
100Ω
R5
Resistance
4.7kΩ
C6
Capacitance
10uF
R10
Resistance
100kΩ
R9
Resistance
1kΩ
R2
Resistance
5.1kΩ
R1
Resistance
10kΩ
C2
Capacitance
1uF
C3
Capacitance
10uF
R3
Resistance
5.1kΩ
C7
Capacitance
10uF
C13
Capacitance
100nF
R4
Resistance
2.4kΩ
SW2
F1
Q1
J3
D3
D2
J2
Q2
LED2
U4
SW1
J1
J4
U1
Not Recommended for New Designs
U2
LED1
Board Bring-Up Plan — Harry Potter Wand Mainboard
Prerequisites
  • Equipment: multimeter, current-limited USB supply, oscilloscope if available, USB-C cable, 1S LiPo or bench supply set to 3.7–4.2 V, PlatformIO host.
  • Firmware: use the Firmware Starter project file.
  • Safety: current-limit first power-up. Do not connect a LiPo backwards. USB VBUS is fused at F1 and feeds TP4056 plus the system rail through D3.
1. Visual Inspection
  • Confirm U1 ESP32-C3-MINI-1 antenna area is at the board edge and copper keepout is present.
  • Check U2 TP4056, U3 DW01A, Q1 FS8205A, U4 MPU-6050, U5 LP3987, D2/D3 diode polarity, USB-C J1, JST-PH connectors J2/J3/J4, SW1, SW2, LED1/LED2.
  • Inspect for bridges on USB-C, MPU QFN, ESP32 module pads, and FS8205A pins.
2. Power Rail Verification

Table


RailSourceExpectedMeasure AtCurrent LimitPass Criteria
VBUS_RAWJ1 USB-C5.0 VJ1 VBUS / F1 P1500 mA4.75–5.25 V
VBUSF1 output5.0 V minus fuse dropF1 P2 / U2 VCC500 mA>4.6 V under light load
BATT_PLUSJ2 LiPo / U2 BAT3.0–4.2 VJ2 pin 1 / U2 BAT1 Acorrect LiPo voltage
VBAT_SWSW1 / D3 power pathbattery or USB-diode-fed railU5 VIN1 A>3.4 V for full 3V3 regulation
3V3U5 LP3987 output3.3 VU5 OUT / C3600 mA max3.23–3.37 V
Procedure:
  1. With no battery and no USB, check resistance from 3V3 and VBAT_SW to GND; investigate any near-short.
  2. Apply USB with current limit 300–500 mA. Verify VBUS_RAW, VBUS, VBAT_SW, and 3V3.
  3. Connect a current-limited 1S source to J2. Toggle SW1 and verify VBAT_SW follows the switch.
  4. Confirm TP4056 BAT voltage rises toward 4.2 V when charging a low cell.
3. Critical Signal Verification

Table


SignalNetExpected StateMeasure AtNotes
ESP32 ENENHIGH ~3.3 V after RC delayU1 EN10k pull-up + 1uF
ButtonGPIO9_BUTTONHIGH idle, LOW pressedU1 IO9 / SW2download strap
USB D+/D-USB_DP / USB_DNUSB activity during flashingJ1/D1/U1controlled routing needed
I2CI2C_SCL/SDA3.3 V idle, 400 kHz trafficU4 pins 23/244.7k pull-ups
Motor gateMOTOR_GATELOW idle, PWM activeQ2 gate100k pulldown
4. Connector Tests

Table


ConnectorFunctionPinsTest
J1USB-C charge/flashVBUS, GND, D+, D-, CC1, CC2verify 5.1k CC pulldowns and USB enumeration
J2LiPo batterypin1 BATT_PLUS, pin2 BATT_MINUSverify polarity before battery insertion
J3Vibration motorpin1 VBAT_SW, pin2 MOTOR_MINUScommand PWM and verify motor runs
J4Tip LEDpin1 VBAT_SW, pin2 GND, pin3 TIP_DATAverify SK6812 data and power
5. Programming
  • Interface: ESP32-C3 native USB on GPIO18/GPIO19 through J1.
  • Tool: PlatformIO / esptool via USB CDC or boot ROM.
  • Bootloader entry: hold SW2 (GPIO9 LOW) while plugging USB if auto-reset is unavailable.
6. Functional Validation

Table


TestExpected Result
USB flashingfirmware uploads successfully over J1
Green LEDLED1 turns on in setup
Blue LED / buttonLED2 turns on while SW2 is pressed
MPU-6050serial reports device found at 0x68 and changing accel/gyro values
MotorJ3 motor runs when firmware commands PWM
Tip LEDexternal SK6812 on J4 lights correctly
Charging/protectionTP4056 charges cell; DW01A/FS8205A disconnects on fault conditions in controlled test only
Pass/Fail Summary

Table


SectionResultNotes
Visual Inspection[ ] Pass / [ ] Fail
Power Rails[ ] Pass / [ ] Fail
USB Programming[ ] Pass / [ ] Fail
IMU[ ] Pass / [ ] Fail
User I/O[ ] Pass / [ ] Fail
Motor / Tip LED[ ] Pass / [ ] Fail
Board status: [ ] Ready for enclosure integration / [ ] Requires rework
  • Prerequisites

  • 1. Visual Inspection

  • 2. Power Rail Verification

  • 3. Critical Signal Verification

  • 4. Connector Tests

  • 5. Programming

  • 6. Functional Validation

  • Pass/Fail Summary