assembly: "electronics"
description: "Main computing and control electronics"
components:
  - id: "nvidia_jetson_agx_orin"
    part_number: "JETSON-AGX-ORIN-DEVKIT"
    description: "NVIDIA Jetson AGX Orin Development Kit"
    category: "computer"
    quantity: 1
    unit_cost: 1500.00
    currency: "EUR"
    status: "active"
    criticality: "essential"
    suppliers:
      - name: "NVIDIA Developer"
        url: "https://developer.nvidia.com/embedded/learn/jetson-agx-orin-devkit-user-guide/"
        verified: true
      - name: "Authorized NVIDIA Distributors"
        notes: "Various electronics distributors"
    specifications:
      power_consumption: "TBD"
      voltage_range: "9-20VDC"
      typical_voltage: "19V"
      power_connector: "Barrel Jack 5.5mm OD 2.5mm ID center positive"
      gpu: "2048-core NVIDIA Ampere architecture GPU"
      cpu: "12-core Arm Cortex-A78AE"
      memory: "64GB LPDDR5"
    documentation:
      user_guide: "https://developer.nvidia.com/embedded/learn/jetson-agx-orin-devkit-user-guide/developer_kit_layout.html"
      datasheets: "https://developer.nvidia.com/embedded/downloads"
    notes: "Main autonomous driving computer"

  - id: "esp32_s3"
    part_number: "ESP32-S3-WROOM-1-N8R2"
    description: "ESP32-S3 microcontroller module (8 MB flash, 2 MB quad PSRAM) — target MCU for the next-revision Kart Medulla PCB"
    category: "microcontroller"
    quantity: 1
    unit_cost: 5.00
    currency: "EUR"
    status: "planned"
    criticality: "essential"
    suppliers:
      - name: "Mouser"
        url: "https://www.mouser.com/c/?q=ESP32-S3-WROOM-1-N8R2"
        verified: false
      - name: "AliExpress"
        url: "https://www.aliexpress.com/w/wholesale-ESP32-S3-WROOM-1-N8R2.html"
        verified: false
    specifications:
      voltage: "3.3V"
      temperature_range: "-40°C to +85°C"
      flash: "8 MB"
      psram: "2 MB (quad SPI)"
      ram: "512 KB SRAM"
      cpu: "Xtensa dual-core 32-bit LX7"
      clock_speed: "up to 240 MHz"
      wifi: "802.11 b/g/n"
      bluetooth: "BLE 5"
      gpios: 45
      adcs: "2x 12-bit, multi-channel"
      dacs: "none (external MCP4728 used instead)"
      usb: "native USB-OTG + USB-Serial-JTAG"
      interfaces: "SPI, I2C, UART, CAN (TWAI), I2S"
    alternatives:
      - "ESP32-S3-WROOM-1-N16R2 (16 MB flash, 2 MB quad PSRAM) — valid upgrade path if firmware ever outgrows 8 MB flash. Quad PSRAM shares the QSPI flash bus, so GPIO 33–37 remain free. Zero PCB/pinout change required."
      - "ESP32-S2 (single-core, no BT)"
      - "ESP32-C6 (RISC-V, Wi-Fi 6)"
    rejected:
      - "ESP32-S3-WROOM-1-N16R8 — DO NOT BUY. The 8 MB octal PSRAM is hard-wired inside the module to GPIO 33–37; Espressif's datasheet marks those pins as 'not available' on R8 variants. This is a PHYSICAL constraint, not a firmware option — disabling PSRAM in sdkconfig does not reclaim the pins. Treating an N16R8 as an N8R2 by 'ignoring PSRAM' does not work. Any R-suffix octal variant (R8) is rejected for the Kart Medulla."
    notes: |
      Target MCU for the next revision of the Kart Medulla interface PCB. Pairs with an MCP4728 quad 12-bit I2C DAC for CMD_ACC.

      **Octal-PSRAM rule (crystal clear):** Only quad-PSRAM WROOM-1 variants (R2, or no PSRAM) are acceptable. Octal-PSRAM variants (R8) are banned because they permanently consume GPIO 33–37 inside the module package.

      **GPIO 33–37 are NOT reserved by our pinout.** We will try to leave them free where practical, but that is a courtesy, not a commitment. The pinout may and does use GPIO 33–37 when needed. Therefore the module itself must make those pins available — i.e. never R8. If a future revision ever moves to an R8 variant, the pinout must first be audited to confirm GPIO 33–37 are genuinely unused, and that audit has NOT been performed and is NOT a standard we follow.

      See .agents/history.md 2026-04-23 for the full reasoning.

  - id: "esp32_wroom_32"
    part_number: "ESP32-WROOM-32"
    description: "ESP32 microcontroller module — legacy, hand-wired in the current kart (no PCB)"
    category: "microcontroller"
    quantity: 1
    unit_cost: 3.50
    currency: "EUR"
    status: "legacy"
    criticality: "essential"
    suppliers:
      - name: "Mouser"
        part_number: "356-ESP32WROOM32"
        url: "https://www.mouser.com/ProductDetail/356-ESP32WROOM32"
        verified: true
      - name: "AliExpress"
        url: "https://www.aliexpress.com/wholesale?SearchText=esp32+wroom+32"
        verified: false
    specifications:
      voltage: "3.3V"
      current: "240mA"
      temperature_range: "-40°C to +85°C"
      flash: "4MB"
      ram: "520KB"
      cpu: "Xtensa dual-core 32-bit LX6"
      clock_speed: "up to 240 MHz"
      wifi: "802.11 b/g/n"
      bluetooth: "v4.2 BR/EDR and BLE"
      gpios: 34
      adcs: "18-channel, 12-bit"
      dacs: "2-channel, 8-bit"
      interfaces: "SPI, I2C, UART, CAN, I2S"
    pin_assignments:
      gpio_2: "Onboard LED"
      gpio_18: "UART RX (from Orin)"
      gpio_19: "UART TX (to Orin)"
      gpio_21: "I2C SDA (AS5600)"
      gpio_22: "I2C SCL (AS5600)"
      gpio_25: "PWM (Motor Driver)"
      gpio_26: "Direction (Motor Driver)"
    notes: "Currently hand-wired in the kart. To be retired when the ESP32-S3 interface PCB is deployed. See docs/assembly/electronics/kart-medulla/legacy-wiring.md."

  - id: "orin_adapter_board"
    part_number: "CUSTOM-ORIN-ADAPTER-V1.0"
    description: "Custom Orin adapter board v1.0"
    category: "pcb"
    quantity: 1
    unit_cost: 25.00
    currency: "EUR"
    status: "active"
    criticality: "essential"
    suppliers:
      - name: "Custom PCB Manufacturer"
        notes: "Designed with EasyEDA"
    specifications:
      design_tool: "EasyEDA"
      version: "1.0"
      file_format: ".epro"
    files:
      design_file: "./index/ProProject_Orin Adapter_2025-03-09.epro"
      owncloud_path: "formula/formula 24-25/DV/ORIN/adapter/ProProject_Orin Adapter_2025-03-09.epro"
    notes: "Custom adapter to connect Orin to kart systems"

  - id: "kart-medulla_shutdown_mosfet"
    part_number: "TBD-MOSFET"
    description: "Shutdown MOSFET (low-side or high-side)"
    category: "mosfet"
    quantity: 1
    unit_cost: 0.00
    currency: "EUR"
    status: "pending"
    criticality: "essential"
    suppliers:
      - name: "Workshop stock"
        notes: "Select N-channel low-side or P-channel high-side during layout"
    specifications:
      topology: "low-side or high-side"
      gate_drive: "3.3V logic"
    notes: "Shutdown control MOSFET for the Kart Medulla interface PCB"

  - id: "kart-medulla_dual_op_amp"
    part_number: "TBD-DUAL-OPAMP"
    description: "Dual op-amp for ESP32 DAC scaling"
    category: "op_amp"
    quantity: 1
    unit_cost: 0.00
    currency: "EUR"
    status: "pending"
    criticality: "essential"
    suppliers:
      - name: "Workshop stock"
        notes: "Use existing dual op-amp if available"
    specifications:
      gain_a: "x1.5 (to 5V throttle)"
      gain_b: "x3 (to ~9.99V pressure)"
      supply: "5V"
    notes: "Uses ESP32 DAC outputs with op-amp gain stages"
