Skip to content

kelu124/echomods

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What is this project? [](@description Pitch/Intro of the project)

This project has a specific target of providing a low-cost, open source technological kit to allow scientists, academics, hackers, makers or OSHW fans to hack their way to ultrasound imaging - below 500$ - at home, with no specific equipment required. For complementary sources of information, you can visit:

DOI

  • Disclaimer #0: This is not a medical ultrasound scanner! It's a development kit that can be used for pedagogical and academic purposes - possible immediate use as a non-destructive testing (NDT) tool, for example in metallurgical crack analysis. As in all electronics, be careful.
  • Disclaimer #1: though an engineer, this project is the first of its sort, I never did something related. It's all but a finalized product.
  • Disclaimer #2: Ultrasound raises questions. In case you build a scanner, use caution and good sense!
  • Disclaimer #3: This project is not part of echopen.

What are the arduino-like ultrasound module ?

Creating modules to facilitate ultrasound hacking : the principles of the echOmods is to enable a full chain of ultrasound image processing and hardware control.

We have chosen to use a module approach to make sure that each key component inside ultrasound image processing can easily be replaced and compared with another module, while providing logical logic blocks and corresponding interfaces for these modules to communicate. There's a module for high-voltage pulsing, one for the transducer, one for the analog processing, one for data acquisiton, ... and many more!

What images does it give ?

What does it look like?

The modules sit on a breadboard, and communicate through the tracks laying below. The configuration represented below show the Basic dev kit.

and used in a wider context:

What does it cost?

Raspberry Dev Kit

Using a simpler linux-enabled controler (the all-powerful Pi in its RPi 0 or Pi W) for the dev kit. Cost of materials aims at being as low as possible, below the 500$.

  • Simply the servo and transducer module (cletus) -- get for 80$ (Where? Recycling a transducer from ebay, servo from anywhere (Amazon?))
  • The Pi Heart of the echOmods (tomtom) -- get for 10$ (Where? Get the Pi W from plenty of sources)
  • Using a dual ADC raspberry extension for 20Msps+ DAQ (elmo) -- get for 45$ (Where? OSHPark, MacroFab)
  • Goblin: a TGC-Envelop-ADC module (goblin) -- get for 149$ (Where? Custom made, get the Gerbers, or buy it preassembled on Tindie, or contact @kelu124)
  • Tobo: the HV-pulser (tobo) -- get for 120$ (Where? Custom made, get the Gerbers, buy it preassembled on tindie or contact @kelu124)

Total cost of the set: 404$

echOmods emulated

uC pings emulator and streams feedback

Total cost of the set: 229$

Wireless Dev Kit

The default setting for the sets

Total cost of the set: 389$

The Beaglebone version, along with an hacked probe

Some stuff, unexpensive to buy, to build a ultrasound testing kit, totalling less than 500$.

Total cost of the set: 443$

[](@autogenerated - invisible comment)

Ultrasound hardware structure

[](@description Short description of the organization of modules)

To produce an image, the modules have to create a high voltage pulse, which excites a transducer. Echoes coming from the body are amplified using a TGC + LNA, which cleans the analog signal, which itself gets digitalized.

The diagram is represented below:

The modules organization

Graph

A recap of our modules

ThumbnailImage Name In Out
tobo: The aim of this echOmod is to get the HV Pulse done.
  • ITF-1_GND
  • ITF-2_VDD_5V
  • ITF-9_Pon
  • ITF-10_Poff
  • ITF-19_3.3V
  • ITF-mET_Transducer
  • ITF-18_Raw
  • ITF-mET_SMA
  • ITF-mET_Transducer
elmo: The aim of this module is to achieve 10Msps, ideally 20Msps, at 9bits or more. Inspired from the Bomanz project as well, which tried several high-speed ADCs setup for Raspberry Pi.
  • ITF-1_GND
  • ITF-2_VDD_5V
  • ITF-19_3.3V
  • ITF-12_RPIn
  • Signal Digitalized
cletus: The aim of this module is to interface the transducer and the servo, aka the physical parts, to the analog part of the modules chain. More to come with the Loftus head.
  • ITF-A_gnd
  • ITF-B_5v
  • ITF-N_cc_motor_pwm
  • ITF-S_3_3v
  • ITF-mET_Transducer
  • ITF-mET_Piezo
  • ITF-mET_Piezo
  • ITF-mET_Transducer
