rushabhcodes/desk-fidget-counter

A desk knob assembly combining a circuit board with PETG-printed mechanical parts and vendor CAD-modeled hardware.

Version
5.6.1
License
MIT
Stars
0

reference/component-audit.json

{
  "baseline": "v4.1.0 / 45 components",
  "revision": "Rev E3 / v5.2.0",
  "active_component_count": 38,
  "sources": {
    "STM32": "https://www.st.com/resource/en/datasheet/stm32f072cb.pdf",
    "STM32_hardware": "https://www.st.com/resource/en/application_note/an4080-getting-started-with-stm32f0x1x2x8-hardware-development-stmicroelectronics.pdf",
    "USB_ESD": "https://www.st.com/resource/en/datasheet/usblc6-2.pdf",
    "button": "https://omronfs.omron.com/en_US/ecb/products/pdf/en-b3u.pdf",
    "C8": "https://www.farnell.com/datasheets/3973279.pdf",
    "C10": "https://www.farnell.com/datasheets/4087776.pdf"
  },
  "baseline_components": [
    {
      "reference": "C1",
      "previous_mpn": "GRM188R71C104KA01D",
      "decision": "keep",
      "reason": "Local VBUS reference decoupling for USBLC6-2SC6."
    },
    {
      "reference": "C2",
      "previous_mpn": "GRM188R61A105KA61D",
      "decision": "keep",
      "reason": "Load-switch input bypass."
    },
    {
      "reference": "C3",
      "previous_mpn": "GRM188R61A105KA61D",
      "decision": "keep",
      "reason": "Load-switch output bypass."
    },
    {
      "reference": "C5",
      "previous_mpn": "GRM188R61A105KA61D",
      "decision": "keep",
      "reason": "LDO input stability and local transient supply."
    },
    {
      "reference": "C6",
      "previous_mpn": "GRM21BR61A475KA73L",
      "decision": "replace",
      "reason": "Replace obsolete Murata GRM21BR61A475KA73L with mass-production Samsung 4.7uF 16V X5R 10% 0805; same lands and nominal body.",
      "new_mpn": "CL21A475KOFNNNE"
    },
    {
      "reference": "C7",
      "previous_mpn": "GRM188R71C104KA01D",
      "decision": "keep",
      "reason": "Local VBAT bypass with VBAT tied directly to VDD."
    },
    {
      "reference": "C8",
      "previous_mpn": "GRM188R71C104KA01D",
      "decision": "change_value",
      "reason": "Change to Murata GRM155R71H103KA88D, 10 nF 50 V X7R 0402, for a compact local VDDA bypass; C17 provides 1 uF.",
      "new_mpn": "GRM155R71H103KA88D"
    },
    {
      "reference": "C9",
      "previous_mpn": "GRM188R71C104KA01D",
      "decision": "keep",
      "reason": "Local digital VDD1 bypass."
    },
    {
      "reference": "C10",
      "previous_mpn": "GRM188R71C104KA01D",
      "decision": "replace",
      "reason": "Retain 100 nF VDDIO2 bypass in a smaller 0402 package for short local routing; C18 provides local bulk.",
      "new_mpn": "GRM155R71C104KA88D"
    },
    {
      "reference": "C11",
      "previous_mpn": "GRM188R71C104KA01D",
      "decision": "keep",
      "reason": "Local digital VDD2 bypass."
    },
    {
      "reference": "C12",
      "previous_mpn": "GRM21BR61A475KA73L",
      "decision": "replace",
      "reason": "Replace obsolete Murata GRM21BR61A475KA73L with mass-production Samsung 4.7uF 16V X5R 10% 0805; same lands and nominal body.",
      "new_mpn": "CL21A475KOFNNNE"
    },
    {
      "reference": "C13",
      "previous_mpn": "GRM188R71C104KA01D",
      "decision": "keep",
      "reason": "NRST noise filter; retain with internal reset pull-up."
    },
    {
      "reference": "C14",
      "previous_mpn": "GRM188R71C104KA01D",
      "decision": "keep",
      "reason": "Schmitt-buffer local bypass."
    },
    {
      "reference": "C15",
      "previous_mpn": "GRM188R61A105KA61D",
      "decision": "keep",
      "reason": "Local display-harness supply bypass."
    },
    {
      "reference": "C16",
      "previous_mpn": "GRM188R71C104KA01D",
      "decision": "keep",
      "reason": "FRAM local bypass."
    },
    {
      "reference": "D1",
      "previous_mpn": "PESD5V0S1BA,115",
      "decision": "remove",
      "reason": "Duplicate VBUS ESD clamp: retained USBLC6-2SC6 already protects VBUS."
    },
    {
      "reference": "J1",
      "previous_mpn": "TYPE-C-31-M-12",
      "decision": "keep",
      "reason": "USB power and HID/CDC data connector."
    },
    {
      "reference": "J4",
      "previous_mpn": "B6B-PH-K-S(LF)(SN)",
      "decision": "keep",
      "reason": "Keyed JST programming, debug and boot access."
    },
    {
      "reference": "J6",
      "previous_mpn": "S8B-PH-K-S(LF)(SN)",
      "decision": "replace",
      "reason": "JST PH board header did not mate with included jumper sockets. J6 becomes 2.54mm cable-termination pads; optional male header DNP in compact supplied-cable build.",
      "new_mpn": "61300811021 (optional DNP)"
    },
    {
      "reference": "LED1",
      "previous_mpn": "LTST-C190KGKT",
      "decision": "remove",
      "reason": "Display already shows operating mode, USB and storage state."
    },
    {
      "reference": "R1",
      "previous_mpn": "RC0603FR-075K1L",
      "decision": "keep",
      "reason": "USB-C CC1 sink identification."
    },
    {
      "reference": "R2",
      "previous_mpn": "RC0603FR-075K1L",
      "decision": "keep",
      "reason": "USB-C CC2 sink identification."
    },
    {
      "reference": "R10",
      "previous_mpn": "RC0603FR-0710KL",
      "decision": "keep",
      "reason": "Defined BOOT0 state for reliable flash boot."
    },
    {
      "reference": "R11",
      "previous_mpn": "RC0603FR-0710KL",
      "decision": "remove",
      "reason": "NRST has an always-present internal pull-up; retain C13."
    },
    {
      "reference": "R12",
      "previous_mpn": "RC0603FR-074K7L",
      "decision": "keep",
      "reason": "I2C SDA pull-up for FRAM."
    },
    {
      "reference": "R13",
      "previous_mpn": "RC0603FR-074K7L",
      "decision": "keep",
      "reason": "I2C SCL pull-up for FRAM."
    },
    {
      "reference": "R14",
      "previous_mpn": "RC0603FR-0710KL",
      "decision": "remove",
      "reason": "PA0 internal pull-up is enabled by firmware for the mode button."
    },
    {
      "reference": "R15",
      "previous_mpn": "RC0603FR-0710KL",
      "decision": "remove",
      "reason": "Separate reset button is removed; long press uses the single front button."
    },
    {
      "reference": "R16",
      "previous_mpn": "RC0603FR-071KL",
      "decision": "remove",
      "reason": "LED current limiter is unnecessary after LED removal."
    },
    {
      "reference": "R21",
      "previous_mpn": "RC0603FR-07100KL",
      "decision": "keep",
      "reason": "Keeps the LCD/IR load switch off while the MCU is resetting."
    },
    {
      "reference": "R24",
      "previous_mpn": "RC0603FR-07150RL",
      "decision": "keep",
      "reason": "Limits optical-emitter current."
    },
    {
      "reference": "R25",
      "previous_mpn": "RC0603FR-0722KL",
      "decision": "keep",
      "reason": "Optical channel A emitter load."
    },
    {
      "reference": "R26",
      "previous_mpn": "RC0603FR-0722KL",
      "decision": "keep",
      "reason": "Optical channel B emitter load."
    },
    {
      "reference": "R27",
      "previous_mpn": "RC0603FR-0722RL",
      "decision": "keep",
      "reason": "SPI clock source damping for the display cable."
    },
    {
      "reference": "R28",
      "previous_mpn": "RC0603FR-0722RL",
      "decision": "keep",
      "reason": "SPI MOSI source damping for the display cable."
    },
    {
      "reference": "R29",
      "previous_mpn": "RC0603FR-071RL",
      "decision": "remove",
      "reason": "Backup supply does not need a series filter in this USB-only design."
    },
    {
      "reference": "SW1",
      "previous_mpn": "G12AH",
      "decision": "replace",
      "reason": "Original side-operated Omron switch moves to front PCB tab for direct finger access; no printed plunger or extra cap.",
      "new_mpn": "B3U-3000P"
    },
    {
      "reference": "SW2",
      "previous_mpn": "TS-1088-AR02016",
      "decision": "remove",
      "reason": "Combine count clearing with a three-second hold on the mode button."
    },
    {
      "reference": "U1",
      "previous_mpn": "STM32F072CBT6",
      "decision": "keep",
      "reason": "USB, optical decoding, LCD control and host telemetry."
    },
    {
      "reference": "U2",
      "previous_mpn": "TCUT1600X01_A",
      "decision": "keep",
      "reason": "Dual optical rotation sensor."
    },
    {
      "reference": "U3",
      "previous_mpn": "MB85RC256VPNF-G-AMERE2",
      "decision": "keep",
      "reason": "High-endurance, power-fail-safe retained turn count."
    },
    {
      "reference": "U4",
      "previous_mpn": "TPS22919DCKR",
      "decision": "keep",
      "reason": "Disconnects LCD and IR supply during USB suspend."
    },
    {
      "reference": "U5",
      "previous_mpn": "TLV75533PDBVR",
      "decision": "keep",
      "reason": "Regulates USB 5 V to 3.3 V."
    },
    {
      "reference": "U6",
      "previous_mpn": "USBLC6-2SC6",
      "decision": "keep",
      "reason": "Protects USB D+, D- and VBUS against ESD."
    },
    {
      "reference": "U7",
      "previous_mpn": "SN74LVC2G17DBVR",
      "decision": "keep",
      "reason": "Schmitt conditioning keeps optical threshold crossings clean."
    }
  ],
  "added_components": [
    {
      "reference": "C17",
      "capacitance": "1uF",
      "reason": "VDDA local bulk decoupling in addition to C8 10 nF.",
      "mpn": "GRM188R61A105KA61D"
    },
    {
      "reference": "C18",
      "capacitance": "4.7uF",
      "reason": "VDDIO2 local bulk decoupling in addition to C10 100 nF.",
      "mpn": "CL21A475KOFNNNE"
    }
  ],
  "mechanical_revision_note": "USB cluster J1/U6/C1/R1/R2 translated +9 mm on integral PCB tab; 39-part population and firmware 5.0.0 pin assignments retained.",
  "optional_unpopulated_components": [
    "J6"
  ],
  "display_cable": "Use the cable included with Waveshare 19192. Shorten and solder at J6; original PH plug retained. No custom harness required.",
  "prototype_sourcing_review": {
    "date": "2026-11-06",
    "J4": "Exact JST C131342 found with bunx tsci search --jlcpcb --json B6B-PH-K-S and matched in JLCPCB Standard manual assembly.",
    "U2": "Use genuine pre-PCN TCUT1600X01 / C511085 stocked at JLCPCB, with unchanged pinout, package and characteristics documented by Vishay PCN-OPT-1311-2024. Current TCUT1600X01_A / C24626661 had zero stock. Historical previous_mpn entries remain historical."
  }
}