Skip to the content
4 layers120 × 80 mmUltr4rick, the printed circuit board in 3D

High-end version of the pic0rick

Size
120 × 80 mm
Copper layers
4
Thickness
0.58 mm
Parts
269
Nets
221
Pads
926
Tracks, vias
2,975, 222
Pours
1,032
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
31 Jul 2026
Updated
2 Nov 2026

Overview

Ultr4rick is an open-source printed circuit board by kelu124, from the kelu124/ultr4rick repository on GitHub. It is a 4-layer board of 120 × 80 mm with 269 parts on 221 nets, routed with 2,975 tracks and 222 vias.

It is built around the MD1213K6-G, BWU.FL-IPEX1 and TC6320TG-G, with the 0402CG220J500NT, CC0402KRX5R6BB475 and BAV99 among its other parts. Its parts include 107 capacitors, 74 resistors, 15 ICs, 7 diodes and 6 inductors.

Main components

12

README

README.md

ultr4rick

Ultr4rick is an open ultrasound pulse-echo board, the higher-power successor to pic0rick. It is built around an RP2350B and has:

  • a 10-bit, 60 MS/s ADC (AD9215) behind an AD8331 variable-gain front end, with gain set by an MCP4812 DAC;
  • a bipolar HV pulser driven by two logic lines (A = negative, B = positive, A+B = damping), fed by a SEPIC HV supply;
  • a MAX14866 16-channel HV mux;
  • a uSD slot, an LP5562 RGB LED driver on I2C, and USB.

The firmware can compute the Hilbert envelope (and A-law compression) of each 4096-sample capture on the board.

The board

Front of the boardBack of the board
Front. HV supply, pulser, RP2350B and receive front end (AFE). PULSER_OUT and AFE_IN SMA connectors on the right edge, USB-C and uSD on the left.Back. The MAX14866 HV mux and the 8 U.FL element connectors (U18–U21, U26–U29).
The board running with a transducer
Running. Powered over USB-C (about 0.96 W on the inline meter), with one transducer on PULSER_OUT and AFE_IN through an SMA tee.

The KiCad renders are in hardware/Ultr4rick_F.png and hardware/Ultr4rick_B.png. The photos are described in docs/images/README.md.

Acquisition examples

Pulse-echo on the mux: each element in turn on TX and RX with set_one_mux(k), raw ADC trace (top) and on-board Hilbert envelope (bottom). Elements 2 and 4 show echo trains: about every 13 µs on element 2 and every 20 µs on element 4. From python/example_dsp.ipynb, section 13.

Raw and envelope captures for mux elements 1 to 7

Idle vs. pulsed capture at gain 50, pulse 96/6000/96 ns: the excitation at 0.9 µs, the receiver recovering until about 6 µs, and the envelope computed on the board. From python/example_dsp.ipynb, section 15.

Idle vs. pulsed capture

Repository layout

PathContents
docs/Documentation: start here (introduction, setup and first acquisitions, firmware, Python library, repository map)
hardware/KiCad project of the v2 board: schematic sheets per subsystem, PCB, gerbers, renders
firmware/Pico SDK C firmware for the RP2350B. Pin map in firmware/PINMAP.md, history in firmware/CHANGELOG.md
python/ultr4rick host library, example script and notebooks. See python/Readme.md
requirements.txtPython dependencies for python/
TODO.mdHardware changes planned for the next revision
LICENSE.md, LICENSES/Licenses per part of the repository

Quick start

Build the firmware (Pico SDK 2.3.0, arm-none-eabi-gcc, CMake + Ninja):

bash
cd firmware
export PICO_SDK_PATH=$HOME/.pico-sdk/sdk/2.3.0
./build.sh -DPICO_TOOLCHAIN_PATH=/usr
# dist/ultr4rick-v<ver>-ultr4rick.uf2      stdio text REPL
# dist/ultr4rick-v<ver>-ultr4rick-dsp.uf2  on-board DSP + binary frames

Flashing:

  1. Get the board into BOOTSEL. Either send reboot-dfu over the serial port, or hold BOOTSEL while plugging it in.
  2. Copy the UF2 onto the RP2350 drive that appears.

Drive it from Python:

bash
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
cd python && ../.venv/bin/python example_dsp.py      # status, DSP self-test, captures
../.venv/bin/jupyter lab                            # example_dsp.ipynb, example_acquisition.ipynb, ...
python
from ultr4rick.device import Ultr4rick
from ultr4rick import dsp
probe = Ultr4rick()                  # finds the board by USB ID
print(probe.status()["raw"])
print(dsp.check_selftest(probe.selftest()))
frame = probe.read_fft()             # 4096-sample Hilbert envelope

