YOU CAN BUILD THE BOARD THAT LOOKS INSIDE SOLID OBJECTS WITH SOUND

A development board that fires a high-voltage pulse into a piezo crystal and catches the echo microseconds later, built from published schematics and driven from a Raspberry Pi.

by kelu124

FULL CAD BOM FIRMWARE DOCS

Open-hardwareScience

Built withRaspberry Pi

difficulty
●●●●●
time
a weekend-plus
license
TAPR-OHL-1.0 (hardware), GPL-3.0 (software), CC-BY-SA-3.0 (docs)
repo
repo ACTIVE175 stars
1
Jump to section

COMPAREE VERDICT

un0rick is a single-channel open-hardware ultrasound board that does the genuinely hard part of an ultrasound machine: firing a high-voltage pulse (25, 50 or 75 V) into a piezo element, then catching the returning echo with a variable-gain amplifier and a 65 megasample-per-second ADC, all coordinated by a Lattice iCE40 FPGA that writes every sample into static RAM before a Raspberry Pi or USB host reads it out. The acquisition is fully programmable down to pulse width and a 200 microsecond time-gain compensation curve, which is what stops deep echoes from disappearing into noise. Prebuilt FPGA bitstreams and a Python library are provided, and the documented example is a single-element piezo in water aimed at a reflector a few centimetres away. This is a development kit for learning how ultrasound works and for non-destructive testing, not a medical scanner. The thing most likely to go wrong is the board bring-up itself if you assemble it: surface-mount, mixed-signal layout and a high-voltage pulser. If you have never reflowed a PCB or debugged mixed-signal hardware, buy the assembled board. If you have, and you want to understand ultrasound acquisition at the hardware level, the files are here.

