Playing with SDR

This past summer I bought an RTL-SDR dongle. If you’re not familiar, it’s a software defined radio (SDR) module that is typically used for TV and radio tuner cards in computers. Well, the cool thing about this chipset is you can get more than just radio and TV! In fact, you can get anything 20 kHz to about 1GHz!

Traditional radios are hardware based, either analog or digital, intended and tuned for one specific frequency range or band. What’s cool about software defined radio is, the raw signal is sent from the radio and is processed by the computer. The CPU does all the heavy lifting, and as a result, you can do very interesting things for very cheap!

I started out with a program called SDR#, it allows you to tune to a frequency range and see the radio spectrum in real time, with both a FFT graph as well as a waterfall view of that FFT. Here’s what it looks like tuned to FM 102.1 

What’s even cooler, is I can pick up the radio signals from anything… My car fob, police/fire radio, garage door openers, the radio signals that control the railroad signals, GPS, and so on.

I also got the Hack-RF, a half duplex SDR transceiver. It can receive and transmit from 20 kHz up to 6 GHz! I’m also just getting started with a program called GNU radio. Very powerful, open source, allows you to do a lot of cool things. I made this basic FM station in less than an hour, and it can be tuned to any frequency!

That small flow chart, made in the GNU Radio companion program, gets converted to python code. It makes the development of radio programs much faster and easier. And it has all of the basic DSP and radio modules built in, modulation, demodulation, FFT, complex resampling, etc. Anything you could ever want to do.

It’s been a great way to get familiar with DSP, something I’ve been thinking about going to grad school for.

How I 3D Printed My Kidneys

So, the other week I was in the hospital for extreme abdominal pain. Turns out, after a CAT scan, I found out I had kidney stones. Worst pain I’ve ever felt.

On the plus side, I was able to ask the CT techs for the DICOM files! DICOM is a protocol that stands for Digital Imaging and Communications in Medicine, and this is what the CAT scan machine spits out.

What a CAT scan machine does is take an X-ray while moving the patient (me) and rotating the x-ray aperture (emitter) and corresponding sensors. The procedure took a couple of minutes, and the result was thousands of individual x-ray image “slices” from all different angles. Using clever maths, it’s possible to use those shots from multiple angles to determine the density of whatever is being imaged. In this case, it was my abdomen and kidneys. The darker areas shows are areas that did not absorb much radiation: skin, muscle, fat, etc. The lighter areas are areas that bounced back much of the radiation, namely my organs and bones.

The CT tech’s computer takes all of these individual slices, stitches them together, and creates a 3D model that they can analyze, and view in both 3D and 2D. The 2D slices generally correspond to the 3 planes of the body, Sagittal, Coronal, and Transverse, planes. Through these planes, they can pan back and forth through the body.

With those sliders, it’s possible to pan back and forth, through the body, looking at all sorts of different layers.

Now, the files the techs gave me were only 2D, so I used a program called 3D slicer. It can be found here: . It is a very powerful program, allowing you to identify, or trace, over the individual slices. The end result is a 3D composite made from the individual slices. Here is what the output from 3d slicer looked like:

Note that there are a lot of lumps, ridges, and points, that are due to artifacts from the slicing process. I then put the raw .obj files and opened them up in Z-Brush. Z-Brush is a powerful and intuitive sculpting and modeling program, usually used for digital artists. With it, I was able to remove the many artifacts and smooth the kidney out to what it should look like:

I then opened up the .obj file in Slic3r (not to be confused with 3d slicer), added support material, and got the file ready to be printed. I exported it as gcode and got it ready to print!


Unfortunately I haven’t had a chance to actually print the kidneys, I’ve been too busy with work and school.

I plan to stop at Milwaukee Makespace this Tuesday, and I will upload the pictures of it as soon as the print is done!