{
 "_about": "Ouro robot electronics, generated with the drawings. Refs as in docs/schematic.svg; board holes as (column 1-23, row A-K) in docs/perfboard.svg.",
 "parts": {
  "BT1": {
   "description": "2S LiPo 7.4 V 450-500 mAh 30C, XH balance lead",
   "value": ""
  },
  "J0": {
   "description": "XT30 pair (battery side female, robot side male)",
   "value": "replaces PH2.0"
  },
  "F1": {
   "description": "PTC resettable fuse, radial, 3.0 A hold / 6.0 A trip, >=16 V, Imax >=40 A (e.g. Littelfuse RUEF300)",
   "value": "3 A"
  },
  "U1": {
   "description": "Mini560 fixed 5 V buck, servo rail (\"buck A\"), top of the stack (cooler)",
   "value": "5 V"
  },
  "U3": {
   "description": "Mini560 fixed 5 V buck, ESP32 rail (\"buck B\"), bottom of the stack",
   "value": "5 V"
  },
  "U2": {
   "description": "INA219 breakout, 0.1 ohm on-board shunt, addr 0x40",
   "value": ""
  },
  "R5": {
   "description": "0.1 ohm 1 W 1% axial, soldered across U2 VIN+/VIN- terminal holes",
   "value": "0.1R 1W"
  },
  "C2": {
   "description": "220 uF 10 V (or 16 V) low-ESR electrolytic, 6.3 x 11 mm, lying on top of U2",
   "value": "220u"
  },
  "R1": {
   "description": "100 k 1% 1/4 W",
   "value": "100k"
  },
  "R2": {
   "description": "33 k 1% 1/4 W",
   "value": "33k"
  },
  "C3": {
   "description": "100 nF ceramic, 2.54 mm leads",
   "value": "100n"
  },
  "J1": {
   "description": "8 x 3 male header, 2.54 mm, straight (plug tops at link z 27)",
   "value": ""
  },
  "U5": {
   "description": "ESP32 DevKit V1, ESP32-WROOM-32, 30-pin; header pins cut flush under the spacers",
   "value": ""
  },
  "U4": {
   "description": "GY-521 MPU-6050, mid (link s4, foam-taped on the ESP32 module can), AD0 -> GND = 0x68",
   "value": ""
  },
  "U6": {
   "description": "GY-521 MPU-6050, head (link s8), AD0 -> 3V3 = 0x69",
   "value": ""
  },
  "P1": {
   "description": "Left head pin, M3 x 25 zinc-plated steel screw + M3 ring lug",
   "value": ""
  },
  "P2": {
   "description": "Right head pin, M3 x 25 zinc-plated steel screw + M3 ring lug",
   "value": ""
  },
  "W0": {
   "description": "Bare tinned wire across the two tail cradle notches (bridges P1-P2 when latched)",
   "value": ""
  },
  "M1": {
   "description": "MG90S servo, joint 1",
   "value": ""
  },
  "M2": {
   "description": "MG90S servo, joint 2",
   "value": ""
  },
  "M3": {
   "description": "MG90S servo, joint 3",
   "value": ""
  },
  "M4": {
   "description": "MG90S servo, joint 4",
   "value": ""
  },
  "M5": {
   "description": "MG90S servo, joint 5",
   "value": ""
  },
  "M6": {
   "description": "MG90S servo, joint 6",
   "value": ""
  },
  "M7": {
   "description": "MG90S servo, joint 7",
   "value": ""
  },
  "M8": {
   "description": "MG90S servo, joint 8",
   "value": ""
  }
 },
 "nets": {
  "VBAT_RAW": [
   "BT1.+",
   "J0.+",
   "F1.1"
  ],
  "VBAT_F": [
   "F1.2",
   "U1.IN+",
   "U3.IN+",
   "R1.1"
  ],
  "GND": [
   "BT1.-",
   "J0.-",
   "U1.GND",
   "U3.GND",
   "U2.GND",
   "C2.-",
   "R2.2",
   "C3.2",
   "U5.GND",
   "U4.GND",
   "U4.AD0",
   "U6.GND",
   "P2.1",
   "J1.G1",
   "J1.G2",
   "J1.G3",
   "J1.G4",
   "J1.G5",
   "J1.G6",
   "J1.G7",
   "J1.G8",
   "M1.GND",
   "M2.GND",
   "M3.GND",
   "M4.GND",
   "M5.GND",
   "M6.GND",
   "M7.GND",
   "M8.GND"
  ],
  "5V_SHUNT_IN": [
   "U1.OUT+",
   "U2.VIN+",
   "R5.1"
  ],
  "5V_SERVO": [
   "U2.VIN-",
   "R5.2",
   "C2.+",
   "J1.V1",
   "J1.V2",
   "J1.V3",
   "J1.V4",
   "J1.V5",
   "J1.V6",
   "J1.V7",
   "J1.V8",
   "M1.V+",
   "M2.V+",
   "M3.V+",
   "M4.V+",
   "M5.V+",
   "M6.V+",
   "M7.V+",
   "M8.V+"
  ],
  "5V_LOGIC": [
   "U3.OUT+",
   "U5.5V"
  ],
  "3V3": [
   "U5.3V3",
   "U4.VCC",
   "U2.VCC",
   "U6.VCC",
   "U6.AD0"
  ],
  "SDA": [
   "U5.GPIO21",
   "U4.SDA",
   "U2.SDA",
   "U6.SDA"
  ],
  "SCL": [
   "U5.GPIO22",
   "U4.SCL",
   "U2.SCL",
   "U6.SCL"
  ],
  "VSENSE": [
   "R1.2",
   "R2.1",
   "C3.1",
   "U5.GPIO34"
  ],
  "LATCH": [
   "U5.GPIO27",
   "P1.1"
  ],
  "LATCH_BRIDGE": [
   "P1.2",
   "W0.1",
   "W0.2",
   "P2.2"
  ],
  "SIG1": [
   "U5.GPIO13",
   "J1.S1",
   "M1.SIG"
  ],
  "SIG2": [
   "U5.GPIO26",
   "J1.S2",
   "M2.SIG"
  ],
  "SIG3": [
   "U5.GPIO16",
   "J1.S3",
   "M3.SIG"
  ],
  "SIG4": [
   "U5.GPIO17",
   "J1.S4",
   "M4.SIG"
  ],
  "SIG5": [
   "U5.GPIO18",
   "J1.S5",
   "M5.SIG"
  ],
  "SIG6": [
   "U5.GPIO19",
   "J1.S6",
   "M6.SIG"
  ],
  "SIG7": [
   "U5.GPIO23",
   "J1.S7",
   "M7.SIG"
  ],
  "SIG8": [
   "U5.GPIO25",
   "J1.S8",
   "M8.SIG"
  ]
 },
 "pin_map": [
  {
   "gpio": 13,
   "devkit_label": "D13",
   "net": "SIG1",
   "direction": "out",
   "notes": "Servo joint 1 (tail). LEDC PWM 50 Hz, 16-bit"
  },
  {
   "gpio": 26,
   "devkit_label": "D26",
   "net": "SIG2",
   "direction": "out",
   "notes": "Servo joint 2. Moved from GPIO14 (JTAG TMS, not quiet at boot)"
  },
  {
   "gpio": 16,
   "devkit_label": "RX2",
   "net": "SIG3",
   "direction": "out",
   "notes": "Servo joint 3. Free on WROOM-32; NOT available on WROVER (PSRAM)"
  },
  {
   "gpio": 17,
   "devkit_label": "TX2",
   "net": "SIG4",
   "direction": "out",
   "notes": "Servo joint 4. Same WROVER caveat as GPIO16"
  },
  {
   "gpio": 18,
   "devkit_label": "D18",
   "net": "SIG5",
   "direction": "out",
   "notes": "Servo joint 5"
  },
  {
   "gpio": 19,
   "devkit_label": "D19",
   "net": "SIG6",
   "direction": "out",
   "notes": "Servo joint 6"
  },
  {
   "gpio": 23,
   "devkit_label": "D23",
   "net": "SIG7",
   "direction": "out",
   "notes": "Servo joint 7"
  },
  {
   "gpio": 25,
   "devkit_label": "D25",
   "net": "SIG8",
   "direction": "out",
   "notes": "Servo joint 8 (neck)"
  },
  {
   "gpio": 21,
   "devkit_label": "D21",
   "net": "SDA",
   "direction": "i/o",
   "notes": "I2C data, 400 kHz, pull-ups on the breakouts"
  },
  {
   "gpio": 22,
   "devkit_label": "D22",
   "net": "SCL",
   "direction": "out",
   "notes": "I2C clock"
  },
  {
   "gpio": 27,
   "devkit_label": "D27",
   "net": "LATCH",
   "direction": "in",
   "notes": "Left head pin, internal pull-up, low = latched"
  },
  {
   "gpio": 34,
   "devkit_label": "D34",
   "net": "VSENSE",
   "direction": "in",
   "notes": "ADC1_CH6, input-only. Battery / 4.03 (100k over 33k)"
  },
  {
   "gpio": 2,
   "devkit_label": "D2",
   "net": "LED",
   "direction": "out",
   "notes": "On-board LED (30-pin DevKit V1). Strapping pin: LED + resistor keep it low at boot, fine"
  },
  {
   "gpio": null,
   "devkit_label": "5V / VIN",
   "net": "5V_LOGIC",
   "direction": "pwr",
   "notes": "From buck B. Feeds the DevKit AMS1117 3.3 V regulator"
  },
  {
   "gpio": null,
   "devkit_label": "3V3",
   "net": "3V3",
   "direction": "pwr",
   "notes": "Out of the DevKit regulator: both IMUs and INA219 logic (~10 mA total)"
  },
  {
   "gpio": null,
   "devkit_label": "GND",
   "net": "GND",
   "direction": "pwr",
   "notes": "Two GND pin stubs: one to the power board (H1), one to the mid IMU"
  }
 ],
 "i2c": {
  "clock_hz": 400000,
  "devices": {
   "0x40": "U2 INA219 (s5)",
   "0x68": "U4 MPU-6050 mid (s4, AD0 low)",
   "0x69": "U6 MPU-6050 head (s8, AD0 high)"
  },
  "pullups": "on breakouts to 3V3: GY-521 x2 (4.7k or 2.2k) || INA219 10k = 1.9 k or 1.0 k",
  "timeout_ms": 3,
  "bus_length_mm": 330
 },
 "power": {
  "servo_rail_V": 5.0,
  "ina219_shunt_ohm": 0.05,
  "ina219_range_A": 6.4,
  "ina219_mA_per_lsb": 0.2,
  "policy_current_obs": "min(amps, 3.2) / 3.0 (unchanged, matches sim)",
  "fuse": "PTC 3 A hold / 6 A trip in the battery + lead",
  "battery_connector": "XT30 (PH2.0 is rated ~2 A); on s3 front block at -y, battery stood on its long edge",
  "low_battery_cutoff": "6.6 V for 2 s, latched; deep sleep 30 s later"
 },
 "perfboard": {
  "size_mm": [
   66,
   20.5
  ],
  "grid": "26 columns (across the link) x 8 rows (along the body), 2.54 mm, pad-per-hole (no cuts)",
  "placement": "s5 front block, link x 19.0..39.5, y -33..+33, on 1 mm foam; board top z 10.6",
  "heights_z_mm": {
   "buck stack (U3 under U1)": 23.4,
   "U2 + C2 lying on it": 21.0,
   "R1/R2 standing": 20.5,
   "J1 + servo plugs": 27.1
  },
  "bottom_jumpers": [
   {
    "net": "5V_SERVO",
    "from_": "22G",
    "to": "25G",
    "what": "JB1: 24 AWG insulated, bottom, 22G -> stub of 25G"
   },
   {
    "net": "GND",
    "from_": "22H",
    "to": "26H",
    "what": "JB2: 24 AWG insulated, bottom, 22H -> stub of 26H"
   }
  ],
  "holes": {
   "1A": {
    "net": "VBAT_F",
    "use": "battery + (red 22 AWG, after F1)"
   },
   "13A": {
    "net": "5V_LOGIC",
    "use": "U3 OUT+ leg + H1 5V (red)"
   },
   "23A": {
    "net": "SIG1",
    "use": "H1 SIG1 (brown)"
   },
   "24A": {
    "net": "SIG1",
    "use": "J1 S1"
   },
   "25A": {
    "net": "5V_SERVO",
    "use": "J1 +1"
   },
   "26A": {
    "net": "GND",
    "use": "J1 G1"
   },
   "1B": {
    "net": "VBAT_F",
    "use": "U1 IN+ and U3 IN+ legs"
   },
   "13B": {
    "net": "LATCH",
    "use": "H1 LATCH + H2 LATCH (white), tie point only"
   },
   "23B": {
    "net": "SIG2",
    "use": "H1 SIG2 (red)"
   },
   "24B": {
    "net": "SIG2",
    "use": "J1 S2"
   },
   "25B": {
    "net": "5V_SERVO",
    "use": "J1 +2"
   },
   "26B": {
    "net": "GND",
    "use": "J1 G2"
   },
   "1C": {
    "net": "VBAT_F",
    "use": "R1 top"
   },
   "13C": {
    "net": "GND",
    "use": "U2 GND leg"
   },
   "23C": {
    "net": "SIG3",
    "use": "H1 SIG3 (orange)"
   },
   "24C": {
    "net": "SIG3",
    "use": "J1 S3"
   },
   "25C": {
    "net": "5V_SERVO",
    "use": "J1 +3"
   },
   "26C": {
    "net": "GND",
    "use": "J1 G3"
   },
   "1D": {
    "net": "VSENSE",
    "use": "R1 bottom + H1 VSENSE (violet)"
   },
   "13D": {
    "net": "GND",
    "use": "H1 GND (black)"
   },
   "23D": {
    "net": "SIG4",
    "use": "H1 SIG4 (yellow)"
   },
   "24D": {
    "net": "SIG4",
    "use": "J1 S4"
   },
   "25D": {
    "net": "5V_SERVO",
    "use": "J1 +4"
   },
   "26D": {
    "net": "GND",
    "use": "J1 G4"
   },
   "1E": {
    "net": "VSENSE",
    "use": "R2 top + C3"
   },
   "13E": {
    "net": "GND",
    "use": "trace"
   },
   "23E": {
    "net": "SIG5",
    "use": "H1 SIG5 (green)"
   },
   "24E": {
    "net": "SIG5",
    "use": "J1 S5"
   },
   "25E": {
    "net": "5V_SERVO",
    "use": "J1 +5"
   },
   "26E": {
    "net": "GND",
    "use": "J1 G5"
   },
   "1F": {
    "net": "GND",
    "use": "R2 bottom + C3"
   },
   "2F": {
    "net": "GND",
    "use": "trace"
   },
   "3F": {
    "net": "GND",
    "use": "trace"
   },
   "4F": {
    "net": "GND",
    "use": "trace"
   },
   "5F": {
    "net": "GND",
    "use": "trace"
   },
   "6F": {
    "net": "GND",
    "use": "trace"
   },
   "7F": {
    "net": "GND",
    "use": "trace"
   },
   "8F": {
    "net": "GND",
    "use": "trace"
   },
   "9F": {
    "net": "GND",
    "use": "trace"
   },
   "10F": {
    "net": "GND",
    "use": "trace"
   },
   "11F": {
    "net": "GND",
    "use": "trace"
   },
   "12F": {
    "net": "GND",
    "use": "trace"
   },
   "13F": {
    "net": "GND",
    "use": "trace"
   },
   "23F": {
    "net": "SIG6",
    "use": "H1 SIG6 (blue)"
   },
   "24F": {
    "net": "SIG6",
    "use": "J1 S6"
   },
   "25F": {
    "net": "5V_SERVO",
    "use": "J1 +6"
   },
   "26F": {
    "net": "GND",
    "use": "J1 G6"
   },
   "1G": {
    "net": "GND",
    "use": "U1 GND and U3 GND legs"
   },
   "13G": {
    "net": "5V_SERVO",
    "use": "W2 from U2 VIN- + C2 +"
   },
   "14G": {
    "net": "5V_SERVO",
    "use": "trace"
   },
   "15G": {
    "net": "5V_SERVO",
    "use": "trace"
   },
   "16G": {
    "net": "5V_SERVO",
    "use": "trace"
   },
   "17G": {
    "net": "5V_SERVO",
    "use": "trace"
   },
   "18G": {
    "net": "5V_SERVO",
    "use": "trace"
   },
   "19G": {
    "net": "5V_SERVO",
    "use": "trace"
   },
   "20G": {
    "net": "5V_SERVO",
    "use": "trace"
   },
   "21G": {
    "net": "5V_SERVO",
    "use": "trace"
   },
   "22G": {
    "net": "5V_SERVO",
    "use": "trace"
   },
   "23G": {
    "net": "SIG7",
    "use": "H1 SIG7 (violet)"
   },
   "24G": {
    "net": "SIG7",
    "use": "J1 S7"
   },
   "25G": {
    "net": "5V_SERVO",
    "use": "J1 +7"
   },
   "26G": {
    "net": "GND",
    "use": "J1 G7"
   },
   "1H": {
    "net": "GND",
    "use": "battery - (black 22 AWG)"
   },
   "2H": {
    "net": "GND",
    "use": "trace"
   },
   "3H": {
    "net": "GND",
    "use": "trace"
   },
   "4H": {
    "net": "GND",
    "use": "trace"
   },
   "5H": {
    "net": "GND",
    "use": "trace"
   },
   "6H": {
    "net": "GND",
    "use": "trace"
   },
   "7H": {
    "net": "GND",
    "use": "trace"
   },
   "8H": {
    "net": "GND",
    "use": "trace"
   },
   "9H": {
    "net": "GND",
    "use": "trace"
   },
   "10H": {
    "net": "GND",
    "use": "trace"
   },
   "11H": {
    "net": "GND",
    "use": "trace"
   },
   "12H": {
    "net": "GND",
    "use": "trace"
   },
   "13H": {
    "net": "GND",
    "use": "C2 -"
   },
   "14H": {
    "net": "GND",
    "use": "trace"
   },
   "15H": {
    "net": "GND",
    "use": "trace"
   },
   "16H": {
    "net": "GND",
    "use": "trace"
   },
   "17H": {
    "net": "GND",
    "use": "trace"
   },
   "18H": {
    "net": "GND",
    "use": "trace"
   },
   "19H": {
    "net": "GND",
    "use": "trace"
   },
   "20H": {
    "net": "GND",
    "use": "trace"
   },
   "21H": {
    "net": "GND",
    "use": "trace"
   },
   "22H": {
    "net": "GND",
    "use": "trace"
   },
   "23H": {
    "net": "SIG8",
    "use": "H1 SIG8 (grey)"
   },
   "24H": {
    "net": "SIG8",
    "use": "J1 S8"
   },
   "25H": {
    "net": "5V_SERVO",
    "use": "J1 +8"
   },
   "26H": {
    "net": "GND",
    "use": "J1 G8"
   }
  },
  "bottom_traces": [
   {
    "net": "VBAT_F",
    "path": [
     "1A",
     "1B",
     "1C"
    ]
   },
   {
    "net": "VSENSE",
    "path": [
     "1D",
     "1E"
    ]
   },
   {
    "net": "GND",
    "path": [
     "1F",
     "1G",
     "1H"
    ]
   },
   {
    "net": "GND",
    "path": [
     "1F",
     "2F",
     "3F",
     "4F",
     "5F",
     "6F",
     "7F",
     "8F",
     "9F",
     "10F",
     "11F",
     "12F",
     "13F"
    ]
   },
   {
    "net": "GND",
    "path": [
     "13C",
     "13D",
     "13E",
     "13F"
    ]
   },
   {
    "net": "GND",
    "path": [
     "1H",
     "2H",
     "3H",
     "4H",
     "5H",
     "6H",
     "7H",
     "8H",
     "9H",
     "10H",
     "11H",
     "12H",
     "13H",
     "14H",
     "15H",
     "16H",
     "17H",
     "18H",
     "19H",
     "20H",
     "21H",
     "22H"
    ]
   },
   {
    "net": "5V_SERVO",
    "path": [
     "13G",
     "14G",
     "15G",
     "16G",
     "17G",
     "18G",
     "19G",
     "20G",
     "21G",
     "22G"
    ]
   },
   {
    "net": "5V_SERVO",
    "path": [
     "25A",
     "25B",
     "25C",
     "25D",
     "25E",
     "25F",
     "25G",
     "25H"
    ]
   },
   {
    "net": "GND",
    "path": [
     "26A",
     "26B",
     "26C",
     "26D",
     "26E",
     "26F",
     "26G",
     "26H"
    ]
   },
   {
    "net": "SIG1",
    "path": [
     "23A",
     "24A"
    ]
   },
   {
    "net": "SIG2",
    "path": [
     "23B",
     "24B"
    ]
   },
   {
    "net": "SIG3",
    "path": [
     "23C",
     "24C"
    ]
   },
   {
    "net": "SIG4",
    "path": [
     "23D",
     "24D"
    ]
   },
   {
    "net": "SIG5",
    "path": [
     "23E",
     "24E"
    ]
   },
   {
    "net": "SIG6",
    "path": [
     "23F",
     "24F"
    ]
   },
   {
    "net": "SIG7",
    "path": [
     "23G",
     "24G"
    ]
   },
   {
    "net": "SIG8",
    "path": [
     "23H",
     "24H"
    ]
   }
  ],
  "flying_wires": [
   {
    "id": "W1",
    "from_": "U1 OUT+ pad (top buck)",
    "to": "U2 VIN+ pad",
    "net": "5V_SHUNT_IN",
    "wire": "22 AWG red, ~10 mm"
   },
   {
    "id": "W2",
    "from_": "U2 VIN- pad",
    "to": "hole 13G",
    "net": "5V_SERVO",
    "wire": "22 AWG red, ~12 mm"
   }
  ],
  "top_parts_joining_nets": [
   {
    "part": "R1",
    "between": [
     "VBAT_F",
     "VSENSE"
    ]
   },
   {
    "part": "R2",
    "between": [
     "VSENSE",
     "GND"
    ]
   },
   {
    "part": "C3",
    "between": [
     "VSENSE",
     "GND"
    ]
   },
   {
    "part": "C2",
    "between": [
     "5V_SERVO",
     "GND"
    ]
   },
   {
    "part": "U2 shunt + R5",
    "between": [
     "5V_SHUNT_IN",
     "5V_SERVO"
    ]
   }
  ]
 },
 "wires": [
  {
   "id": "B1",
   "harness": "BAT",
   "net": "VBAT_F",
   "from": "BT1.+ via J0 (XT30, on s3) and F1 (in heat-shrink)",
   "to": "board 1A",
   "colour": "red",
   "awg": 22,
   "length_mm": 150,
   "from_link": "s3",
   "to_link": "s5",
   "crosses": [
    "j4",
    "j5"
   ],
   "note": "XT30 lies on the s3 front block at -y; lead runs along the -y edge of s4 (y -33..-19), clear of the ESP32"
  },
  {
   "id": "B2",
   "harness": "BAT",
   "net": "GND",
   "from": "BT1.- via J0 (XT30)",
   "to": "board 1H",
   "colour": "black",
   "awg": 22,
   "length_mm": 150,
   "from_link": "s3",
   "to_link": "s5",
   "crosses": [
    "j4",
    "j5"
   ],
   "note": "twisted with B1"
  },
  {
   "id": "H1-1",
   "harness": "H1a",
   "net": "SIG1",
   "from": "U5.GPIO13",
   "to": "board 23A -> J1.S1",
   "colour": "brown",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "28 AWG silicone, soldered to the cut pin stub on top of the DevKit spacer; colour = servo number in resistor code"
  },
  {
   "id": "H1-2",
   "harness": "H1a",
   "net": "SIG2",
   "from": "U5.GPIO26",
   "to": "board 23B -> J1.S2",
   "colour": "red",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "28 AWG silicone, soldered to the cut pin stub on top of the DevKit spacer; colour = servo number in resistor code"
  },
  {
   "id": "H1-3",
   "harness": "H1a",
   "net": "SIG3",
   "from": "U5.GPIO16",
   "to": "board 23C -> J1.S3",
   "colour": "orange",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "28 AWG silicone, soldered to the cut pin stub on top of the DevKit spacer; colour = servo number in resistor code"
  },
  {
   "id": "H1-4",
   "harness": "H1a",
   "net": "SIG4",
   "from": "U5.GPIO17",
   "to": "board 23D -> J1.S4",
   "colour": "yellow",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "28 AWG silicone, soldered to the cut pin stub on top of the DevKit spacer; colour = servo number in resistor code"
  },
  {
   "id": "H1-5",
   "harness": "H1a",
   "net": "SIG5",
   "from": "U5.GPIO18",
   "to": "board 23E -> J1.S5",
   "colour": "green",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "28 AWG silicone, soldered to the cut pin stub on top of the DevKit spacer; colour = servo number in resistor code"
  },
  {
   "id": "H1-6",
   "harness": "H1a",
   "net": "SIG6",
   "from": "U5.GPIO19",
   "to": "board 23F -> J1.S6",
   "colour": "blue",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "28 AWG silicone, soldered to the cut pin stub on top of the DevKit spacer; colour = servo number in resistor code"
  },
  {
   "id": "H1-7",
   "harness": "H1a",
   "net": "SIG7",
   "from": "U5.GPIO23",
   "to": "board 23G -> J1.S7",
   "colour": "violet",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "28 AWG silicone, soldered to the cut pin stub on top of the DevKit spacer; colour = servo number in resistor code"
  },
  {
   "id": "H1-8",
   "harness": "H1a",
   "net": "SIG8",
   "from": "U5.GPIO25",
   "to": "board 23H -> J1.S8",
   "colour": "grey",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "28 AWG silicone, soldered to the cut pin stub on top of the DevKit spacer; colour = servo number in resistor code"
  },
  {
   "id": "H1-9",
   "harness": "H1b",
   "net": "5V_LOGIC",
   "from": "U5.5V",
   "to": "board 13A",
   "colour": "red",
   "awg": 26,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "26 AWG silicone, soldered to the cut pin stub on top of the DevKit spacer"
  },
  {
   "id": "H1-10",
   "harness": "H1b",
   "net": "GND",
   "from": "U5.GND",
   "to": "board 13D",
   "colour": "black",
   "awg": 26,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "26 AWG silicone, soldered to the cut pin stub on top of the DevKit spacer"
  },
  {
   "id": "H1-11",
   "harness": "H1b",
   "net": "3V3",
   "from": "U5.3V3",
   "to": "U2 VCC pad",
   "colour": "orange",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "soldered to the cut pin stub on top of the DevKit spacer (2nd wire on the 3V3 stub)"
  },
  {
   "id": "H1-12",
   "harness": "H1b",
   "net": "SDA",
   "from": "U5.GPIO21",
   "to": "U2 SDA pad",
   "colour": "blue",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "soldered to the cut pin stub on top of the DevKit spacer (2nd wire on the stub)"
  },
  {
   "id": "H1-13",
   "harness": "H1b",
   "net": "SCL",
   "from": "U5.GPIO22",
   "to": "U2 SCL pad",
   "colour": "yellow",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "soldered to the cut pin stub on top of the DevKit spacer (2nd wire on the stub)"
  },
  {
   "id": "H1-14",
   "harness": "H1b",
   "net": "LATCH",
   "from": "U5.GPIO27",
   "to": "board 13B",
   "colour": "white",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "soldered to the cut pin stub on top of the DevKit spacer"
  },
  {
   "id": "H1-15",
   "harness": "H1b",
   "net": "VSENSE",
   "from": "U5.GPIO34",
   "to": "board 1D",
   "colour": "violet",
   "awg": 28,
   "length_mm": 90,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "soldered to the cut pin stub on top of the DevKit spacer"
  },
  {
   "id": "M-1",
   "harness": "MID",
   "net": "3V3",
   "from": "U5.3V3",
   "to": "U4.VCC",
   "colour": "orange",
   "awg": 28,
   "length_mm": 30,
   "from_link": "s4",
   "to_link": "s4",
   "crosses": [],
   "note": "soldered to the cut pin stub on top of the DevKit spacer; U4 sits on the ESP32 module can"
  },
  {
   "id": "M-2",
   "harness": "MID",
   "net": "GND",
   "from": "U5.GND (second GND pin)",
   "to": "U4.GND",
   "colour": "black",
   "awg": 28,
   "length_mm": 30,
   "from_link": "s4",
   "to_link": "s4",
   "crosses": [],
   "note": "soldered to the cut pin stub on top of the DevKit spacer; U4 sits on the ESP32 module can"
  },
  {
   "id": "M-3",
   "harness": "MID",
   "net": "SDA",
   "from": "U5.GPIO21",
   "to": "U4.SDA",
   "colour": "blue",
   "awg": 28,
   "length_mm": 30,
   "from_link": "s4",
   "to_link": "s4",
   "crosses": [],
   "note": "soldered to the cut pin stub on top of the DevKit spacer; U4 sits on the ESP32 module can"
  },
  {
   "id": "M-4",
   "harness": "MID",
   "net": "SCL",
   "from": "U5.GPIO22",
   "to": "U4.SCL",
   "colour": "yellow",
   "awg": 28,
   "length_mm": 30,
   "from_link": "s4",
   "to_link": "s4",
   "crosses": [],
   "note": "soldered to the cut pin stub on top of the DevKit spacer; U4 sits on the ESP32 module can"
  },
  {
   "id": "M-5",
   "harness": "MID",
   "net": "GND",
   "from": "U4.AD0",
   "to": "U4.GND",
   "colour": "bare",
   "awg": 30,
   "length_mm": 5,
   "from_link": "s4",
   "to_link": "s4",
   "crosses": [],
   "note": "solder bridge on the GY-521"
  },
  {
   "id": "H2-1",
   "harness": "H2",
   "net": "SDA",
   "from": "U2 SDA pad (2nd wire)",
   "to": "U6.SDA",
   "colour": "blue",
   "awg": 26,
   "length_mm": 230,
   "from_link": "s5",
   "to_link": "s8",
   "crosses": [
    "j6",
    "j7",
    "j8"
   ],
   "note": "bundle order SDA, GND, SCL, 3V3, LATCH; runs at y -20..-10 on s6/s7, away from the servo-lead channel"
  },
  {
   "id": "H2-2",
   "harness": "H2",
   "net": "GND",
   "from": "U2 GND pad (2nd wire)",
   "to": "U6.GND",
   "colour": "black",
   "awg": 26,
   "length_mm": 230,
   "from_link": "s5",
   "to_link": "s8",
   "crosses": [
    "j6",
    "j7",
    "j8"
   ],
   "note": ""
  },
  {
   "id": "H2-3",
   "harness": "H2",
   "net": "SCL",
   "from": "U2 SCL pad (2nd wire)",
   "to": "U6.SCL",
   "colour": "yellow",
   "awg": 26,
   "length_mm": 230,
   "from_link": "s5",
   "to_link": "s8",
   "crosses": [
    "j6",
    "j7",
    "j8"
   ],
   "note": ""
  },
  {
   "id": "H2-4",
   "harness": "H2",
   "net": "3V3",
   "from": "U2 VCC pad (2nd wire)",
   "to": "U6.VCC",
   "colour": "orange",
   "awg": 26,
   "length_mm": 230,
   "from_link": "s5",
   "to_link": "s8",
   "crosses": [
    "j6",
    "j7",
    "j8"
   ],
   "note": ""
  },
  {
   "id": "H2-5",
   "harness": "H2",
   "net": "LATCH",
   "from": "board 13B (2nd wire)",
   "to": "P1 (left head pin ring lug)",
   "colour": "white",
   "awg": 26,
   "length_mm": 250,
   "from_link": "s5",
   "to_link": "s8",
   "crosses": [
    "j6",
    "j7",
    "j8"
   ],
   "note": ""
  },
  {
   "id": "S-1",
   "harness": "HEAD",
   "net": "GND",
   "from": "U6.GND",
   "to": "P2 (right head pin ring lug)",
   "colour": "black",
   "awg": 26,
   "length_mm": 40,
   "from_link": "s8",
   "to_link": "s8",
   "crosses": [],
   "note": ""
  },
  {
   "id": "S-2",
   "harness": "HEAD",
   "net": "3V3",
   "from": "U6.AD0",
   "to": "U6.VCC",
   "colour": "bare",
   "awg": 30,
   "length_mm": 5,
   "from_link": "s8",
   "to_link": "s8",
   "crosses": [],
   "note": "solder bridge on the GY-521: address 0x69"
  },
  {
   "id": "S-3",
   "harness": "TAIL",
   "net": "LATCH_BRIDGE",
   "from": "tail notch left",
   "to": "tail notch right",
   "colour": "bare",
   "awg": 22,
   "length_mm": 40,
   "from_link": "s0",
   "to_link": "s0",
   "crosses": [],
   "note": "one wire per notch, joined across the back (mechanical.md 6)"
  },
  {
   "id": "SV1",
   "harness": "SERVO",
   "net": "SIG1 / 5V_SERVO / GND",
   "from": "M1 (front cradle of s0)",
   "to": "J1 row A (board s5)",
   "colour": "orange/red/brown (servo lead)",
   "awg": 28,
   "length_mm": 387,
   "from_link": "s0",
   "to_link": "s5",
   "crosses": [
    "j1",
    "j2",
    "j3",
    "j4",
    "j5"
   ],
   "note": "147 mm short: 20 cm extension (53 mm spare)"
  },
  {
   "id": "SV2",
   "harness": "SERVO",
   "net": "SIG2 / 5V_SERVO / GND",
   "from": "M2 (front cradle of s1)",
   "to": "J1 row B (board s5)",
   "colour": "orange/red/brown (servo lead)",
   "awg": 28,
   "length_mm": 324,
   "from_link": "s1",
   "to_link": "s5",
   "crosses": [
    "j2",
    "j3",
    "j4",
    "j5"
   ],
   "note": "84 mm short: 15 cm extension (66 mm spare)"
  },
  {
   "id": "SV3",
   "harness": "SERVO",
   "net": "SIG3 / 5V_SERVO / GND",
   "from": "M3 (front cradle of s2)",
   "to": "J1 row C (board s5)",
   "colour": "orange/red/brown (servo lead)",
   "awg": 28,
   "length_mm": 261,
   "from_link": "s2",
   "to_link": "s5",
   "crosses": [
    "j3",
    "j4",
    "j5"
   ],
   "note": "21 mm short: 15 cm extension (129 mm spare)"
  },
  {
   "id": "SV4",
   "harness": "SERVO",
   "net": "SIG4 / 5V_SERVO / GND",
   "from": "M4 (front cradle of s3)",
   "to": "J1 row D (board s5)",
   "colour": "orange/red/brown (servo lead)",
   "awg": 28,
   "length_mm": 198,
   "from_link": "s3",
   "to_link": "s5",
   "crosses": [
    "j4",
    "j5"
   ],
   "note": "own lead, 42 mm spare: coil it in the channel"
  },
  {
   "id": "SV5",
   "harness": "SERVO",
   "net": "SIG5 / 5V_SERVO / GND",
   "from": "M5 (front cradle of s4)",
   "to": "J1 row E (board s5)",
   "colour": "orange/red/brown (servo lead)",
   "awg": 28,
   "length_mm": 135,
   "from_link": "s4",
   "to_link": "s5",
   "crosses": [
    "j5"
   ],
   "note": "own lead, 105 mm spare: coil it in the channel"
  },
  {
   "id": "SV6",
   "harness": "SERVO",
   "net": "SIG6 / 5V_SERVO / GND",
   "from": "M6 (front cradle of s5)",
   "to": "J1 row F (board s5)",
   "colour": "orange/red/brown (servo lead)",
   "awg": 28,
   "length_mm": 72,
   "from_link": "s5",
   "to_link": "s5",
   "crosses": [],
   "note": "own lead, 168 mm spare: coil it in the channel"
  },
  {
   "id": "SV7",
   "harness": "SERVO",
   "net": "SIG7 / 5V_SERVO / GND",
   "from": "M7 (front cradle of s6)",
   "to": "J1 row G (board s5)",
   "colour": "orange/red/brown (servo lead)",
   "awg": 28,
   "length_mm": 133,
   "from_link": "s6",
   "to_link": "s5",
   "crosses": [
    "j6"
   ],
   "note": "own lead, 107 mm spare: coil it in the channel"
  },
  {
   "id": "SV8",
   "harness": "SERVO",
   "net": "SIG8 / 5V_SERVO / GND",
   "from": "M8 (front cradle of s7)",
   "to": "J1 row H (board s5)",
   "colour": "orange/red/brown (servo lead)",
   "awg": 28,
   "length_mm": 196,
   "from_link": "s7",
   "to_link": "s5",
   "crosses": [
    "j6",
    "j7"
   ],
   "note": "own lead, 44 mm spare: coil it in the channel"
  }
 ],
 "servo_leads": {
  "source": "cad/check_fit.py (h); servo k in the front cradle of s(k-1), drives joint k, header J1 on s5",
  "mg90s_lead_mm": 240,
  "extensions_mm": {
   "M1": 200,
   "M2": 150,
   "M3": 150
  }
 }
}