GOOD TO KNOW

  • —Hardware files for the v1.1 board: Upverter design, PDF schematic, Gerbers, drill and pick-and-place files, and a BOM.
  • —A bill of materials is in the hardware folder for v1.1; the board is mostly surface-mount and needs reflow.
  • —Prebuilt FPGA bitstreams are provided (built with Lattice's tools; the README says an IceStorm port is coming), plus Verilog for USB control and a Python library for acquisition.
  • —Documentation covers hardware bring-up, software setup, and a water-tank reflector test; no medical imaging guide.
  • —Hardware under TAPR Open Hardware License 1.0, software under GPLv3, documentation under CC BY-SA 3.0. All three permit commercial use with attribution.
  • —The author states explicitly that this is not a medical ultrasound scanner and is intended for teaching and non-medical imaging only.

Parts to buy

3 items

From our check of the build. Exact quantities and part numbers are in the creator’s BOM.

  • Either the assembled board from the creator's Tindie listingFind
  • Single-element ultrasound transducerFind
  • Raspberry Pi or USB/FTDI hostFind

BUILDS OF THE WEEK

Five open-source builds worth your weekend, every week.

Checked like this one: what’s really in the repo, what it costs, how hard it is. One email, unsubscribe anytime.

Can I build this?

Printnothing required
BuyEither the assembled board from the creator's Tindie listing, or PCBs from the Gerbers plus the BOM (iCE40HX4K FPGA, AD8331 VGA, ADC10065 65 Msps ADC, MD1210 + TC6320 pulser, 8 Mbit SRAM, passives); a single-element ultrasound transducer; a Raspberry Pi or USB/FTDI host
Toolsreflow oven or hot-air station if you assemble it, multimeter, oscilloscope for analog path verification, a Raspberry Pi or USB host, Python environment
SkillsSMD soldering and reflow, mixed-signal PCB debugging, FPGA toolchain setup, basic Python; this is a bench project for someone who has built and debugged boards before
Timea weekend-plus — PCB assembly half a day assuming competent reflow, FPGA and software bring-up another half day, analog path tuning and first acquisition easily another session
CostHigh - the creator sells the assembled board for around 489 dollars; building it yourself means PCB fabrication plus the iCE40 FPGA, AD8331 VGA, 65 Msps ADC, MD1210/TC6320 pulser and SRAM, and you still need a transducer. No self-build total is published.
SafetyThe pulser runs at 25, 50 or 75 V - treat the HV section with care and keep fingers off the transducer connector while pulsing; no mains voltage. The author states it is not a medical ultrasound scanner, so never use it on people.

Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.

More builds like this

All projects

Gallery

Start here

Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.

  1. 1.Read the documentation in the GitHub repository and verify the BOM against current supplier stock. (Some components may have moved to newer variants; check footprints before ordering PCBs.)
  2. 2.Order the main board PCB (v1.1 Gerbers) plus the BOM including the FPGA, ADC, VGA and pulser, and a transducer with an SMA connector(Surface-mount assembly required — plan reflow or hand-soldering time accordingly.)
  3. 3.Download the prebuilt FPGA bitstream for your board version and the Python library (Use the prebuilt bitstream first; only rebuild the gateware if you need to change it)
  4. 4.Assemble the board, flash the FPGA, connect the Raspberry Pi, and run the Python library test with a transducer in water.(The documented example is a single-element piezo aimed at a reflector; start there before moving to real targets.)

Resources

Documentation, files and community threads for this build — we link straight to the original sources and never rehost the creator’s files.

KNOWN ISSUES

  • If you build the board yourself, it is dense surface-mount with a high-speed ADC and FPGA timing paths — unless you have reflowed and debugged mixed-signal boards before, buying the assembled board from the creator saves a lot of time.
  • Prebuilt bitstreams spare you the FPGA toolchain; if you want to modify the gateware, check which toolchain the current sources need - the README says Lattice's tools so far.
  • The documented example uses a single-element transducer in a water tank; moving to real objects or multi-element arrays requires understanding the physics and is not covered in the repository.
  • The TAPR Open Hardware License permits commercial use but requires attribution and publication of modifications; read the full license before adapting the design.
  • This is explicitly not a medical ultrasound scanner - it is a development kit for teaching, research and non-destructive testing, and it is not certified for any diagnostic use.
  • Some BOM components may have been updated or gone end-of-life since the design was published; verify part numbers and footprints before ordering PCBs.

Can I use this to scan a person?

No. The author states plainly that this is not a medical ultrasound scanner and is not safe or licensed for diagnostic use. It is a development kit for learning and for imaging non-biological objects.

What is the resolution and penetration depth?

The documented example uses a single-element transducer in water with a reflector a few centimetres away. Resolution and depth depend entirely on the transducer frequency and the target material; the repository does not provide imaging performance specs.

Do I need a Raspberry Pi or can I use something else?

No. The board can be controlled over USB (with its own tutorial, USB gateware and the un0usb Python module) or from a Raspberry Pi through the 20x2 header (pyUn0 library); it has also been tested with an M5Stack microcontroller. The creator recommends a Raspberry Pi W, which then acts as the board server.

How hard is the FPGA gateware to modify?

You do not have to: prebuilt bitstreams for each board version are in the repo. Changing acquisition timing means working in Verilog on the iCE40; the README says the binaries were built with Lattice's tools so far, with an open IceStorm port planned.

Can I order a pre-assembled board?

Yes. The creator sells the assembled board on Tindie (around 489 dollars) and takes orders by email; building it yourself from the Gerbers and BOM is also possible.

Community builds

No community builds yet — be the first, we feature the best ones.

Discussion1

FROM THE COMPAREE TEAM

The board digitises each echo at tens of millions of samples per second and stores it in FPGA-controlled RAM before the Pi even sees it. What would you aim this at first?

CompareeTEAM1mo agoedited

Practical notes from our verification: the repository has the hardware files for each board version (Gerbers and a CSV BOM for v1.1, with the design on Upverter and as PDF), the FPGA bitstreams, Verilog for USB control, and a Python library for Raspberry Pi and USB control, plus a separate documentation site. The board can be driven over SPI from a Raspberry Pi, over USB, or even from a microcontroller such as an M5Stack. The documented example is a single-element piezo in water with a reflector a few centimetres away — moving on to real imaging is left to you. The hard part, if you assemble it yourself, is board bring-up: mixed-signal layout, fine-pitch parts and a high-voltage pulser at 25 to 75 V. If you would rather skip that, the author sells assembled boards on Tindie. The README also states clearly that this is not a medical ultrasound scanner but a development kit for teaching, research and non-destructive testing. Correction (4 October 2026): we re-checked this page line by line against the project's own repository, documentation and videos, and fixed errors in earlier versions.

kelu124

kelu124 built un0rick as part of a long-running project to make ultrasound imaging accessible outside hospital budgets. It extends his earlier echOmods work, which explored modular ultrasound hardware for teaching and research. The design is deliberately single-channel and non-medical, published under open licenses to support experimentation rather than clinical use.

GitHub

Star the project on GitHub

DISCLAIMER

  • Comparee is not the author of the projects featured here. All rights to each project belong to its creator — every page links to the original source, and we never host creators’ files.
  • Information is provided without warranty and may become outdated as projects evolve. Prices are indicative bands only — always check the creator’s parts list for current costs.
  • Building and operating any project is at your own responsibility. Protective equipment, safe workshop practice and compliance with local regulations are the builder’s responsibility.