PCB Connectivity Audit and Fix
U5 = 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.U2 = TP4056, PROG pin → R4 2.4 kΩ → GND, VCC → VBUS, BAT → BATT_PLUS, TEMP → VBUS, CE → VBUS, EP/GND → GND — VERDICT: 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.U3 = 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_DRAIN — VERDICT: 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.C3 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.U1 EN → EN net; R1 10 kΩ from EN → 3V3; C2 1 µF from EN → GND — VERDICT: CORRECT. Datasheet: ESP32-C3-MINI-1 says EN must not float and recommends RC delay, usually R = 10 kΩ, C = 1 µF.GPIO9/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.SW2 = 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.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 → GND — VERDICT: 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.U4 SDA → I2C_SDA → U1 IO4 + R6 4.7 kΩ to 3V3; U4 SCL → I2C_SCL → U1 IO3 + R5 4.7 kΩ to 3V3 — VERDICT: 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.U4 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.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 - → GND — VERDICT: CORRECT. At 3.3 V, 330 Ω limits current to a few mA depending LED Vf, comfortably below ESP32 GPIO limits.U1 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_MINUS — VERDICT: 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.J4 = B3B-PH-SM4-TB(LF)(SN); pin1 → VBAT_SW; pin2 → GND; pin3 → TIP_DATA; U1 IO10 → TIP_DATA_GPIO → R11 330 Ω → TIP_DATA → J4 pin3 — VERDICT: 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.J1 CC1 → CC1 → R2 5.1 kΩ → GND; J1 CC2 → CC2 → R3 5.1 kΩ → GND — VERDICT: CORRECT. USB-C UFP/device mode requires Rd pull-downs, nominally 5.1 kΩ, on both CC pins.GPIO3/4 are I2C, GPIO5 motor, GPIO6/7 LEDs, GPIO9 boot button, GPIO10 tip data, GPIO18/19 USB.GPIO2 and GPIO9, and download mode depends on GPIO8 being high. Add external strap resistors for 100-unit reliability.