{
  "name": "Locus citizen grow kit",
  "id": "kit-grow-p0",
  "version": "1.0.0",
  "updated": "2026-07-25",
  "scheme": "grow_your_own_energy",
  "prototype": "P0",
  "href": "/locus/kit",
  "goal": "Build a measured match-frequency bench: fixed load baseline vs MPPT under co-logged irradiance",
  "currency": "USD",
  "materials_mid_usd": 229,
  "materials_range_usd": {
    "low": 140,
    "mid": 215,
    "high": 340
  },
  "note": "Example catalog part numbers that are commonly stocked. Verify stock and substitutes. Not an exclusive supply deal. Prices mid-2026 order of magnitude.",
  "bom": [
    {
      "item": "20 W mono PV module",
      "qty": 1,
      "vendor": "Renogy / HQST / Newpowa class",
      "example_pn": "RNG-20D-SS",
      "channel": "solar_retail",
      "mid_usd": 35,
      "role": "pv"
    },
    {
      "item": "Small MPPT with input V/I visibility",
      "qty": 1,
      "vendor": "EPEver / Victron dealer",
      "example_pn": "Tracer1210AN or SmartSolar 75/10",
      "channel": "solar_retail",
      "mid_usd": 45,
      "role": "mppt"
    },
    {
      "item": "Power resistors chassis mount (load bank)",
      "qty": 4,
      "vendor": "Digi-Key / Mouser",
      "example_pn": "TE HSC100 series 10\u201325 \u03a9 100 W class",
      "channel": "electronics_dist",
      "mid_usd": 28,
      "role": "load"
    },
    {
      "item": "Aluminum heatsink for resistors",
      "qty": 1,
      "vendor": "Digi-Key / McMaster",
      "example_pn": "Wakefield-Vette extrusions / McMaster 3237K class",
      "channel": "industrial",
      "mid_usd": 12,
      "role": "load"
    },
    {
      "item": "ESP32 DevKit logger",
      "qty": 1,
      "vendor": "Digi-Key / Adafruit / Espressif",
      "example_pn": "ESP32-DevKitC-32E",
      "channel": "electronics_dist",
      "mid_usd": 12,
      "role": "logger"
    },
    {
      "item": "High-side current/power sense breakout",
      "qty": 2,
      "vendor": "Adafruit / Digi-Key",
      "example_pn": "INA219 or INA226 breakout",
      "channel": "maker",
      "mid_usd": 16,
      "role": "sensor"
    },
    {
      "item": "Lux meter or pyranometer proxy",
      "qty": 1,
      "vendor": "UNI-T / Apogee class",
      "example_pn": "UT383 / SP-110-class",
      "channel": "metrology",
      "mid_usd": 35,
      "role": "sensor"
    },
    {
      "item": "Project enclosure + glands",
      "qty": 1,
      "vendor": "McMaster / Polycase",
      "example_pn": "Bud PN-series / McMaster 7360K class",
      "channel": "industrial",
      "mid_usd": 18,
      "role": "other"
    },
    {
      "item": "MC4 branch + 12 AWG PV wire short set",
      "qty": 1,
      "vendor": "solar retail",
      "example_pn": "MC4 connector pair kit",
      "channel": "solar_retail",
      "mid_usd": 12,
      "role": "other"
    },
    {
      "item": "Fuse holder + 10\u201315 A fuse",
      "qty": 1,
      "vendor": "Digi-Key",
      "example_pn": "Littelfuse panel fuse holder",
      "channel": "electronics_dist",
      "mid_usd": 6,
      "role": "other"
    },
    {
      "item": "Hookup wire, ferrules, banana posts",
      "qty": 1,
      "vendor": "Digi-Key / Amazon industrial",
      "example_pn": "assorted 18\u201322 AWG kit",
      "channel": "electronics_dist",
      "mid_usd": 10,
      "role": "other"
    },
    {
      "item": "Optional 12 V 7\u201312 Ah buffer",
      "qty": 1,
      "vendor": "Renogy / SLA suppliers",
      "example_pn": "12V 7Ah AGM",
      "channel": "solar_retail",
      "mid_usd": 25,
      "role": "battery",
      "optional": true
    }
  ],
  "assemble": [
    "Photograph empty bench; open a lab-log id YYYYMMDD-HHMM-p0-kit-yourslug.",
    "Mount PV on stand facing sky or sun lamp; note tilt. Wire MC4 \u2192 fused path.",
    "Build fixed load: paralleled chassis resistors on heatsink sized for ~panel max power.",
    "Wire arm A: PV \u2192 fuse \u2192 fixed load. Sense V and I (or P) at panel and load; log G.",
    "Log \u226510 min clear or interleaved window (baseline).",
    "Wire arm B without moving panel: PV \u2192 MPPT \u2192 same load class (or electronic load). Prefer controller that exposes input V/I.",
    "Log \u226510 min comparable G (interleave if sky changes).",
    "Compute \u222bP dt both arms; set status pass if MPPT energy > baseline under comparable G.",
    "File JSON conforming to /locus/lab-log.schema.json; keep photos of setup."
  ],
  "pass": "Under comparable irradiance, MPPT arm delivers more energy than fixed-load baseline. Both curves stored.",
  "links": {
    "build": "/locus/build#p0",
    "measure": "/locus/measure",
    "costs": "/locus/costs#costs-materials-only",
    "sourcing": "/locus/costs#costs-sourcing",
    "example_run": "/locus/runs/20260725-1500-p0-mppt-bench-sim.json",
    "schema": "/locus/lab-log.schema.json"
  },
  "materials_mid_usd_with_optional": 254
}
