Hacking the Raspberry Pi: Wearable computer and software defined radio

This marks my first real foray into actually sharing the stuff I work on with the internet. Lately people have been telling me I ought to blog about some of what I’ve been doing, so I’ve decided to go for it. With that out of the way, onwards to the things you may have been linked here for.


Over the last few weeks, I’ve been working on a wearable computer. It runs on an unmodified pi. Power is provided by a battery enclosure from a Chinese direct from manufacturer ebay seller, designed to recharge cell phones and other USB devices using up to four, user provided 18650 lithium ion cells. It handles charging voltage regulation and protection. The batteries where salvaged from dead laptop batteries, which often have only one or two cells go bad, rendering the whole thing useless. Due to space constraints, the pi is powered through 5 volt and ground pins in the GPIO pins. I got power out of the battery box by the simple expedient of soldering little wires on to the back of a DC power jack on the PCB. One USB port connects to a USB hub set into the side of the case. The other usually connects to a USB wifi device, but it failed. Video output comes from the RCA port. Everywhere that I could, things are connected with right angle ports to save space.


The case was built using the battery box’s case and a plastic project enclosure with a metal lid. I noticed that they were the same width and the project enclosure was just a bit taller than it needed to be, so I cut the long sides off the bottom half of the battery pack’s case so that it would fit inside the project enclosure, then trimmed one end of the project enclosure so that the ports and controls on the battery enclosure would be accessible. I cut the metal cover for the project enclosure to fit the gap the battery enclosure left and drilled holes in the battery box’s enclosure to match the posts the other side of the cover would have been screwed in to. I also drilled cooling holes and cut access points for the USB hub and HDMI port in the sides of the project enclosure.

Air holes


USB ports


The head mounted display is a Nyxio Venture, chosen for no reason besides it being cheap and having a composite input. The input device is a generic wireless mini keyboard and trackpad intended for giving presentations. The battery enclosure may be found here.

The software side is currently uninteresting, and is basically just Raspbian Wheezy with some very minor interface customizations. Future work will involve creating a customized interface that will be more usable on a low resolution HMD, and may eventually include adding a camera and some sensors and doing something interesting with it. I might experiment with augmented reality, and I’m thinking about setting it up to control the pointer with head movements.

Expect more about this in the future.

On another note, this weekend I attended Rochester, NY’s first Random Hacks of Kindness event. Skyler Lehmkuhl and I worked on trying to use the RTLSDR project with a raspberry pi to build a cheep software defined radio platform. We focused on building an APRS to Twitter gateway as a nice demonstration problem, since APRS signals are very frequent and need to be processed to be readable. As a tortured rationale as to why we worked on it at RHoK, it is also important to note that APRS has applications in emergency communications and disaster relief, so being able to work with it on the raspberry pi with a cheap TV tuner could be very useful for coordination in a disaster relief situation. Mostly, though, we just wanted to play with software defined radio on the pi.

The RTLSDR project allows most Realtek RTL2832U based USB TV tuners to act as a software defined radio receiver covering a very large chunk of spectrum in the VHF and UHF. It has been used with the pi before, but as far as we could tell primarily as a way to relay the raw data to another computer over the network. We had some concern about the pi’s processor being sufficient for what we want to do, but it looks like it might end of being adequate. We’re still working on it, though, and we haven’t put it all together quite yet.

We are using GNU Radio, GNU Radio Companion and multimon, and plan on using python for some of the components we haven’t gotten to yet. The vast majority of the work thus far has been trying to decode the APRS packets using that combination. We’re receiving them just fine, at least on my laptop, and we’ve put together something that is filtering the signals out of the noise and giving us the raw audio just fine, but there are a few oddities related to sample rates and a DC offset which are preventing multimon from decoding anything. What little we currently  have on github can be found at https://github.com/skykooler/radiobird. I’d also like to thank Rob Bishop and the Raspberry Pi Foundation for giving me a free pi to develop this project on.

Expect much more about this as well.