ESP32 Flex Sensor Board Design

Work done
  • Removed duplicate legacy schematic blocks and kept a single production path built around IC2, U5, J9, U6, U3, and U7
  • Removed alternate/duplicate parts U1, U2, J1, IC1, J2, U4, U8, J7, J8, SW1, SW2, J4, J5, and J6
  • Normalized USB net names to USB_DP and USB_DN, retained the 3-pin haptic connector scheme on J11 and J12, and added explicit no-connect markers for intentionally unused pins on IC2, U5, U7, U3, and J9
  • Verified key power and interface rails: VBUS -> U5 -> VSYS -> U3 -> 3V3, battery rail VBAT to J10, USB native data from J9 through U6 to IC2, and boot/reset pull networks on SW3, SW4, R17, and R8
  • Set the layout to 160 mm x 100 mm, 4-layer, with inner layer 2 as ground plane and inner layer 3 as a power-oriented plane, plus baseline board rules of 0.15 mm minimum trace width, 0.15 mm minimum keep-out, and 0.2 mm board inset margin
  • Updated and saved project notes in Design Notes
Success criteria review
  • ✅ The schematic was substantially cleaned up and duplicate major circuits were removed
  • ✅ Power, USB, and ESP32 boot/reset circuitry were reviewed and consolidated into a single retained implementation
  • ✅ Production MPN metadata was improved for key ICs including U3 and U7, and all current parts have footprints assigned
  • ✅ The PCB layout size, stackup, and core board rules are now defined
  • ❌ The layout is not yet fully routed: DRC still reports 82 airwire errors
  • ❌ ERC still reports unresolved floating capacitor pins on C1, C7, C8, and C16
  • ❌ I could not complete placement optimization or trace routing because the available toolset in this run does not include a placement or routing mutation tool, so I cannot finish the remaining PCB connectivity from here
Next steps The design is materially cleaner and constrained, but it is not yet production-ready because routing and a few remaining schematic cleanup items are still open. If placement and auto-routing tools are made available in a follow-up run, I can finish the remaining airwires, resolve the last floating caps, and close the final ERC/DRC gap.
Clean up duplicates
Review critical circuits
Fix ERC/DRC issues
U5
U2 VSS_2 - U2 EP
GND
U7 GND - J11 Pin_2
IC1 GND - J2 2
IC1 GND - J2 2
IC1 GND - J2 2
IC2 GND_11 - U7 GND
IC1 GND - J2 2
U7 GND - J11 Pin_2
U7 GND - J11 Pin_2
U7 GND - J11 Pin_2
U7 GND - J11 Pin_2
IC1 GND - J2 2
U7 CS - U7 SDO/SA0
R6 P2 - R7 P2
U7 GND - J11 Pin_2
U7 GND - J11 Pin_2
U7 GND - J11 Pin_2
IC1 GND - J2 2
R6 P2 - R7 P2
U7 GND - J11 Pin_2
U5 VSS_2 - U5 EP
U7 GND - J11 Pin_2
U5 VSS_2 - U5 EP
IC1 GND - J2 2
U7 GND - J11 Pin_2
IC1 GND - J2 2
U5 VSS_2 - U5 EP
U5 ~TE - U5 THERM
U7 GND - J11 Pin_2
U7 GND - J11 Pin_2
IC1 GND - J2 2
U7 GND - J11 Pin_2
U7 GND - J11 Pin_2
U5 ~TE - U5 THERM
U7 GND - J11 Pin_2
U7 GND - J11 Pin_2
U7 GND - J11 Pin_2
U7 GND - J11 Pin_2
IC1 GND - J2 2
IC1 GND - J2 2
J9 Shield - U6 GND
U7 GND - J11 Pin_2
IC1 GND - J2 2
U7 GND - J11 Pin_2
U7 GND - J11 Pin_2
IC1 GND - J2 2
U7 CS - U7 SDO/SA0
U7 GND - J11 Pin_2
IC2 GND_11 - U7 GND
IC1 GND - J2 2
U7 GND - J11 Pin_2
U5 VSS_2 - U5 EP
U7 GND - J11 Pin_2
J9 Shield - U6 GND
U5 VSS_2 - U5 EP
J9 Shield - U6 GND
J9 D- - U6 I/O2
J8 2 - U1 IO5
U1 EN - R8 P2
J9 VBUS - U5 IN_1
U3 OUT - U1 3V3
J9 CC2 - R10 P1
U3 OUT - U1 3V3
U1 IO9 - IC1 SCL
J10 PIN1 - U5 VBAT_1
U3 OUT - U1 3V3
U1 IO9 - IC1 SCL
J6 2 - R7 P1
U1 EN - R8 P2
J9 D- - U6 I/O2
U5 VBAT_SENSE - C21 P1
U1 IO8 - IC1 SDA
J4 2 - R5 P1
J5 2 - R6 P1
IC2 IO0 - R17 P2
U3 OUT - U1 3V3
J10 PIN1 - U5 VBAT_1
J13 1 - U8 VOUT
J13 1 - U8 VOUT
U2 OUT_2 - U3 IN
J8 2 - U1 IO5
J9 D+ - U6 I/O1
U3 OUT - U1 3V3
U3 OUT - U1 3V3
J7 2 - U1 IO4
U3 OUT - U1 3V3
U2 OUT_2 - U3 IN
J9 CC2 - R10 P1
U3 OUT - U1 3V3
IC2 IO0 - R17 P2
J9 VBUS - U5 IN_1
J5 2 - R6 P1
U1 IO8 - IC1 SDA
U5 IN_2 - U6 VBUS
J4 2 - R5 P1
J4 2 - R5 P1
U3 OUT - U1 3V3
U1 IO8 - IC1 SDA
U1 EN - R8 P2
J9 CC1 - R9 P1
J9 D+ - U6 I/O1
U2 OUT_2 - U3 IN
U5 IN_2 - U6 VBUS
U1 IO9 - IC1 SCL
U1 IO8 - IC1 SDA
U3 OUT - U1 3V3
U3 OUT - U1 3V3
U3 OUT - U1 3V3
U5 IN_2 - U6 VBUS
U3 OUT - U1 3V3
U3 OUT - U1 3V3
U3 OUT - U1 3V3
U1 IO9 - IC1 SCL
J6 2 - R7 P1
U2 VBAT_SENSE - C2 P1
J13 1 - U8 VOUT
U3 OUT - U1 3V3
U5 IN_2 - U6 VBUS
J6 2 - R7 P1
U3 OUT - U1 3V3
U3 OUT - U1 3V3
J7 2 - U1 IO4
J5 2 - R6 P1
U3 OUT - U1 3V3
U3 OUT - U1 3V3
U3 OUT - U1 3V3
U5 VBAT_SENSE - C21 P1
J9 D+ - U6 I/O1
U2 OUT_2 - U3 IN
U1 EN - R8 P2
J5 2 - R6 P1
U1 IO8 - IC1 SDA
J6 2 - R7 P1
J4 2 - R5 P1
U1 EN - R8 P2
U3 OUT - U1 3V3
U1 EN - R8 P2
IC2 IO0 - R17 P2
J9 CC1 - R9 P1
U3 OUT - U1 3V3
U2 OUT_2 - U3 IN
U2 OUT_2 - U3 IN
J9 D- - U6 I/O2
U5 IN_2 - U6 VBUS
U1 IO9 - IC1 SCL
J11
R8
Resistance
10kΩ
R10
Resistance
5.1kΩ
R17
Resistance
10kΩ
R3
Resistance
4.7kΩ
R14
Resistance
47kΩ
R2
Resistance
5.1kΩ
R1
Resistance
5.1kΩ
R11
Resistance
4.7kΩ
R12
Resistance
4.7kΩ
J12
R4
Resistance
4.7kΩ
R9
Resistance
5.1kΩ
R7
Resistance
10kΩ
R5
Resistance
10kΩ
R16
Resistance
10kΩ
R15
Resistance
47kΩ
R6
Resistance
10kΩ
R13
Resistance
47kΩ
C1
Capacitance
10uF
C12
Capacitance
100nF
J9
C8
Capacitance
100nF
C11
Capacitance
100nF
C22
Capacitance
100nF
U7
End of Life
C14
Capacitance
100nF
SW4
C3
Capacitance
10uF
SW3
C15
Capacitance
100nF
U3
U6
C9
Capacitance
100nF
C4
Capacitance
10uF
C16
Capacitance
100nF
J15
C10
Capacitance
100nF
C6
Capacitance
100nF
C19
Capacitance
10uF
J13
J3
C7
Capacitance
100nF
IC2
C18
Capacitance
10uF
C5
Capacitance
100nF
C17
Capacitance
100nF
J14
C13
Capacitance
100nF
C2
Capacitance
10uF
C20
Capacitance
10uF
C21
Capacitance
10uF
J10

