Link

GitHub repo size GitHub language count GitHub top language GitHub last commit

Slack Patreon Kofi

The pic0rick

The pic0rick is the current recommended board in the un0rick family. It replaces the FPGA-based designs with an RP2040/RP2350 microcontroller, delivering comparable ultrasound acquisition performance at a fraction of the cost and complexity — with no FPGA toolchains or specialized hardware knowledge required.

New to the project? Start with the Getting started guide for a step-by-step walkthrough from unboxing to your first echo.

pic0rick assembled


Specifications

Parameter Value
Microcontroller RP2040 (dual-core Cortex-M0+, 133 MHz). RP2350 also supported
ADC 60 Msps, 10-bit resolution
TGC amplifier AD8331 — 7.5 dB to 55.5 dB variable gain
TGC control MCP4812 SPI DAC
Pulse generation Three-level pulser via MD1210 + TC6320 (on pulser PMOD board)
Pulse voltage +-25 V (via HV generation board)
Input protection HV clipping on receive path
PMOD connectors 1x single (pulser), 1x double (VGA, MUX, PSRAM, or custom)
Data interface USB (serial)
PIO usage PIO0: acquisition timing, PIO1: VGA output (when connected)
Power USB bus powered
Design files KiCad (open source)
Firmware C/C++ for RP2040 — Arduino-like development environment
Certification OSHWA open-source hardware certified

System architecture

The pic0rick is a modular three-board system:

Main board — The core of the system. Contains the RP2040 microcontroller, the 60 Msps 10-bit ADC, the AD8331 TGC amplifier with SPI-controlled gain curve, and HV input protection on the receive path. The main board hosts both PMOD connectors and the USB interface.

Pulser board (single PMOD) — Generates the transmit pulse on behalf of the main board. Uses a pair of MD1210 + TC6320 to produce three-level pulses. Requires the HV board for high-voltage supply.

HV board — A simple +-25V generation board that plugs into the pulser board. Provides the high-voltage rail needed for pulse generation.

The signal chain works as follows:

RP2040 → PIO triggers pulse → Pulser board → Transducer → Echo returns
→ HV clipping (protection) → AD8331 TGC → 60 Msps ADC → RP2040 → USB → Computer

The RP2040’s two PIO units are used for precise timing: one drives the acquisition sequence (pulse trigger + ADC sampling), and the other can drive a VGA output for real-time visualization — leaving the two Cortex-M0+ cores free for your own application code.


How does it replace the FPGA?

Previous boards (un0rick, lit3rick) used a Lattice iCE40 FPGA for precise timing control of the pulse-echo sequence. The pic0rick achieves the same timing precision using the RP2040’s Programmable Input/Output (PIO) state machines. PIO programs run deterministically at the system clock rate, providing the sub-microsecond timing needed for ultrasound acquisition — without requiring HDL knowledge or FPGA synthesis tools.

This means you can modify the acquisition timing, pulse patterns, and sampling parameters by editing C code in a standard Arduino-like environment, rather than writing Verilog or VHDL and running a synthesis toolchain.


PMOD extensions

The double PMOD connector supports several expansion boards:

Extension Function
VGA output Real-time display of acquisitions on a VGA monitor — uses PIO1
MUX board Multiplexer for driving multiple transducers — enables array imaging and synthetic aperture
PSRAM Additional memory for longer acquisition buffers
Custom The PMOD pinout is documented — design your own extensions

Note: the PMOD headers include a 5V rail in addition to the standard signals, so they are not strictly PMOD-compliant — but this allows powering more demanding extension boards directly.

For more details, see the Extensions page.


Board comparison

How does the pic0rick compare to the older un0rick-family boards?

  pic0rick un0rick lit3rick lit3-32
Status Active Legacy Legacy Legacy
Years 2024–now 2018–2025 2020–2024 2021–2024
Controller RP2040 / RP2350 iCE40 HX4K/HX8K iCE40 UP5K iCE40 UP5K
Type Microcontroller FPGA FPGA FPGA
ADC speed 60 Msps Up to 64 Msps Up to 64 Msps Up to 64 Msps
ADC resolution 10-bit 10-bit 10-bit 10-bit
TGC amplifier AD8331 (48 dB range) AD8331 (48 dB range) AD8331 (48 dB range) AD8332 (92 dB range)
Onboard HV No (separate board) Yes No No
Form factor Compact + PMODs Large single board RPi pHAT RPi pHAT
Programming C/C++ (Arduino-like) Verilog + Python Verilog + Python Verilog + Python
FPGA required No Yes Yes Yes
Extensible PMOD connectors Limited RPi GPIO RPi GPIO
Cost Lowest Medium Low Medium-high
Best for New projects, education, fast prototyping Users needing full FPGA flexibility RPi-integrated setups Weak signal detection (high gain)

For new projects, we recommend the pic0rick unless you specifically need FPGA-level timing control or the 92 dB gain range of the lit3-32.


Example of acquisition

A typical acquisition looks like this — the large spike on the left is the transmit pulse, and the smaller peaks to the right are reflections from your target:

Example acquisition


The pic0rick alongside older boards

Sister boards


Source files

All design files are open source:

  • Hardware (KiCad): Main board, pulser board, HV board — in the pic0rick repository
  • Firmware: RP2040 C/C++ source code — in the software/ directory
  • Documentation: Published under CC BY-SA 3.0

Get one


Thank you to

  • Abdelrahman
  • Lap

License

This work is based on three previous TAPR projects, the echOmods project, the un0rick project, and the lit3rick project — their boards are open hardware and software, developed with open-source elements as much as possible.

Copyright Luc Jonveaux (kelu124@gmail.com) 2024

  • The hardware is licensed under TAPR Open Hardware License (www.tapr.org/OHL)
  • The software components are free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
  • The documentation is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Disclaimer

This project is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE.


Table of contents