Skip to content

soobash/echomods

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

363 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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:

Disclaimer: though an engineer, this project is the first of its sort, I never did something related. Bear with us, and the discovery process, but I'm happy to learn on the way =)

Disclaimer #2: ultrasound raises questions. In case you build a scanner, use caution and good sense!

Disclaimer #3: Beware! Though I am one of echopen's cofounders, this personnal pet-project lives in the echopen community, and is not a project in the scope of the echopen's association.

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.

What does it cost?

echOmods emulated

uC pings emulator and streams feedback

  • This is the module which emulates the signal coming from the analog processing chain. (silent) -- get for 35$ (Where? Get from Adafruit)
  • The acquisition heart of the echOmods (croaker) -- get for 35$ (Where? Get Feather from Amz or Adafruit. OLED at Amz)
  • Mogaba, the power supply (mogaba) -- get for 5$ (Where? Anywhere, or eg Amazon?)
  • The motherboard of the echomods (doj) -- get for 5$ (Where? Anywhere for stripboard)
  • 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)

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
sleepy: The aim of this echOmod is to encase the whole modules object in a neat case, making it transportable.
  • None
  • None
tobo: The aim of this echOmod is to get the HV Pulse done.
  • ITF-A_gnd
  • ITF-B_5v
  • ITF-I_pulse_on
  • ITF-J_pulse_off
  • ITF-S_3_3v
  • ITF-mET_Transducer
  • ITF-R_reserved
  • ITF-mET_SMA
  • ITF-mET_Transducer
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.
  • 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
doj: Getting a motherboard: that's fitting all the modules in an easy way, with an easy access to all tracks.
oneeye: The module aims at making a microcontroler, for the moment the ArduinoTrinketPro, usable with the motherboard and the set of modules.
  • ITF-A_gnd
  • ITF-B_5v
  • ITF-S_3_3v
  • ITF-G_gain_control
  • ITF-I_pulse_on
  • ITF-J_pulse_off
  • ITF-N_cc_motor_pwm
croaker: The aim of this echOmod is to receive the signal and process it.
  • ITF-A_gnd
  • ITF-B_5v
  • ITF-E_signal_envelope
  • ITF-I_pulse_on
  • ITF-J_pulse_off
  • 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
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-A_gnd
  • ITF-B_5v
  • ITF-S_3_3v
  • ITF-E_signal_envelope
  • WiFi UDP Stream
  • ITF-mED-TFT-Screen
  • ITF-I_pulse_on
  • ITF-J_pulse_off
  • ITF-N_cc_motor_pwm
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-A_gnd
  • ITF-B_5v
  • ITF-S_3_3v
  • ITF-G_gain_control
  • ITF-C_amplified_raw_signal
  • ITF-E_signal_envelope
  • ITF-R_reserved
  • ITF-mET_SMA
  • ITF-C_amplified_raw_signal
  • ITF-E_signal_envelope
  • ITF-mEG_SPI
silent: The aim of this echOmod is to simulate a raw signal that would come from the piezo and analog chain.
  • ITF-A_gnd
  • ITF-B_5v
  • ITF-J_pulse_off
  • ITF-R_reserved
mogaba: The aim of this echOmod is to get 3.3V and 5V done.
  • ITF-mEM_Alimentation
  • ITF-F_12V
  • ITF-A_gnd
  • ITF-B_5v
  • ITF-F_12V
  • ITF-S_3_3v

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
sleepy
  • Choose the design once the modules are done
  • Get to work with Arthur
  • Checking Arthur availability
33%
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%
cletus
  • Choose the servo (>100Hz)
  • Do the structure of the holder (3D design?)
  • Get a 3.5MHz piezo
33%
doj
  • Having the list of strips accessible
  • Design
  • Assemble it
  • Test it
100%
oneeye
  • First test with Arduino Trinket
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 66%
toadkiller
  • Enhance the BBB to transform it into a ultrasound server
  • Do the quick check up
  • Acquire some data
  • Post some data
75%
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.
91%
silent 100%
mogaba
  • BONUS! benchmark power supplies
  • Manage to feed it 12V
  • Bring power to it through the 12V ITF-F_12V track
  • Test if 12V OK
  • Find supplier
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?)

  • gh-pages: adding presentations, files list, community

  • Adding PPTs to the makedoc list

  • Processing PPTs

  • Choose the design once the modules are done (in sleepy)

  • Get to work with Arthur (in sleepy)

  • Choose the servo (>100Hz) (in cletus)

  • Do the structure of the holder (3D design?) (in cletus)

  • 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)

  • http://www.biosono.com/PrmtLgd/PrmtLgd.php?id=TrnsRlc (in retroATL3)

  • BONUS! Get RealTime acquisition (in retroATL3)

  • Determine the impedance of the transducer seen by tobo (@ulb ?) (in retroATL3)

  • Do some impedance matching (@ulb ?) (in retroATL3)

  • Enhance the BBB to transform it into a ultrasound server (in toadkiller)

  • BONUS! Plug it to a RPi0 or BBB or RPi or else. (in goblin)

  • Connect the ADC to a RPi0 (in goblin)

  • BONUS! benchmark power supplies (in mogaba)

A recap of our retired modules

ThumbnailImage Name In Out
elmo: The aim of this echOmod is to get be the microcontroller heart
  • ITF-A_gnd
  • ITF-B_5v
  • ITF-E_signal_envelope
  • WiFi
  • Screen
  • ITF-G_gain_control
  • ITF-I_pulse_on
  • ITF-J_pulse_off
  • ITF-N_cc_motor_pwm
kina: 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
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

Interfaces table for the motherboard

Name Title Amplitude
ITF-A_gnd Ground [0V]
ITF-B_5v 5V alimentation [5V, 5V]
ITF-C_amplified_raw_signal Amplified raw signal [0V, 2.5V]
ITF-D_amplified_filtered_signal Amplified filtered signal [0V, 2.5V]
ITF-E_signal_envelope Signal envelope [0V, 2.5V]
ITF-F_12v 12V alimentation [12V, 12V]
ITF-G_gain_control Amplifier gain [0V, 1V]
ITF-H_neg_12v -12V alimentation [-12V, -12V]
ITF-I_pulse_on Pulse on [0V, 3.3V-5V]
ITF-J_pulse_off Pulse off [0V, 5V]
ITF-K_pulse_redpitaya Pulse info for Redpitaya [0V, 3.3V]
ITF-L_18v_alimentation 18V external alimentation [15V, 20V]
ITF-M_abs_angle Absolute tranducer position
ITF-N_cc_motor_pwm CC motor pwm [0V, 5V]
ITF-N_stepper_b2 Stepper motor B2 signal [-5V, 5V]
ITF-O_cc_motor_encoder CC motor incremental encoder [0V, 5V]
ITF-O_stepper_b1 Stepper motor B1 signal [-5V, 5V]
ITF-P_stepper_a1 Stepper motor A1 signal [-5V, 5V]
ITF-Q_stepper_a2 Stepper motor A2 signal [-5V, 5V]
ITF-R_reserved reserved track
ITF-S_3_3v 3.3V alimentation [3.3V, 3.3V]

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 (luc@echopen.org / kelu124@gmail.com ) 2015-2018

Based on

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

Copyright Murgen and Kelu124 (murgen@echopen.org , luc@echopen.org / kelu124@gmail.com ) 2015-2018

[](@autogenerated - invisible comment)

About

Ultrasound processing modules and building blocks

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 80.7%
  • KiCad Layout 9.8%
  • HTML 2.9%
  • TeX 2.2%
  • Jupyter Notebook 1.5%
  • Assembly 0.9%
  • Other 2.0%