tomtom: The aim of this echOmod is to digitalize the signal, and to control the pulser, servo, ...
  • ITF-1_GND
  • ITF-2_VDD_5V
  • ITF-3_ENV
  • ITF-15_GPIO21
  • ITF-16_POn3
  • ITF-16_POn3
  • ITF-17_POff3
  • ITF-14_PWM
  • Wifi
doj: Getting a motherboard: that's fitting all the modules in an easy way, with an easy access to all tracks. See this for the Kicad files.
croaker: The aim of this echOmod is to receive the signal and process it, then stream it over wifi.
  • ITF-3_ENV
  • ITF-10_Poff
  • ITF-9_Pon
  • ITF-1_GND
  • ITF-2_VDD_5V
  • ITF-19_3.3V
  • ITF-mED-TFT-Screen
  • ITF-mED-OLED-Screen
  • ITF-mEC-WiFi-UDP-Stream
retroATL3: The aim of this echOmod is to get the mechanical movement of the piezos. Salvaged from a former ATL3.
  • ITF-A_gnd
  • ITF-F_12V
  • ITF-N_cc_motor_pwm
  • ITF-mET_Transducer
  • Motor
  • Tri-Piezo Head
  • Motor
  • ITF-mET_Transducer
  • Tri-Piezo Head
goblin: The aim of this echOmod is to get the signal coming back from a transducer, and to deliver the signal, analogically processed, with all steps accessible to hackers.
  • ITF-1_GND
  • ITF-2_VDD_5V
  • ITF-7_GAIN
  • ITF-4_RawSig
  • ITF-3_ENV
  • ITF-18_Raw
  • ITF-mET_SMA
  • ITF-4_RawSig
  • ITF-3_ENV_signal_envelope
  • ITF-mEG_SPI
loftus: The aim of this module is to recycle a previous head
  • ITF-A_gnd
  • ITF-B_5v
  • ITF-N_cc_motor_pwm
  • ITF-S_3_3v
  • ITF-mET_Transducer
  • ITF-mET_Piezo
  • ITF-mET_Piezo
  • ITF-mET_Transducer
silent: The aim of this echOmod is to simulate a raw signal that would come from the piezo and analog chain.
  • ITF-1_GND
  • ITF-2_VDD_5V
  • ITF-17_POff3
  • ITF-18_Raw

Progress on building the modules

Module-wise

Note that the 'BONUS!' represents something that could be done, and does not count as a strict TODO.

Name of module ToDo Done Progress
tobo
  • Writing specs
  • HV7360 has been updated
  • Sending microcircuits to Edgeflex
  • Agreeing on the strips/tracks
  • Defining the ICs to use to pulse
  • Getting schematics
  • Publishing schematics
  • Receive the module
  • Test it with different transducers
  • Publish the sources in KiCAD
100%
elmo
  • Getting a board an soldering some ADCs
  • Understand GPIO mem mapping
  • Get raw data with offset vref/2
  • Tests with a single ADC at 11Msps
100%
cletus
  • Remove the jitter (see image in Rdme)
  • Include notes
  • Get a 3.5MHz piezo
33%
tomtom
  • Save images as DICOMs
  • Mapping the pins shared between PWM, pHAT and tracks
  • Developping a CA3306E version of the 10Msps ADC pHAT for testing.
  • Testing the limits of ADC acquisition (speed / bits)
  • Understand why some GPIOs do not have lower values at 0..
  • Set pins to down on boot
  • Dev a version of the ADC08200
  • Create a kernel module
  • (Still to be explored) MixedGadget => Storage + ethernet or this or that.
  • Test the PWM
90%
doj
  • PCB on OSHPark
  • Having the list of strips accessible
  • Design
  • Change the viewme
  • Assemble it
  • Test it
  • Adapt power supply from v2 - smaller board footprint
  • Add a level shifter been Pon 3.3 and 5 and Poff 3.3 and 5
  • A bit more space around the Pi0/PiW headers
  • Proper silkscreening around the Pi0 headers (they are reversed)
  • Jumper for the ADC in.. and selector (enveloppe and amplified signal) (either to Feather or to ADC .. and dedicated pin on Rpi)
  • SPI from RPi to Oled... or SPI to screen (to be checked in both case) .. or both kept, there are two SPI