Safety: the pulser generates high voltage. The firmware boots with it disarmed. Only arm it (pulser arm / Ultr4rick.arm_pulser()) with a transducer connected, and disarm it afterwards.

License

See LICENSE.md for the details and the third-party code.

Parts

269
QtyValueFootprintReferences
21100nFCapacitor_SMD:C_0402_1005MetricC56, C57, C59, C63, C64, C65, C66, C68, C84, C101, C102, C103, C105, C107, C109, C111 +5
15100nFEasyEDA:C0402C13, C16, C30, C31, C33, C34, C35, C36, C37, C38, C39, C40, C41, C45, C49
142.2uFEasyEDA:C0805C2, C3, C4, C5, C6, C7, C8, C21, C22, C23, C24, C25, C26, C27
1310KResistor_SMD:R_0402_1005MetricR47, R48, R49, R50, R51, R52, R53, R54, R58, R59, R62, R73, R74
9200ΩEasyEDA:R0402R18, R19, R20, R21, R22, R23, R24, R25, R26
81kEasyEDA:R0603R79, R80, R81, R82, R84, R85, R86, R87
8BWU.FL-IPEX1EasyEDA:IPEX-SMD_BWIPX-1-001EU18, U19, U20, U21, U26, U27, U28, U29
5~Inductor_SMD:L_0603_1608MetricFB7, FB8, FB9, FB10, FB11
4100ΩEasyEDA:R0402R7, R43, R45, R46
410nFEasyEDA:C0603C69, C76, C77, C78
410nFCapacitor_SMD:C_0402_1005MetricC60, C61, C67, C72
44.7uFEasyEDA:C0402C17, C32, C42, C48
4MountingHole_PadMountingHole:MountingHole_2.2mm_M2_PadH1, H2, H3, H4
310uFEasyEDA:C0603C100, C104, C110
31KΩEasyEDA:R0402R39, R41, R44
31kΩEasyEDA:R0402R28, R36, R57
31nFCapacitor_SMD:C_0402_1005MetricC85, C88, C90
31uFCapacitor_SMD:C_0402_1005MetricC58, C62, C98
32.2kΩEasyEDA:R0402R29, R30, R31
3220nFEasyEDA:C0402C52, C53, C54
322ΩEasyEDA:R0402R2, R33, R34
34.7uFCapacitor_SMD:C_0402_1005MetricC108, C115, C116
3510ΩEasyEDA:R0402R38, R40, R42
20ΩEasyEDA:R0402R14, R35
20ΩResistor_SMD:R_0402_1005MetricR77, R78
21.0mmPCM_SparkFun-Connector:TestPoint-1.0mmTP1, TP2
21.2ΩEasyEDA:L0805FB1, FB2
2100RResistor_SMD:R_0402_1005MetricR60, R65
2100kEasyEDA:R0603R3, R12
2100nFEasyEDA:C0805C9, C14
2100nFEasyEDA:C0603C28, C29
2100pFEasyEDA:C0402C19, C20
210kEasyEDA:R0402R1, R13
210uFEasyEDA:C0402C50, C51
210uFCapacitor_SMD:C_0402_1005MetricC55, C94
210uHEasyEDA:L0805L2, L5
2120Ohm 3 AInductor_SMD:L_1206_3216MetricFB5, FB6
215pFEasyEDA:C0402C46, C47
218REasyEDA:R0603R88, R89
21mHEasyEDA:IND-SMD_L6.0-W6.0_SWPA6045SL3, L4
22.2uFEasyEDA:C1206C1, C15
222pFEasyEDA:C0402C113, C114
24.7uFEasyEDA:C0603C43, C44
247uFEasyEDA:C1206C10, C11
24u7Capacitor_SMD:C_0402_1005MetricC96, C97
24u7EasyEDA:C0402C92, C93
25K1Resistor_SMD:R_0402_1005MetricR70, R71
28.5ΩEasyEDA:L0603FB3, FB4
2BAV99Package_TO_SOT_SMD:SOT-23D4, D5
2CONUFL001-SMD-TEasyEDA:IPEX-SMD_3P-L2.6-W2.6-LS3.0RF4, RF5
2Conn_01x01_PinConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ17, J18
2KT-0603REasyEDA:LED-SMD_L1.6-W0.8-R-RDLED1, LED2
2MD1213K6-GEasyEDA:QFN-12_L4.0-W4.0-P0.80-BL-EP1.7IC1, IC3
2SMA_EdgePCM_SparkFun-Connector:SMA_Edge_8mmJ1, J2
2SN74LVC2G04DBVTEasyEDA:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BRU7, U8
2SS320_C18199172EasyEDA:SMA_L4.3-W2.6-LS5.0-RDD1, D3
2TC6320TG-GEasyEDA:SOIC-8_L4.9-W3.9-P1.27-LS6.0-BLIC2, IC4
2TS-1088-AR02016EasyEDA:SW-SMD_L3.9-W3.0-P4.45SW1, SW2
10.1ΩEasyEDA:R0402R8
11.8kΩEasyEDA:R0402R27
1100nFEasyEDA:C1206C12
1100pFEasyEDA:C0603C112
1100uHEasyEDA:IND-SMD_L8.0-W8.0L1
110RResistor_SMD:R_0402_1005MetricR72
110nFEasyEDA:C0402C70
112KResistor_SMD:R_0402_1005MetricR67
112MHzEasyEDA:OSC-SMD_4P-L3.2-W2.5-BL_SIT8008BIU5
118nFCapacitor_SMD:C_0402_1005MetricC73
11AFuse:Fuse_0603_1608MetricF1
11KResistor_SMD:R_0402_1005MetricR56
11N4148W T4EasyEDA:SOD-123_L2.8-W1.8-LS3.7-RDD2
11ΩEasyEDA:R0402R6
12200pFEasyEDA:C0402C18
122pFCapacitor_SMD:C_0402_1005MetricC79
1280RResistor_SMD:R_0402_1005MetricR63
13.3kΩEasyEDA:R0402R32
13.3uHEasyEDA:IND-SMD_L2.0-W1.6_AOTA-B201610S3R3-101-TL6
1330kEasyEDA:R0603R5
1330ΩEasyEDA:R0402R37
133ΩEasyEDA:R0402R17