Refine this doc
Ask about this doc
Design Notes
ESP32 Flex Haptic Board production cleanup
  • Removed duplicate legacy schematic blocks so the retained production path uses IC2, U5, J9, U6, U3, and U7.
  • Removed duplicate legacy alternates: U1, duplicate charger U2, duplicate USB-C J1, duplicate IMU IC1, alternate battery connector J2, duplicate ESD U4, duplicate buttons SW1 and SW2, duplicate flex connectors J4, J5, J6, alternate regulator U8, and alternate haptic headers J7, J8.
  • Normalized native USB net names to USB_DP and USB_DN.
  • Kept 3-pin haptic module connectors J11 and J12 with pinout VCC, GND, DATA.
  • Marked intentionally unused pins on the USB-C SBU pins, IMU auxiliary/interrupt pins, unused ESP32 GPIOs, charger status pins, and regulator NC to suppress non-functional ERC noise.
Layout constraints
  • Finalized layout size to 160 mm x 100 mm rectangle with 3 mm corner radius.
  • Retained 4-layer stackup and assigned inner layer 2 as the ground plane, inner layer 3 as a power-oriented plane in the custom stackup.
  • Applied baseline manufacturable constraints: 0.15 mm minimum trace width, 0.15 mm minimum keep-out, and 0.2 mm board inset margin.
Remaining risk items
  • Airwires still need routing completion in the PCB layout.
  • Some passives and earlier removed-component references may still appear in stale ERC/DRC or legacy nets until fully revalidated in layout context.
  • U3 is usable and stocked, but should still be watched for lifecycle preference in future sourcing reviews.
  • ESP32 Flex Haptic Board production cleanup

  • Layout constraints

  • Remaining risk items

Assets

Assets are files uploaded to this project which can be used in various ways.

ESP32 Flex Haptic Board thumbnail
Beginner-friendly battery-powered ESP32-S3 board with USB-C charging/programming, LiPo power-path charging, three flex sensor inputs, one I2C IMU, and two haptic driver outputs.

Properties

Pricing & Availability

Distributor

Qty 1

Arrow

$5.30–$6.40

Digi-Key

$19,010.77–$19,012.58

LCSC

$15.67–$15.84

Mouser

$17.35

TME

$0.32

Verical

$6.62–$59.27

Controls