component
PiProbe Molecule v1.2
UnreviewedRP2040-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
{
"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": "[email protected]"
},
"visibility": {
"public": true
},
"hero": null,
"metadata": {},
"created_at": "2026-05-28T05:30:46.724Z",
"updated_at": "2026-05-28T05:30:46.724Z"
}