100%
croaker
  • Replace the work done by OneEye by Croaker - that is, pulse control.
  • Get better total ADC speed with an iterleaved move
  • Develop a Cletus+Croaker way of working with a gyroscope+accelerometer.
  • Have Croaker generate its own AP
  • Choose the platform (BBB, RPi0, STM32, ... ?) : that'll be a Feather WICED for this iteration of Croaker
  • Getting some images
  • Getting images onto a screen
  • Getting good resolution images -- see the breadboard phantom
50%
retroATL3
  • Replace the work done by OneEye by Croaker - that is, pulse control.
  • Get better total ADC speed with an iterleaved move
  • Develop a Cletus+Croaker way of working with a gyroscope+accelerometer.
  • Have Croaker generate its own AP
  • BONUS! Get RealTime acquisition
  • Finding the pins mapping
  • Acquire and build ultrasound pictures =)
  • Motor in action
  • Refill Oil
  • Test echoes
  • Make and insert a video: there
63%
goblin
  • Check the power consumption
  • Testing the in and out signals of the board with the prudaq.
  • Specs to write
  • Agreeing on the strips
  • Check if 5V and 3.3V are stable
  • Defining the ICs to use
  • Getting schematics
  • Send microcircuits to Edgeflex
  • Receive the module
  • Publish the sources in KiCAD (@Sofian maybe?)
  • CANCELLED - Test it with the EMW3165
  • Plug it to a RPi0 or BBB or STM32
  • Connect the ADC to a RPi0
100%
loftus
  • TBD
  • Identifying a supplier
50%
silent 100%

Shopping list

Here's a couple of things we're working on, for which you could help as well.

  • Boosting the 6Msps croaker acquisition (see Wayne?) to the full 6Msps

Todos from Modules

  • Remove the jitter (see image in Rdme) (in cletus)
  • Include notes (in cletus)
  • Save images as DICOMs (in tomtom)
  • Replace the work done by OneEye by Croaker - that is, pulse control. (in croaker)
  • Get better total ADC speed with an iterleaved move (in croaker)
  • Develop a Cletus+Croaker way of working with a gyroscope+accelerometer. (in croaker)
  • Have Croaker generate its own AP (in croaker)
  • TBD (in loftus)

Todos from worklog

  • 6Msps on the STM32
  • dig into CMOS Ultrasound Transceiver Chip for High-Resolution Ultrasonic Imaging Systems.
  • add Visa, possibly Pouya and Thomas as contributors
  • map interested (green)
  • Add a documentation server
  • Display IP on the OLED.
  • Need to have a look at this RPI GPIO DMA - https://github.com/hzeller/rpi-gpio-dma-demo
  • Include some cletus remarks (sourcing) on gitbook
  • convert all previous images to dicom
  • put probe on the setup
  • set the gain on the AFE using Doj v1.2
  • use the GetSuppliersList function to list equipment suppliers
  • Add PCBA
  • Test UHF probe
  • board pulser + processing + ADC for RPi
  • add some ideas for the pulser to the alt.pulser board
  • get orders from Sam CN.
  • remove gitbook MD files from the log
  • link to files in the log (python)
  • Main readme as TPL
  • DICOM rest of images
  • test some compressed sensing using golay codes on a single element piezo

A recap of our retired modules

ThumbnailImage Name In Out
sleepy: The aim of this echOmod is to encase the whole modules object in a neat case, making it transportable.
  • None
  • None
hannin: The aim of this echOmod is to acquire the enveloppe of the signal and stream it. Designed for slow (~64 lines / s) acquisitions.
  • ITF-A_gnd
  • ITF-B_5v
  • ITF-S_3_3v
  • ITF-E_signal_envelope
  • ITF-I_pulse_on
  • ITF-mEC-WiFi-UDP-Stream
  • ITF-mED-TFT-Screen
  • ITF-I_pulse_on
  • ITF-J_pulse_off
  • ITF-N_cc_motor_pwm
