(kicad_sch
	(version 20250114)
	(generator "eeschema")
	(generator_version "10.0")
	(paper "A4")
	(title_block
		(title "ESP32 Wearable Haptic Controller")
		(date "2026-05-19")
		(company "Portfolio sample asset")
		(comment 1 "Symbol-based KiCad schematic; motor driver behavior is validated in Ngspice.")
	)
	(lib_symbols
		(symbol "Device:R"
				(pin_numbers
					(hide yes)
				)
				(pin_names
					(offset 0)
				)
				(exclude_from_sim no)
				(in_bom yes)
				(on_board yes)
				(in_pos_files yes)
				(duplicate_pin_numbers_are_jumpers no)
				(property "Reference" "R"
					(at 2.032 0 90)
					(show_name no)
					(do_not_autoplace no)
				)
				(property "Value" "R"
					(at 0 0 90)
					(show_name no)
					(do_not_autoplace no)
				)
				(property "Footprint" ""
					(at -1.778 0 90)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Datasheet" ""
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Description" "Resistor"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "ki_keywords" "R res resistor"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "ki_fp_filters" "R_*"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(symbol "R_0_1"
					(rectangle
						(start -1.016 -2.54)
						(end 1.016 2.54)
						(fill
							(type none)
						)
					)
				)
				(symbol "R_1_1"
					(pin passive line
						(at 0 3.81 270)
						(length 1.27)
						(name "")
						(number "1")
					)
					(pin passive line
						(at 0 -3.81 90)
						(length 1.27)
						(name "")
						(number "2")
					)
				)
				(embedded_fonts no)
			)
		(symbol "Device:C"
				(pin_numbers
					(hide yes)
				)
				(pin_names
					(offset 0.254)
				)
				(exclude_from_sim no)
				(in_bom yes)
				(on_board yes)
				(in_pos_files yes)
				(duplicate_pin_numbers_are_jumpers no)
				(property "Reference" "C"
					(at 0.635 2.54 0)
					(show_name no)
					(do_not_autoplace no)
				)
				(property "Value" "C"
					(at 0.635 -2.54 0)
					(show_name no)
					(do_not_autoplace no)
				)
				(property "Footprint" ""
					(at 0.9652 -3.81 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Datasheet" ""
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Description" "Unpolarized capacitor"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "ki_keywords" "cap capacitor"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "ki_fp_filters" "C_*"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(symbol "C_0_1"
					(polyline
						(pts
							(xy -2.032 0.762) (xy 2.032 0.762)
						)
						(fill
							(type none)
						)
					)
					(polyline
						(pts
							(xy -2.032 -0.762) (xy 2.032 -0.762)
						)
						(fill
							(type none)
						)
					)
				)
				(symbol "C_1_1"
					(pin passive line
						(at 0 3.81 270)
						(length 2.794)
						(name "")
						(number "1")
					)
					(pin passive line
						(at 0 -3.81 90)
						(length 2.794)
						(name "")
						(number "2")
					)
				)
				(embedded_fonts no)
			)
		(symbol "Device:D"
				(pin_numbers
					(hide yes)
				)
				(pin_names
					(offset 1.016)
					(hide yes)
				)
				(exclude_from_sim no)
				(in_bom yes)
				(on_board yes)
				(in_pos_files yes)
				(duplicate_pin_numbers_are_jumpers no)
				(property "Reference" "D"
					(at 0 2.54 0)
					(show_name no)
					(do_not_autoplace no)
				)
				(property "Value" "D"
					(at 0 -2.54 0)
					(show_name no)
					(do_not_autoplace no)
				)
				(property "Footprint" ""
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Datasheet" ""
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Description" "Diode"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Sim.Device" "D"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Sim.Pins" "1=K 2=A"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "ki_keywords" "diode"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "ki_fp_filters" "TO-???* *_Diode_* *SingleDiode* D_*"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(symbol "D_0_1"
					(polyline
						(pts
							(xy -1.27 1.27) (xy -1.27 -1.27)
						)
						(fill
							(type none)
						)
					)
					(polyline
						(pts
							(xy 1.27 1.27) (xy 1.27 -1.27) (xy -1.27 0) (xy 1.27 1.27)
						)
						(fill
							(type none)
						)
					)
					(polyline
						(pts
							(xy 1.27 0) (xy -1.27 0)
						)
						(fill
							(type none)
						)
					)
				)
				(symbol "D_1_1"
					(pin passive line
						(at -3.81 0 0)
						(length 2.54)
						(name "K")
						(number "1")
					)
					(pin passive line
						(at 3.81 0 180)
						(length 2.54)
						(name "A")
						(number "2")
					)
				)
				(embedded_fonts no)
			)
		(symbol "Simulation_SPICE:NMOS"
				(pin_numbers
					(hide yes)
				)
				(pin_names
					(offset 0)
				)
				(exclude_from_sim no)
				(in_bom yes)
				(on_board yes)
				(in_pos_files yes)
				(duplicate_pin_numbers_are_jumpers no)
				(property "Reference" "Q"
					(at 5.08 1.27 0)
					(show_name no)
					(do_not_autoplace no)
				)
				(property "Value" "NMOS"
					(at 5.08 -1.27 0)
					(show_name no)
					(do_not_autoplace no)
				)
				(property "Footprint" ""
					(at 5.08 2.54 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Datasheet" "https://ngspice.sourceforge.io/docs/ngspice-html-manual/manual.xhtml#cha_MOSFETs"
					(at 0 -12.7 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Description" "N-MOSFET transistor, drain/source/gate"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Sim.Device" "NMOS"
					(at 0 -17.145 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Sim.Type" "VDMOS"
					(at 0 -19.05 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Sim.Pins" "1=D 2=G 3=S"
					(at 0 -15.24 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "ki_keywords" "transistor NMOS N-MOS N-MOSFET simulation"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(symbol "NMOS_0_1"
					(polyline
						(pts
							(xy 0.254 1.905) (xy 0.254 -1.905)
						)
						(fill
							(type none)
						)
					)
					(polyline
						(pts
							(xy 0.254 0) (xy -2.54 0)
						)
						(fill
							(type none)
						)
					)
					(polyline
						(pts
							(xy 0.762 2.286) (xy 0.762 1.27)
						)
						(fill
							(type none)
						)
					)
					(polyline
						(pts
							(xy 0.762 0.508) (xy 0.762 -0.508)
						)
						(fill
							(type none)
						)
					)
					(polyline
						(pts
							(xy 0.762 -1.27) (xy 0.762 -2.286)
						)
						(fill
							(type none)
						)
					)
					(polyline
						(pts
							(xy 0.762 -1.778) (xy 3.302 -1.778) (xy 3.302 1.778) (xy 0.762 1.778)
						)
						(fill
							(type none)
						)
					)
					(polyline
						(pts
							(xy 1.016 0) (xy 2.032 0.381) (xy 2.032 -0.381) (xy 1.016 0)
						)
						(fill
							(type outline)
						)
					)
					(circle
						(center 1.651 0)
						(radius 2.794)
						(fill
							(type none)
						)
					)
					(polyline
						(pts
							(xy 2.54 2.54) (xy 2.54 1.778)
						)
						(fill
							(type none)
						)
					)
					(circle
						(center 2.54 1.778)
						(radius 0.254)
						(fill
							(type outline)
						)
					)
					(circle
						(center 2.54 -1.778)
						(radius 0.254)
						(fill
							(type outline)
						)
					)
					(polyline
						(pts
							(xy 2.54 -2.54) (xy 2.54 0) (xy 0.762 0)
						)
						(fill
							(type none)
						)
					)
					(polyline
						(pts
							(xy 2.794 0.508) (xy 2.921 0.381) (xy 3.683 0.381) (xy 3.81 0.254)
						)
						(fill
							(type none)
						)
					)
					(polyline
						(pts
							(xy 3.302 0.381) (xy 2.921 -0.254) (xy 3.683 -0.254) (xy 3.302 0.381)
						)
						(fill
							(type none)
						)
					)
				)
				(symbol "NMOS_1_1"
					(pin passive line
						(at 2.54 5.08 270)
						(length 2.54)
						(name "D")
						(number "1")
					)
					(pin input line
						(at -5.08 0 0)
						(length 2.54)
						(name "G")
						(number "2")
					)
					(pin passive line
						(at 2.54 -5.08 90)
						(length 2.54)
						(name "S")
						(number "3")
					)
				)
				(embedded_fonts no)
			)
		(symbol "Connector_Generic:Conn_01x02"
				(pin_names
					(offset 1.016)
					(hide yes)
				)
				(exclude_from_sim no)
				(in_bom yes)
				(on_board yes)
				(in_pos_files yes)
				(duplicate_pin_numbers_are_jumpers no)
				(property "Reference" "J"
					(at 0 2.54 0)
					(show_name no)
					(do_not_autoplace no)
				)
				(property "Value" "Conn_01x02"
					(at 0 -5.08 0)
					(show_name no)
					(do_not_autoplace no)
				)
				(property "Footprint" ""
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Datasheet" ""
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "Description" "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "ki_keywords" "connector"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(property "ki_fp_filters" "Connector*:*_1x??_*"
					(at 0 0 0)
					(show_name no)
					(do_not_autoplace no)
					(hide yes)
				)
				(symbol "Conn_01x02_1_1"
					(rectangle
						(start -1.27 1.27)
						(end 1.27 -3.81)
						(fill
							(type background)
						)
					)
					(rectangle
						(start -1.27 0.127)
						(end 0 -0.127)
						(fill
							(type none)
						)
					)
					(rectangle
						(start -1.27 -2.413)
						(end 0 -2.667)
						(fill
							(type none)
						)
					)
					(pin passive line
						(at -5.08 0 0)
						(length 3.81)
						(name "Pin_1")
						(number "1")
					)
					(pin passive line
						(at -5.08 -2.54 0)
						(length 3.81)
						(name "Pin_2")
						(number "2")
					)
				)
				(embedded_fonts no)
			)
	)
	(text "ESP32 Wearable Haptic Controller - Symbol-Based KiCad Schematic"
		(exclude_from_sim no)
		(at 20.32 20.32 0)
	)
	(text "Circuit boundary: ESP32 GPIO header, gate resistor, pulldown, logic-level NMOS, motor connector, flyback diode, and local decoupling."
		(exclude_from_sim no)
		(at 20.32 27.94 0)
	)
	(text "Ngspice simulation source: ../ngspice/mosfet-driver.cir"
		(exclude_from_sim no)
		(at 20.32 34.29 0)
	)
	(symbol
		(lib_id "Connector_Generic:Conn_01x02")
		(at 30.48 60.96 0)
		(unit 1)
		(exclude_from_sim no)
		(in_bom yes)
		(on_board yes)
		(dnp no)
		(property "Reference" "J1"
			(at 30.48 55.88 0)
		)
		(property "Value" "ESP32_GPIO_HEADER"
			(at 30.48 66.04 0)
		)
		(property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical"
			(at 30.48 60.96 0)
		)
		(property "Datasheet" "~"
			(at 30.48 60.96 0)
		)
		(property "Description" "ESP32 GPIO and ground breakout"
			(at 30.48 60.96 0)
		)
		(pin "1")
		(pin "2")
		(instances
			(project "esp32-haptic-controller"
				(path
					(reference "J1")
					(unit 1)
				)
			)
		)
	)
	(symbol
		(lib_id "Device:R")
		(at 58.42 58.42 90)
		(unit 1)
		(exclude_from_sim no)
		(in_bom yes)
		(on_board yes)
		(dnp no)
		(property "Reference" "R1"
			(at 58.42 53.34 0)
		)
		(property "Value" "220R"
			(at 58.42 63.5 0)
		)
		(property "Footprint" "Resistor_SMD:R_0603_1608Metric"
			(at 58.42 58.42 0)
		)
		(property "Datasheet" "~"
			(at 58.42 58.42 0)
		)
		(property "Description" "Gate resistor"
			(at 58.42 58.42 0)
		)
		(pin "1")
		(pin "2")
		(instances
			(project "esp32-haptic-controller"
				(path
					(reference "R1")
					(unit 1)
				)
			)
		)
	)
	(symbol
		(lib_id "Device:R")
		(at 81.28 68.58 0)
		(unit 1)
		(exclude_from_sim no)
		(in_bom yes)
		(on_board yes)
		(dnp no)
		(property "Reference" "R2"
			(at 81.28 63.5 0)
		)
		(property "Value" "100k"
			(at 81.28 73.66 0)
		)
		(property "Footprint" "Resistor_SMD:R_0603_1608Metric"
			(at 81.28 68.58 0)
		)
		(property "Datasheet" "~"
			(at 81.28 68.58 0)
		)
		(property "Description" "Gate pulldown resistor"
			(at 81.28 68.58 0)
		)
		(pin "1")
		(pin "2")
		(instances
			(project "esp32-haptic-controller"
				(path
					(reference "R2")
					(unit 1)
				)
			)
		)
	)
	(symbol
		(lib_id "Simulation_SPICE:NMOS")
		(at 106.68 66.04 0)
		(unit 1)
		(exclude_from_sim no)
		(in_bom yes)
		(on_board yes)
		(dnp no)
		(property "Reference" "Q1"
			(at 106.68 60.96000000000001 0)
		)
		(property "Value" "AO3400A_EQUIV"
			(at 106.68 71.12 0)
		)
		(property "Footprint" "Package_TO_SOT_SMD:SOT-23"
			(at 106.68 66.04 0)
		)
		(property "Datasheet" "~"
			(at 106.68 66.04 0)
		)
		(property "Description" "Logic-level N-channel MOSFET"
			(at 106.68 66.04 0)
		)
		(pin "1")
		(pin "2")
		(pin "3")
		(instances
			(project "esp32-haptic-controller"
				(path
					(reference "Q1")
					(unit 1)
				)
			)
		)
	)
	(symbol
		(lib_id "Connector_Generic:Conn_01x02")
		(at 147.32 58.42 0)
		(unit 1)
		(exclude_from_sim no)
		(in_bom yes)
		(on_board yes)
		(dnp no)
		(property "Reference" "J2"
			(at 147.32 53.34 0)
		)
		(property "Value" "VIBRATION_MOTOR"
			(at 147.32 63.5 0)
		)
		(property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical"
			(at 147.32 58.42 0)
		)
		(property "Datasheet" "~"
			(at 147.32 58.42 0)
		)
		(property "Description" "External vibration motor connector"
			(at 147.32 58.42 0)
		)
		(pin "1")
		(pin "2")
		(instances
			(project "esp32-haptic-controller"
				(path
					(reference "J2")
					(unit 1)
				)
			)
		)
	)
	(symbol
		(lib_id "Connector_Generic:Conn_01x02")
		(at 147.32 86.36 0)
		(unit 1)
		(exclude_from_sim no)
		(in_bom yes)
		(on_board yes)
		(dnp no)
		(property "Reference" "J3"
			(at 147.32 81.28 0)
		)
		(property "Value" "VBAT_INPUT"
			(at 147.32 91.44 0)
		)
		(property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical"
			(at 147.32 86.36 0)
		)
		(property "Datasheet" "~"
			(at 147.32 86.36 0)
		)
		(property "Description" "Battery/supply input connector"
			(at 147.32 86.36 0)
		)
		(pin "1")
		(pin "2")
		(instances
			(project "esp32-haptic-controller"
				(path
					(reference "J3")
					(unit 1)
				)
			)
		)
	)
	(symbol
		(lib_id "Device:D")
		(at 129.54 53.34 0)
		(unit 1)
		(exclude_from_sim no)
		(in_bom yes)
		(on_board yes)
		(dnp no)
		(property "Reference" "D1"
			(at 129.54 48.260000000000005 0)
		)
		(property "Value" "SS14"
			(at 129.54 58.42 0)
		)
		(property "Footprint" "Diode_SMD:D_SMA"
			(at 129.54 53.34 0)
		)
		(property "Datasheet" "~"
			(at 129.54 53.34 0)
		)
		(property "Description" "Flyback diode, cathode at VBAT"
			(at 129.54 53.34 0)
		)
		(pin "1")
		(pin "2")
		(instances
			(project "esp32-haptic-controller"
				(path
					(reference "D1")
					(unit 1)
				)
			)
		)
	)
	(symbol
		(lib_id "Device:C")
		(at 129.54 86.36 0)
		(unit 1)
		(exclude_from_sim no)
		(in_bom yes)
		(on_board yes)
		(dnp no)
		(property "Reference" "C1"
			(at 129.54 81.28 0)
		)
		(property "Value" "10uF"
			(at 129.54 91.44 0)
		)
		(property "Footprint" "Capacitor_SMD:C_0805_2012Metric"
			(at 129.54 86.36 0)
		)
		(property "Datasheet" "~"
			(at 129.54 86.36 0)
		)
		(property "Description" "Local motor rail decoupling capacitor"
			(at 129.54 86.36 0)
		)
		(pin "1")
		(pin "2")
		(instances
			(project "esp32-haptic-controller"
				(path
					(reference "C1")
					(unit 1)
				)
			)
		)
	)
	(wire
		(pts
			(xy 25.4 60.96) (xy 21.59 60.96)
		)
	)
	(label "GPIO_PWM"
		(at 21.59 60.96 0)
	)
	(wire
		(pts
			(xy 25.4 63.5) (xy 21.59 63.5)
		)
	)
	(label "GND"
		(at 21.59 63.5 0)
	)
	(wire
		(pts
			(xy 54.61 58.42) (xy 49.53 58.42)
		)
	)
	(label "GPIO_PWM"
		(at 49.53 58.42 0)
	)
	(wire
		(pts
			(xy 62.23 58.42) (xy 67.31 58.42)
		)
	)
	(label "GATE"
		(at 67.31 58.42 0)
	)
	(wire
		(pts
			(xy 81.28 72.39) (xy 81.28 76.2)
		)
	)
	(label "GATE"
		(at 81.28 76.2 0)
	)
	(wire
		(pts
			(xy 81.28 64.77) (xy 81.28 60.96)
		)
	)
	(label "GND"
		(at 81.28 60.96 0)
	)
	(wire
		(pts
			(xy 109.22 71.12) (xy 109.22 76.2)
		)
	)
	(label "DRAIN"
		(at 109.22 76.2 0)
	)
	(wire
		(pts
			(xy 101.6 66.04) (xy 96.52 66.04)
		)
	)
	(label "GATE"
		(at 96.52 66.04 0)
	)
	(wire
		(pts
			(xy 109.22 60.96) (xy 109.22 55.88)
		)
	)
	(label "GND"
		(at 109.22 55.88 0)
	)
	(wire
		(pts
			(xy 142.24 58.42) (xy 137.16 58.42)
		)
	)
	(label "VBAT_3V7"
		(at 137.16 58.42 0)
	)
	(wire
		(pts
			(xy 142.24 60.96) (xy 137.16 60.96)
		)
	)
	(label "DRAIN"
		(at 137.16 60.96 0)
	)
	(wire
		(pts
			(xy 142.24 86.36) (xy 137.16 86.36)
		)
	)
	(label "VBAT_3V7"
		(at 137.16 86.36 0)
	)
	(wire
		(pts
			(xy 142.24 88.9) (xy 137.16 88.9)
		)
	)
	(label "GND"
		(at 137.16 88.9 0)
	)
	(wire
		(pts
			(xy 125.73 53.34) (xy 120.65 53.34)
		)
	)
	(label "VBAT_3V7"
		(at 120.65 53.34 0)
	)
	(wire
		(pts
			(xy 133.35 53.34) (xy 138.43 53.34)
		)
	)
	(label "DRAIN"
		(at 138.43 53.34 0)
	)
	(wire
		(pts
			(xy 129.54 90.17) (xy 129.54 93.98)
		)
	)
	(label "VBAT_3V7"
		(at 129.54 93.98 0)
	)
	(wire
		(pts
			(xy 129.54 82.55) (xy 129.54 78.74)
		)
	)
	(label "GND"
		(at 129.54 78.74 0)
	)
	(text "PCB review notes: keep the motor current loop short, place C1 at J2/J3, keep the gate trace away from the motor return, and verify D1 orientation."
		(exclude_from_sim no)
		(at 20.32 109.22 0)
	)
	(sheet_instances
		(path
			(page "1")
		)
	)
	(embedded_fonts no)
)
