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:
- the github repo, for the source files, raw data and raw experiment logs;
- the online manual/book for a easily readable and searchable archive of the whole work;
- the hackaday page, where I tried to blog day-to-day experiments in a casual format.
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.
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!
The modules sit on a breadboard, and communicate through the tracks laying below. The configuration represented below show the Basic dev kit.
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 from Adafruit)
- 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 150$ (Where? Custom made, get the Gerbers, or contact @kelu124)
Total cost of the set: 230$
The default setting for the sets
- Simply the servo and transducer module (cletus) -- get for 80$ (Where? Recycling a transducer from ebay, servo from anywhere (Amazon?))
- The acquisition heart of the echOmods (croaker) -- get for 35$ (Where? Get from Adafruit)
- Mogaba, the power supply (mogaba) -- get for 5$ (Where? Anywhere, or eg Amazon?)
- Goblin: a TGC-Envelop-ADC module (goblin) -- get for 150$ (Where? Custom made, get the Gerbers, or contact @kelu124)
- Tobo: the HV-pulser (tobo) -- get for 120$ (Where? Custom made, get the Gerbers, or contact @kelu124)
Total cost of the set: 390$
Some stuff, unexpensive to buy, to build a ultrasound testing kit, totalling less than 500$.
- Retrohacking the ATL Access 3 probe (retroATL3) -- get for 75$ (Where? Recycling a probe from ebay)
- This is the module to get high-speed (40Msps) signal acquisition. (toadkiller) -- get for 79$ (Where? A bundle at 169$ from Groupgets or as a standalone at 79$ )
- Mogaba, the power supply (mogaba) -- get for 5$ (Where? Anywhere, or eg Amazon?)
- Goblin: a TGC-Envelop-ADC module (goblin) -- get for 150$ (Where? Custom made, get the Gerbers, or contact @kelu124)
- Tobo: the HV-pulser (tobo) -- get for 120$ (Where? Custom made, get the Gerbers, or contact @kelu124)
- The motherboard of the echomods (doj) -- get for 5$ (Where? Anywhere for stripboard)
- One-eye, the controler (oneeye) -- get for 10$ (Where? from Adafruit)
Total cost of the set: 444$
[](@autogenerated - invisible comment)
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:
ThumbnailImage | Name | In | Out |
---|---|---|---|
![]() |
sleepy: The aim of this echOmod is to encase the whole modules object in a neat case, making it transportable. |
|
|
![]() |
tobo: The aim of this echOmod is to get the HV Pulse done. |
|
|
![]() |
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. |
|
|
![]() |
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. |
|
|
![]() |
croaker: The aim of this echOmod is to receive the signal and process it. |
|
|
![]() |
retroATL3: The aim of this echOmod is to get the mechanical movement of the piezos. Salvaged from a former ATL3. |
|
|
![]() |
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. |
|
|
![]() |
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. |
|
|
![]() |
silent: The aim of this echOmod is to simulate a raw signal that would come from the piezo and analog chain. |
|
|
![]() |
mogaba: The aim of this echOmod is to get 3.3V and 5V done. |
|
|
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 |
|
|
33% |
tobo |
|
100% | |
cletus |
|
|
33% |
doj |
|
100% | |
oneeye |
|
100% | |
croaker |
|
60% | |
retroATL3 |
|
|
100% |
toadkiller |
|
|
75% |
goblin |
|
|
88% |
silent |
|
100% | |
mogaba |
|
|
100% |
Here's a couple of things we're working on, for which you could help as well.
-
Boosting the 6Msps croaker acquisition
-
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)
-
Get better total ADC speed with an iterleaved move (in croaker)
-
BONUS! Get RealTime acquisition (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)
-
Publish the sources in KiCAD (@Sofian maybe?) (in goblin)
-
BONUS! benchmark power supplies (in mogaba)
ThumbnailImage | Name | In | Out |
---|---|---|---|
![]() |
elmo: The aim of this echOmod is to get be the microcontroller heart |
|
|
![]() |
kina: The aim of this echOmod is to acquire the enveloppe of the signal and stream it. Designed for slow (~64 lines / s) acquisitions. |
|
|
![]() |
retro10PV: The aim of this echOmod is to get the mechanical movement of the piezos. Salvaged from a former ATL10PV. |
|
|
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] |
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 ([email protected] / [email protected] ) 2015-2018
The following work is base on a previous TAPR project, Murgen - and respects its TAPR license.
Copyright Murgen and Kelu124 ([email protected] , [email protected] / [email protected] ) 2015-2018
[](@autogenerated - invisible comment)