{
  "schema_version": 1,
  "type": "component",
  "slug": "piprobe-molecule-v1-2",
  "title": "PiProbe Molecule v1.2",
  "brief": "RP2040-based SWD debug probe molecule — 28×20 mm, CMSIS-DAP with SWD debug + UART passthrough, 9 machine contacts + 4 machine pins. Runs Raspberry Pi Debugprobe firmware. Flash and debug RP2040/RP2350",
  "version": "1.0.0",
  "tags": [],
  "license": "MIT",
  "discovery_triggers": [
    "piprobe",
    "debug probe",
    "swd probe",
    "picoprobe",
    "cmsis-dap",
    "debugprobe molecule",
    "swd debug molecule",
    "rp2040 probe",
    "arm debug probe",
    "uart passthrough probe"
  ],
  "discovery_pitch": "PiProbe molecule — RP2040 CMSIS-DAP debug probe with SWD + UART passthrough, 28×20 mm, 9 machine contacts. Flash and debug RP2040/RP2350/Arm targets in the workcell.",
  "sample_prompts": [
    {
      "label": "SWD probe",
      "prompt": "Find the SWD debug probe molecule"
    },
    {
      "label": "Debug probe",
      "prompt": "I need a debug probe to flash an RP2040 target"
    },
    {
      "label": "PiProbe pinout",
      "prompt": "Show the pin mapping for the PiProbe molecule"
    },
    {
      "label": "CMSIS-DAP",
      "prompt": "What CMSIS-DAP probe molecules do we have?"
    }
  ],
  "component": {
    "mpn": "PiProbe Molecule v1.2",
    "manufacturer": "",
    "package": "",
    "pin_count": null,
    "category": "molecule",
    "subcategory": "",
    "body_size": null,
    "parts": {},
    "distributor_links": {}
  },
  "readme": "# PiProbe Molecule v1.2\n\nRP2040-based SWD debug probe molecule — 28×20 mm, runs the Raspberry Pi Debugprobe (picoprobe) firmware. Provides SWD debug (CLK + DIO) and UART passthrough (TX + RX) to target devices via machine contacts. USB connection for host interface. Used for programming and debugging RP2040/RP2350 and other Arm targets in the Adom workcell.\n\n## How It Works\n\nThis board is designed around and runs the official Raspberry Pi **debugprobe.uf2** firmware ([raspberrypi/debugprobe](https://github.com/raspberrypi/debugprobe)). The hardware pin assignments, USB descriptor configuration, and level-shifted SWD/UART interfaces are all matched to the debugprobe firmware's expected GPIO mapping — it is a drop-in compatible debug probe that presents as a CMSIS-DAP device over USB.\n\nThe PiProbe connects to a host PC via USB (D+/D- on machine contacts MC1/MC2). The host runs OpenOCD, probe-rs, or the Raspberry Pi Debug Probe extension to flash and debug a target MCU. SWD signals (CLK/DIO) and UART (TX/RX) are routed out through machine contacts on the bottom edge, connecting to the target molecule in the workcell. Power comes in through the machine pins (+3V3 on MP1/MP4), not from the USB host.\n\n## Overview\n\n| Property | Value |\n|---|---|\n| **Molecule ID** | `piprobe-molecule-v1-2` |\n| **Board Size** | 28.0 × 20.0 mm |\n| **MCU** | RP2040 (QFN-56) |\n| **Flash** | W25Q16JVUXIQ — 16 Mbit (2 MB) QSPI |\n| **Level Shifters** | 2× 74AUP1T17GW — SWD signal conditioning |\n| **Crystal** | 12 MHz |\n| **Firmware** | Raspberry Pi Debugprobe (picoprobe) |\n| **Machine Contacts** | 9 contacts + 4 corner machine pins |\n| **KiCad Version** | 7/8 |\n\n## Key ICs\n\n| Ref | Part | Package | Function |\n|---|---|---|---|\n| U1 | RP2040 | QFN-56 | Debug probe MCU |\n| U2 | W25Q16JVUXIQ | USON-8 | 2 MB QSPI flash (firmware storage) |\n| U3 | 74AUP1T17GW | SC-70-5 | SWD DIO level shifter / buffer |\n| U4 | 74AUP1T17GW | SC-70-5 | SWD CLK level shifter / buffer |\n\n## Machine Contact Pin Mapping\n\n### Corner Machine Pins\n\n| Pin | Position | Net | Function |\n|---|---|---|---|\n| MP1 | Top-left | +3V3 | 3.3V power input |\n| MP4 | Top-right | +3V3 | 3.3V power input |\n| MP2 | Bottom-left | GND | Ground |\n| MP3 | Bottom-right | GND | Ground |\n\n### Left Edge — USB & Control\n\n| Contact | Net | Function |\n|---|---|---|\n| MC1 | USB_D- | USB data minus (to host) |\n| MC2 | USB_D+ | USB data plus (to host) |\n| MC3 | GND | Ground |\n| MC5 | RST | Target reset |\n| JP1 | BOOTSEL / GND | Boot select jumper (bridge to enter USB bootloader) |\n\n### Bottom Edge — Debug & UART (to target)\n\n| Contact | Net | Function |\n|---|---|---|\n| MC6 | TX | UART TX (probe → target RX) |\n| MC7 | RX | UART RX (target TX → probe) |\n| MC8 | GND | Ground |\n| MC9 | GND | Ground |\n| MC10 | DIO | SWD data (bidirectional) |\n| MC11 | CLK | SWD clock |\n\n## Status LEDs\n\n| LED | Color | Function |\n|---|---|---|\n| D1 | Red | Power indicator |\n| D2 | Green | DAP connected |\n| D3 | Yellow | UART TX activity |\n| D4 | Yellow | UART RX activity |\n| D5 | Green | Probe ready |\n\n## SWD Signal Path\n\nThe SWD signals are buffered through 74AUP1T17GW level shifters (U3, U4) with 100 Ω series resistors for signal integrity. This provides clean edges and protects the RP2040 GPIOs from target-side transients.\n\n```\nRP2040 GPIO → 100Ω → 74AUP1T17GW → MC10 (DIO) / MC11 (CLK) → Target\n```\n\n## Firmware\n\nThe probe runs the official **Raspberry Pi Debugprobe** (picoprobe) firmware. To flash:\n\n1. Bridge JP1 (BOOTSEL) and power cycle — RP2040 enters USB mass storage mode\n2. Copy the `.uf2` firmware file to the mounted drive\n3. Remove JP1 bridge — probe boots into debugprobe mode\n\n## Programming a Target\n\nFrom the host (or this container via USB passthrough):\n```bash\n# OpenOCD\nopenocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c \"program firmware.elf verify reset exit\"\n\n# picotool (over SWD via the probe)\npicotool load firmware.uf2 -f\n\n# probe-rs\nprobe-rs run --chip RP2040 firmware.elf\n```\n\n## Fabrication\n\nKiCad project files included in the source bundle.\n",
  "author": {
    "id": "695820315b5f1e4db2fcf602",
    "name": "Kyle Bergstedt",
    "email": "kyle@adom.inc"
  },
  "visibility": {
    "public": true
  },
  "hero": null,
  "metadata": {},
  "created_at": "2026-05-28T05:30:46.724Z",
  "updated_at": "2026-05-28T05:30:46.724Z"
}