The 235 most common of 269 parts.

Similar boards

  • 4 layers200 × 100 mmMinUS, the printed circuit board in 3D

    MinUS

    kelu124/minus

    Minimal ultrasound platform

    222 parts3
  • 4 layers87.1 × 78.2 mm3 in 1 Panel, the printed circuit board in 3D

    3 in 1 Panel

    kelu124/pic0rick

    An rp2040-based acquisition board for pulse-echo ultrasound

    115 parts116
  • 4 layers52 × 27 mmEcp5.routed, the printed circuit board in 3D

    Ecp5.routed

    DaviBaum/loom

    112 parts
  • 6 layers90 × 89 mmModular processing board, the printed circuit board in 3D

    Modular processing board

    igorwolfs/modular-processing-hw

    MCU Breakout board with Hirose BM28B connector

    177 parts1
  • 4 layers82.1 × 80.2 mmSeguidor de linhas 4camada2-2026-1, the printed circuit board in 3D

    Seguidor de linhas 4camada2-2026-1

    wvianna/mcp-kicad-vscode

    Workspace que combina um servidor MCP para automação de design de PCB com KiCad e o projeto de hardware (placa de circuito impresso) desenvolvido com ele.

    97 parts
  • 4 layers81.2 × 100.2 mmUnderglow3, the printed circuit board in 3D

    Underglow3

    ConnorRigby/nerves_system_underglow3

    hardware support for underglow3

    242 parts6Apache-2.0
  • 4 layers30.2 × 32.7 mmTwisted Connect, the printed circuit board in 3D

    Twisted Connect

    Triax-Labs/twisted

    The key chain sized expandable ESP32-S3 platform.

    46 parts7
  • 4 layers52.8 × 22.9 mmICE40-fpga, the printed circuit board in 3D

    ICE40-fpga

    kitspace-test-repos/kicad6-file-collection

    83 partsMIT

Questions

How big is the Ultr4rick PCB?

It measures 120 × 80 mm and has 4 copper layers, 0.58 mm thick.

What parts does the Ultr4rick use?

269 parts, built around the MD1213K6-G, BWU.FL-IPEX1, TC6320TG-G and 0402CG220J500NT. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Ultr4rick KiCad files?

From the kelu124/ultr4rick repository on GitHub, at the commit this page was made from: the board is hardware/Ultr4rick.kicad_pcb and its schematic hardware/DAC+AFE.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ultr4rick design in my own project?

Its repository states no licence, so its author keeps all rights: ask kelu124 before reusing the design.