DIY open-source ultrasound hardware on the rp2040/rp2350

(un0rick.cc)

90 points | by kelu124 22 hours ago

4 comments

  • flowersjeff 20 hours ago
    So... paired with https://coe.gatech.edu/news/2026/04/batteries-not-included-o...

    and one has a complete hardware solution?

    • zipy124 4 hours ago
      You could just use a standard microphone for that, no need to have something so over-engineered as in the OP.
    • afzalive 18 hours ago
      For what?
      • NDlurker 14 hours ago
        DIY smart sensors for whatever you want to use them for
  • teamonkey 17 hours ago
    As someone who has never had an opportunity to play with it, I’m fascinated by what people are doing with PIO. In many cases it seems to be a ‘good enough’ FPGA on absurdly cheap hardware.
  • gkhartman 12 hours ago
    What are the practical applications of this? The things that come to mind when I hear "ultrasound" are medical devices and wall scanners.

    That said, it's a cool project, even if it doesn't have a practical use.

    • zipy124 4 hours ago
      If you go to the home page it gives a list of applications:

      Quote:

      > The hardware is designed for pedagogical and prototyping purposes. Common applications include:

      > - Pulse-echo / A-mode imaging — the core use case (details)

      > - Non-destructive testing — crack detection, material characterization (details)

      > - Ultrasound tomography — transmission and reflection modes (details)

      > - Array imaging — synthetic aperture beamforming with the MUX PMOD extension

      > - Transducer characterization — test and evaluate piezoelectric probes (compatible probes)

      > - Signal processing research — a flexible platform for new methods

  • 05 15 hours ago
    Honestly what they're describing can be done on any MCU without PIO - set up clock division/PLL to provide ADC clock, use that same clock for timer source, set up a timer channel to trigger the pulse, set up a timer channel to trigger ADC DMA capture start, start the timer.

    Congrats, now you have capture synchronized to pulse start "providing the sub-microsecond timing needed for ultrasound acquisition".

    • fps-hero 15 hours ago
      I think you miss understood the challenge. They are using a 60Msps ADC with a parallel port interface. The challenge is capturing the 600Mbit/s of data and having enough CPU and memory bandwidth to do anything useful with it.

      If your microcontroller has a parallel port interface, you would use the clock setup you described. This works, I've done it before, but there was very little CPU left to do anything useful with the data.

      It's neat that they used the PIO, its demonstrating how that peripheral fills a niche where you things that might have been impossible without an FPGA, suddenly become doable on a microcontroller.

      • 05 6 hours ago
        Well, parallel port adc capture has nothing to do with PIO either - on STM32 you would just set up DMA on a GPIO port, then capture 16bit data. The real question is what RP2040 is going to do with 120MB/s of data.. and the answer is, it can't process it or send it over (12Mbps aka 1.5MB/s) USB. So, would only work in low duty cycle pulse mode, no streaming.
        • zipy124 4 hours ago
          It is designed for short captures. You can see the practical applications at: https://un0rick.cc/use_cases .

          I can assure you these use cases are hard to achieve with a standard STM32 as someone whos almost finished with their PhD in mid-air ultrasonics.

          • kelu124 2 hours ago
            Hi, author here. I must say I'm not 100% confident in everything the STM32s do - and the rp2040/rp2350 is an easy one. One of my pieces of work is : continuous acquisition, acquisitions, processing, and writing on a fast storage, which allows for continuous 10MB/s+. All of this can be managed through the 2 cores, and the PIOs.

            In short, PIOs are really a game changer, I have dumped a FPGA from the previous iteration to go rp2040.

            BUT... solutions like some of PIC32 and their integrated 40Msps ADC are really nice and worth exploring (if I had the time). The positive thing about the pico is that it's so common and tools are so common that it's really a pleasure developping on this device =)