oneeye: The module aims at making a microcontroler, for the moment the ArduinoTrinketPro, usable with the motherboard and the set of modules.
  • ITF-3_ENV
  • ITF-1_GND
  • ITF-2_VDD_5V
  • ITF-7_GAIN
  • ITF-9_Pon
  • ITF-10_Poff
  • ITF-14_PWM
toadkiller: The aim of this echOmod is to simulate the enveloppe (or maybe soon the raw signal) that would come from the piezo and analog chain.
  • ITF-1_GND
  • ITF-2_VDD_5V
  • ITF-19_3.3V
  • ITF-3_ENV
  • WiFi UDP Stream
  • ITF-mED-TFT-Screen
  • ITF-9_Pon
  • ITF-10_Poff
  • ITF-14_PWM
retro10PV: The aim of this echOmod is to get the mechanical movement of the piezos. Salvaged from a former ATL10PV.
  • ITF-A_gnd
  • ITF-F_12V
  • ITF-N_cc_motor_pwm
  • ITF-mET_Transducer
  • Motor
  • Tri-Piezo Head
  • Motor
  • ITF-mET_Transducer
  • Tri-Piezo Head
mogaba: The aim of this echOmod is to get 3.3V and 5V done.
  • ITF-mEM_Alimentation
  • ITF-1_GND
  • ITF-2_VDD_5V
  • ITF-19_3.3V

Interfaces table for the motherboard

Name Title Amplitude Raspberry GPIO
ITF-1_GND Ground [0V]
ITF-2_VDD_5V 5V alimentation [5V, 5V]
ITF-3_ENV Enveloppe of the signal [0V, 2.5V]
ITF-4_RawSig Amplified filtered signal [0V, 2.5V]
ITF-5_RENV Raw signal envelope [VREF, 2.5V]
ITF-6_P6 _ OLED SDA_ [0V, 3V] GPIO 02
ITF-7_GAIN Amplifier gain control [0V, 1V]
ITF-8_P8 -Pi OLED SCL [0V, 3V] GPIO03
ITF-9_Pon Pulse on [0V, 5V] Jumper to connect to GPIO 23
ITF-10_Poff Pulse off [0V, 5V] Jumper to connect to GPIO 24
ITF-11_OffSig Signal offset by Vref/2 [0V, 3.3V]
ITF-12_RPIn Pi ADC DAQ [0V, 3.3V] GPIO 05
ITF-13_P13 Unused
ITF-14_PWM Servo PWM [0V, 3.3V] GPIO 06
ITF-15_GPIO21 GPIO21 connection GPIO 21
ITF-16_POn3 Pulse On 3V [0V, 3.3V] GPIO 23
ITF-17_POff3 Pulse Off 3V [0V, 3.3V] GPIO 24
ITF-18_Raw Raw signal fro transducer [-5V, 5V]
ITF-19_3.3V 3.3V alimentation [3.3V, 3.3V]

Interfaces for Raspberry Pi

-> Core
#define ADC_CLK	 4
#define RPIn	 5
#define PWM	 6
#define Puls_ON	 23
#define Puls_OFF 24
#define TRACKER	 21
-> Optional
#define oled_sda 2
#define oled_sdc 3

//ADC 1
#define BIT0_PIN 16
#define BIT1_PIN 17
#define BIT2_PIN 18
#define BIT3_PIN 19
#define BIT4_PIN 20
#define BIT5_PIN 22
#define BIT6_PIN 25
#define BIT7_PIN 26
#define BIT8_PIN 27

//ADC 2 (leaves SPI0 free)
#define BIT0_PIN 7
#define BIT1_PIN 8
#define BIT2_PIN 9
#define BIT3_PIN 10
#define BIT4_PIN 11
#define BIT5_PIN 12
#define BIT6_PIN 13
#define BIT7_PIN 14
#define BIT8_PIN 15

License

echOmods

The echOmods project and its prototypes are open hardware, and working with open-hardware components.

Licensed under TAPR Open Hardware License (www.tapr.org/OHL)

Copyright Kelu124 (kelu124@gmail.com) 2015-2018

Based on

The following work is base on a previous TAPR project, Murgen - and respects its TAPR license.

Copyright Kelu124 (kelu124@gmail.com) 2015-2018

[](@autogenerated - invisible comment)