(kicad_pcb (version 20240108) (generator "OpenAI-PCB-Generator") (generator_version "2.0") (general (thickness 1.6)) (paper "A4") (title_block (title "Robot Dog ESP32 Controller - Final") (date "2026-08-21") (rev "2.2 CLEAN") (company "Student PCB Project")) (layers (0 "F.Cu" signal) (31 "B.Cu" signal) (36 "B.SilkS" user "b.silkscreen") (37 "F.SilkS" user "f.silkscreen") (44 "Edge.Cuts" user) ) (setup (pad_to_mask_clearance 0)) (net 0 "") (net 1 "GND") (net 2 "+5V") (net 3 "+3V3") (net 4 "SERVO1_SIG_GPIO18") (net 5 "SERVO2_SIG_GPIO19") (net 6 "SERVO3_SIG_GPIO25") (net 7 "SERVO4_SIG_GPIO26") (net 8 "I2C_SDA_GPIO21") (net 9 "I2C_SCL_GPIO22") (gr_rect (start 10 10) (end 110 80) (stroke (width 0.35) (type default)) (fill none) (layer "Edge.Cuts")) (gr_text "ROBOT DOG CONTROLLER" (at 60 13.5) (layer "F.SilkS") (effects (font (size 1.8 1.8) (thickness 0.3)))) (gr_text "ESP32 | 4x SERVO | I2C SENSOR | 5V INPUT" (at 60 77) (layer "F.SilkS") (effects (font (size 1.0 1.0) (thickness 0.18)))) (gr_text "DOUBLE LAYER PCB" (at 60 15.8) (layer "F.SilkS") (effects (font (size 0.9 0.9) (thickness 0.16)))) (footprint "RobotDog:ESP32_DevKit_30Pin" (layer "F.Cu") (at 55 45) (fp_rect (start -15 -21) (end 15 21) (stroke (width 0.3) (type default)) (fill none) (layer "F.SilkS")) (fp_text reference "U1" (at 0 -23) (layer "F.SilkS") (effects (font (size 1.2 1.2) (thickness 0.2)))) (fp_text value "ESP32 DEVKIT V1" (at 0 0 90) (layer "F.SilkS") (effects (font (size 1.2 1.2) (thickness 0.22)))) (fp_text user "USB" (at 0 19) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.18)))) (pad "L1" thru_hole circle (at -12.70 -17.78) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask") (net 3 "+3V3")) (pad "L2" thru_hole circle (at -12.70 -15.24) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "L3" thru_hole circle (at -12.70 -12.70) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "L4" thru_hole circle (at -12.70 -10.16) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "L5" thru_hole circle (at -12.70 -7.62) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "L6" thru_hole circle (at -12.70 -5.08) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "L7" thru_hole circle (at -12.70 -2.54) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "L8" thru_hole circle (at -12.70 0.00) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "L9" thru_hole circle (at -12.70 2.54) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask") (net 6 "SERVO3_SIG_GPIO25")) (pad "L10" thru_hole circle (at -12.70 5.08) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask") (net 7 "SERVO4_SIG_GPIO26")) (pad "L11" thru_hole circle (at -12.70 7.62) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "L12" thru_hole circle (at -12.70 10.16) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "L13" thru_hole circle (at -12.70 12.70) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "L14" thru_hole circle (at -12.70 15.24) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask") (net 1 "GND")) (pad "L15" thru_hole circle (at -12.70 17.78) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "R1" thru_hole circle (at 12.70 -17.78) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask") (net 2 "+5V")) (pad "R2" thru_hole circle (at 12.70 -15.24) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask") (net 1 "GND")) (pad "R3" thru_hole circle (at 12.70 -12.70) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "R4" thru_hole circle (at 12.70 -10.16) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask") (net 9 "I2C_SCL_GPIO22")) (pad "R5" thru_hole circle (at 12.70 -7.62) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "R6" thru_hole circle (at 12.70 -5.08) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "R7" thru_hole circle (at 12.70 -2.54) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask") (net 8 "I2C_SDA_GPIO21")) (pad "R8" thru_hole circle (at 12.70 0.00) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask") (net 1 "GND")) (pad "R9" thru_hole circle (at 12.70 2.54) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask") (net 5 "SERVO2_SIG_GPIO19")) (pad "R10" thru_hole circle (at 12.70 5.08) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask") (net 4 "SERVO1_SIG_GPIO18")) (pad "R11" thru_hole circle (at 12.70 7.62) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "R12" thru_hole circle (at 12.70 10.16) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "R13" thru_hole circle (at 12.70 12.70) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "R14" thru_hole circle (at 12.70 15.24) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) (pad "R15" thru_hole circle (at 12.70 17.78) (size 2.20 2.20) (drill 1.00) (layers "*.Cu" "*.Mask")) ) (footprint "RobotDog:Servo_1x03_Vertical" (layer "F.Cu") (at 20 43) (fp_text reference "J3" (at 0 -5.2) (layer "F.SilkS") (effects (font (size 1.0 1.0) (thickness 0.18)))) (fp_text value "SERVO3 GPIO25" (at 0 5.2) (layer "F.SilkS") (effects (font (size 0.9 0.9) (thickness 0.16)))) (fp_rect (start -2 -4.8) (end 2 4.8) (stroke (width 0.25) (type default)) (fill none) (layer "F.SilkS")) (pad "1" thru_hole rect (at 0 -2.54) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 6 "SERVO3_SIG_GPIO25")) (pad "2" thru_hole circle (at 0 0.00) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 2 "+5V")) (pad "3" thru_hole circle (at 0 2.54) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 1 "GND")) ) (gr_text "S / 5V / G" (at 24.2 43) (layer "F.SilkS") (effects (font (size 0.75 0.75) (thickness 0.14)))) (footprint "RobotDog:Servo_1x03_Vertical" (layer "F.Cu") (at 20 55) (fp_text reference "J4" (at 0 -5.2) (layer "F.SilkS") (effects (font (size 1.0 1.0) (thickness 0.18)))) (fp_text value "SERVO4 GPIO26" (at 0 5.2) (layer "F.SilkS") (effects (font (size 0.9 0.9) (thickness 0.16)))) (fp_rect (start -2 -4.8) (end 2 4.8) (stroke (width 0.25) (type default)) (fill none) (layer "F.SilkS")) (pad "1" thru_hole rect (at 0 -2.54) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 7 "SERVO4_SIG_GPIO26")) (pad "2" thru_hole circle (at 0 0.00) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 2 "+5V")) (pad "3" thru_hole circle (at 0 2.54) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 1 "GND")) ) (gr_text "S / 5V / G" (at 24.2 55) (layer "F.SilkS") (effects (font (size 0.75 0.75) (thickness 0.14)))) (footprint "RobotDog:Servo_1x03_Vertical" (layer "F.Cu") (at 100 43) (fp_text reference "J2" (at 0 -5.2) (layer "F.SilkS") (effects (font (size 1.0 1.0) (thickness 0.18)))) (fp_text value "SERVO2 GPIO19" (at 0 5.2) (layer "F.SilkS") (effects (font (size 0.9 0.9) (thickness 0.16)))) (fp_rect (start -2 -4.8) (end 2 4.8) (stroke (width 0.25) (type default)) (fill none) (layer "F.SilkS")) (pad "1" thru_hole rect (at 0 -2.54) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 5 "SERVO2_SIG_GPIO19")) (pad "2" thru_hole circle (at 0 0.00) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 2 "+5V")) (pad "3" thru_hole circle (at 0 2.54) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 1 "GND")) ) (gr_text "S / 5V / G" (at 104.2 43) (layer "F.SilkS") (effects (font (size 0.75 0.75) (thickness 0.14)))) (footprint "RobotDog:Servo_1x03_Vertical" (layer "F.Cu") (at 100 55) (fp_text reference "J1" (at 0 -5.2) (layer "F.SilkS") (effects (font (size 1.0 1.0) (thickness 0.18)))) (fp_text value "SERVO1 GPIO18" (at 0 5.2) (layer "F.SilkS") (effects (font (size 0.9 0.9) (thickness 0.16)))) (fp_rect (start -2 -4.8) (end 2 4.8) (stroke (width 0.25) (type default)) (fill none) (layer "F.SilkS")) (pad "1" thru_hole rect (at 0 -2.54) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 4 "SERVO1_SIG_GPIO18")) (pad "2" thru_hole circle (at 0 0.00) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 2 "+5V")) (pad "3" thru_hole circle (at 0 2.54) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 1 "GND")) ) (gr_text "S / 5V / G" (at 104.2 55) (layer "F.SilkS") (effects (font (size 0.75 0.75) (thickness 0.14)))) (footprint "RobotDog:I2C_1x04" (layer "F.Cu") (at 80 18) (fp_text reference "J6" (at 0 -3.0) (layer "F.SilkS") (effects (font (size 1.0 1.0) (thickness 0.18)))) (fp_text value "I2C SENSOR" (at 0 3.0) (layer "F.SilkS") (effects (font (size 1.0 1.0) (thickness 0.18)))) (fp_rect (start -6 -2) (end 6 2) (stroke (width 0.25) (type default)) (fill none) (layer "F.SilkS")) (pad "1" thru_hole rect (at -3.81 0) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 3 "+3V3")) (pad "2" thru_hole circle (at -1.27 0) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 1 "GND")) (pad "3" thru_hole circle (at 1.27 0) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 8 "I2C_SDA_GPIO21")) (pad "4" thru_hole circle (at 3.81 0) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 9 "I2C_SCL_GPIO22")) ) (gr_text "3V3 GND SDA SCL" (at 80 21.6) (layer "F.SilkS") (effects (font (size 0.8 0.8) (thickness 0.15)))) (footprint "RobotDog:Battery_1x02" (layer "F.Cu") (at 55 72) (fp_text reference "J5" (at 0 -3.2) (layer "F.SilkS") (effects (font (size 1.0 1.0) (thickness 0.18)))) (fp_text value "5V POWER IN" (at 0 3.2) (layer "F.SilkS") (effects (font (size 1.0 1.0) (thickness 0.18)))) (fp_rect (start -4 -2) (end 4 2) (stroke (width 0.25) (type default)) (fill none) (layer "F.SilkS")) (pad "1" thru_hole rect (at -1.27 0) (size 2.0 2.0) (drill 1.0) (layers "*.Cu" "*.Mask") (net 2 "+5V")) (pad "2" thru_hole circle (at 1.27 0) (size 2.0 2.0) (drill 1.0) (layers "*.Cu" "*.Mask") (net 1 "GND")) ) (gr_text "+5V GND" (at 55 76) (layer "F.SilkS") (effects (font (size 0.9 0.9) (thickness 0.16)))) (footprint "RobotDog:Radial_Cap_1000uF" (layer "F.Cu") (at 82 71) (fp_text reference "C1" (at 0 -3) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.18)))) (fp_text value "1000uF / 16V" (at 0 3) (layer "F.SilkS") (effects (font (size 0.9 0.9) (thickness 0.16)))) (fp_circle (center 0 0) (end 3.2 0) (stroke (width 0.25) (type default)) (fill none) (layer "F.SilkS")) (pad "1" thru_hole rect (at -1.25 0) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 2 "+5V")) (pad "2" thru_hole circle (at 1.25 0) (size 2.2 2.2) (drill 1.0) (layers "*.Cu" "*.Mask") (net 1 "GND")) ) (footprint "RobotDog:MountingHole_3.2mm" (layer "F.Cu") (at 15 15) (fp_text reference "H1" (at 0 3) (layer "F.SilkS") (effects (font (size 0.8 0.8) (thickness 0.14)))) (pad "" np_thru_hole circle (at 0.00 0.00) (size 5 5) (drill 3.2) (layers "*.Cu" "*.Mask")) ) (footprint "RobotDog:MountingHole_3.2mm" (layer "F.Cu") (at 105 15) (fp_text reference "H2" (at 0 3) (layer "F.SilkS") (effects (font (size 0.8 0.8) (thickness 0.14)))) (pad "" np_thru_hole circle (at 0.00 0.00) (size 5 5) (drill 3.2) (layers "*.Cu" "*.Mask")) ) (footprint "RobotDog:MountingHole_3.2mm" (layer "F.Cu") (at 15 75) (fp_text reference "H3" (at 0 3) (layer "F.SilkS") (effects (font (size 0.8 0.8) (thickness 0.14)))) (pad "" np_thru_hole circle (at 0.00 0.00) (size 5 5) (drill 3.2) (layers "*.Cu" "*.Mask")) ) (footprint "RobotDog:MountingHole_3.2mm" (layer "F.Cu") (at 105 75) (fp_text reference "H4" (at 0 3) (layer "F.SilkS") (effects (font (size 0.8 0.8) (thickness 0.14)))) (pad "" np_thru_hole circle (at 0.00 0.00) (size 5 5) (drill 3.2) (layers "*.Cu" "*.Mask")) ) (segment (start 42.30 47.54) (end 30.00 47.54) (width 0.45) (layer "F.Cu") (net 6) (uuid "2deeb9fd-cc9a-41cd-a96c-9e6ad181a107")) (segment (start 30.00 47.54) (end 30.00 40.46) (width 0.45) (layer "F.Cu") (net 6) (uuid "bf3bcf76-22fd-4b06-93a4-37d4a33af8c4")) (segment (start 30.00 40.46) (end 20.00 40.46) (width 0.45) (layer "F.Cu") (net 6) (uuid "af90e9c7-e258-43d9-816f-b0a2efcbfee4")) (segment (start 42.30 50.08) (end 27.00 50.08) (width 0.45) (layer "F.Cu") (net 7) (uuid "43963bc2-5ef2-4998-8ed0-98b2a43ed3a4")) (segment (start 27.00 50.08) (end 27.00 52.46) (width 0.45) (layer "F.Cu") (net 7) (uuid "d9142a93-0408-45ac-96f7-a66dfdb08cdd")) (segment (start 27.00 52.46) (end 20.00 52.46) (width 0.45) (layer "F.Cu") (net 7) (uuid "883e2b3c-0832-48ca-8307-f16cd73f4062")) (segment (start 67.70 47.54) (end 80.00 47.54) (width 0.45) (layer "F.Cu") (net 5) (uuid "6d852a4e-bcb3-43c1-bb97-a19962ac1852")) (segment (start 80.00 47.54) (end 80.00 40.46) (width 0.45) (layer "F.Cu") (net 5) (uuid "684a16b0-5a99-434e-905a-21df35ed0b11")) (segment (start 80.00 40.46) (end 100.00 40.46) (width 0.45) (layer "F.Cu") (net 5) (uuid "f4cce88d-a941-44a2-84c5-805a66fd1cfe")) (segment (start 67.70 50.08) (end 85.00 50.08) (width 0.45) (layer "F.Cu") (net 4) (uuid "06ef60e7-56a0-4f79-b732-9f982402978d")) (segment (start 85.00 50.08) (end 85.00 52.46) (width 0.45) (layer "F.Cu") (net 4) (uuid "3f161e26-be26-41ce-b4ee-24c4d5151d90")) (segment (start 85.00 52.46) (end 100.00 52.46) (width 0.45) (layer "F.Cu") (net 4) (uuid "02c4a361-e48c-4c58-bb2c-c6a88b85bdeb")) (segment (start 67.70 34.84) (end 73.00 34.84) (width 0.35) (layer "F.Cu") (net 9) (uuid "a07e273b-679e-4a6f-bfa5-0b15b0bd5609")) (segment (start 73.00 34.84) (end 73.00 13.50) (width 0.35) (layer "F.Cu") (net 9) (uuid "3296e2f4-9eeb-46e8-8872-bfc93f214b44")) (segment (start 73.00 13.50) (end 83.81 13.50) (width 0.35) (layer "F.Cu") (net 9) (uuid "fc391265-46ec-4674-b998-2a4f4aec5d44")) (segment (start 83.81 13.50) (end 83.81 18.00) (width 0.35) (layer "F.Cu") (net 9) (uuid "f927ed89-2bf5-4102-ab68-6b77e4f77ba6")) (segment (start 67.70 42.46) (end 77.00 42.46) (width 0.35) (layer "F.Cu") (net 8) (uuid "27b8c1e7-6e92-4369-9360-c4ed0a22a2fc")) (segment (start 77.00 42.46) (end 77.00 22.00) (width 0.35) (layer "F.Cu") (net 8) (uuid "de4b010d-13c1-4032-9198-a46d5d7b873d")) (segment (start 77.00 22.00) (end 81.27 22.00) (width 0.35) (layer "F.Cu") (net 8) (uuid "e60fed69-b0af-46ea-ba82-bd7502863f2c")) (segment (start 81.27 22.00) (end 81.27 18.00) (width 0.35) (layer "F.Cu") (net 8) (uuid "e9722884-f1ab-4331-8259-2a9b9e4ae16f")) (segment (start 24.00 68.00) (end 96.00 68.00) (width 1.20) (layer "B.Cu") (net 2) (uuid "f527b462-bc91-451c-9fe7-2dd8b07a05fb")) (segment (start 53.73 72.00) (end 53.73 68.00) (width 1.20) (layer "B.Cu") (net 2) (uuid "e2afaae6-1964-411c-b507-9504aed74e55")) (segment (start 67.70 27.22) (end 75.00 27.22) (width 1.20) (layer "B.Cu") (net 2) (uuid "1c2006d4-fb65-437b-b90e-58da5b5ad34e")) (segment (start 75.00 27.22) (end 75.00 68.00) (width 1.20) (layer "B.Cu") (net 2) (uuid "e4606f76-c7f1-4c15-b686-9b126cc71bcb")) (segment (start 20.00 43.00) (end 24.00 43.00) (width 1.20) (layer "B.Cu") (net 2) (uuid "739af7ce-4802-46a6-8bea-920dfb0f85a1")) (segment (start 20.00 55.00) (end 24.00 55.00) (width 1.20) (layer "B.Cu") (net 2) (uuid "9cc732b8-0098-437d-b92a-c93a92d31524")) (segment (start 24.00 43.00) (end 24.00 68.00) (width 1.20) (layer "B.Cu") (net 2) (uuid "dd1c0e26-6aa1-4479-8b6a-fcfc62b6a1b6")) (segment (start 100.00 43.00) (end 96.00 43.00) (width 1.20) (layer "B.Cu") (net 2) (uuid "d7deb5f0-9e16-4690-9007-db4776a9aea7")) (segment (start 100.00 55.00) (end 96.00 55.00) (width 1.20) (layer "B.Cu") (net 2) (uuid "1c7a357f-bf30-45ad-9cb9-7abcb17b05b1")) (segment (start 96.00 43.00) (end 96.00 68.00) (width 1.20) (layer "B.Cu") (net 2) (uuid "6924958d-dd05-4c57-9586-f4b4424f6a2d")) (segment (start 80.75 71.00) (end 80.75 68.00) (width 1.20) (layer "B.Cu") (net 2) (uuid "087cf848-f0ec-4be9-9394-750f19847db4")) (segment (start 42.30 27.22) (end 38.00 27.22) (width 0.60) (layer "B.Cu") (net 3) (uuid "1c10f7a5-d1e4-4a89-95de-84c8b8670f4b")) (segment (start 38.00 27.22) (end 38.00 12.50) (width 0.60) (layer "B.Cu") (net 3) (uuid "e94442a0-6e11-480d-9906-9ccfa85c982e")) (segment (start 38.00 12.50) (end 76.19 12.50) (width 0.60) (layer "B.Cu") (net 3) (uuid "f28a52d6-b120-4b1c-b8b7-53ddfa62f834")) (segment (start 76.19 12.50) (end 76.19 18.00) (width 0.60) (layer "B.Cu") (net 3) (uuid "8b1aef00-69d6-4674-8e4b-8e7ecdad7b07")) (zone (net 1) (net_name "GND") (layer "B.Cu") (hatch edge 0.5) (connect_pads (clearance 0.3)) (min_thickness 0.25) (fill yes (thermal_gap 0.3) (thermal_bridge_width 0.4)) (polygon (pts (xy 11 11) (xy 109 11) (xy 109 79) (xy 11 79))) ) )