Hacking Hardware: The Never-Ending Saga of Steampunk Name Badge Development
The goals for my conference badges are simple:
- Create a conversational icebreaker to help me meet new people.
- Explore the role of wearables in the real world.
- Identify and develop the skills needed for the new wearable computing stack
I also like to make my tech fun. Steampunk-themed gadgets are certainly a draw for people’s attention and allow for tons of design creativity and eccentricity.
Today, we’ll cover the evolution of my “Electro-Matic Conference Personality Identification Device,” more commonly known as a name badge. Even a small hardware development project like this has many moving parts, especially when you throw in networking, making it wearable and modding it through several iterations. My mission is to help readers understand what you can expect as you embark on your next hardware-oriented wearable computing project.
You might recall the original version 1.0 of the badge from a few months ago. The first Steampunk name badge had a tiny 1.8-inch color TFT screen, an Arduino Pro-Mini microcontroller, four AA batteries, a little voltage regulator module and a Steampunk-styled brass frame to hold the whole works together. The firmware switched between displaying a 160×128 pixel bitmapped image and the ambient room temperature, as measured by a DS18B20 temperature sensor.
The device hung around my neck with a standard conference badge lanyard.
After wearing the badge to a couple of local events, I realized that it kind of resembled your everyday, garden-variety time bomb, as seen in any popular Looney Tunes cartoon short. Probably not the best optics for a conference speaker, particularly when traveling, if you know what I mean.
In spite of my geeky PR faux pas, the badge definitely drew quite a bit of attention at events and online. I thought it was a great first pass at building a physical computing wearable.
In a subsequent article, I talked about networking the badge using an Arduino Yun. While prototyping, it quickly became obvious that there was a huge conflict with trying to use the on-board SD card (on the LCD module) library with the Yun’s Bridge functions. You have to store the color bitmapped images on the SD card, while the Bridge library is needed networking. I explored a lot of workarounds to the problem and, short of rewriting either library, found no viable solution. Couple that with the fact that 80 percent of the Yun’s executable code space was used for just putting the images on the color LCD screen, and it didn’t leave much room for adding cool new badge features into the firmware. Sadly, I’ve moved away from using the Yun for further development of the badges.
Dead ends frequently happen with hardware. The good thing is, it only took about a week to realize the Yun wasn’t a perfect fit for my particular application. It’s still a very capable and powerful board that might turn up in a future badge with different requirements.
Fail fast and redirect to something that you think might work is the order of the day with hardware project prototyping.
After the Yun debacle, I went back to basics and decided that I also needed to make things modular, so components could be swapped between project iterations and even projects, without having to constantly solder and unsolder everything.
Version 3.0 brought modularization to the mix, while putting networking capabilities on the back burner. I also went back to the standard Arduino Duemilanove for ease of prototyping. The LCD breakout board used a 10-pin male header for the connections, and it made total sense to then connect whatever microcontroller I was using with some type of female matching connector. 10-pin stackable headers proved to be an economical and practical solution for making my own cables and connectors.
I also took modularization a step further by building a two-foot long cable to connect the LCD (display unit) to the microcontroller (control unit). Separate modules allowed the display unit to simply attach to my Steampunk jacket’s lapel and then attach the control unit to my belt or an arm bracer. A leather bracer, with the little microcontroller’s LEDs flashing away is certainly in step with the Steampunk aesthetic of embellishment and being highly visible.
Modular components also let me screw the LCD back into the original version 1.0 badge with a couple of brass bolts for when I wanted to demo the version 1.0 badge.
The Latest and Greatest
All this development and experimentation brings us up to version 4.0.
Not only did I modularize the name badge, I also tried using a Beagle Bone Black and Raspberry Pi 2 boards.
Again, like the Yun, I found that the Beagle Bone might not be suitable for my purposes. Everything on the Internet said that using the color TFT LCD with the Beagle Bone Black board required rebuilding the Linux kernel to use a framebuffer driver. The Arduino platform had libraries that took care of those details. Building a new BBB kernel was more effort than I wanted to do at the time.
The Raspberry Pi turned out to be the same situation, except with a twist. There’s lots of documentation about combining the 1.8-inch Adafruit color TFT display with a Raspberry Pi — and you had to compile a new kernel to make it work.
As it turns out, much of what I read was a bit dated and the proper drivers were actually built into the most recent versions of Raspbian. All that’s needed is to load the proper framebuffer driver at boot up and you could display things on the miniature screen. Coupling a built-in driver with the speed of the quad core Raspberry Pi 2 seemed like a potentially awesome platform for a battery-powered, networked Steampunk name badge.
After a few false starts, I was able to bring up the Linux desktop on the LCD. The mouse cursor even moved. You definitely couldn’t browse the Drudge report or Y-Combinator, although I now had a tiny screen suitable for a battery-powered operation — like a name badge.
During my research I also found out that a few people used MPlayer to show videos on the small TFT screens.
Sure enough, with a few carefully selected command line options, MPlayer will run videos at 20 to 30 FPS without a sweat.
As you’d expect, the audio doesn’t necessarily keep up with the video, especially when they get up to the 150 MB file range. I don’t need accurate audio tracking with the video on my name badge. Here’s the command line I used:
mplayer -nosound -loop 0 -vo fbdev2:/dev/fb1 -x 160 -y 128 -zoom -flip -vf rotate 1 time-for-choosing.mp4
All of the initial testing was done with a big screen hooked up via HDMI, a LAN cable plugged into the on-board network connector and a Logitech USB wireless keyboard/mouse pad. After everything worked, an Edimax USB Wi-Fi chip was used to establish connectivity to my local wireless LAN.
It was then a simple matter to SSH into the Pi from a Linux notebook and run MPlayer to show a video. The setup worked like a charm.
By the way, an easy way to create old-timey, 1880’s-styled Steampunk videos is to apply the sepia, old-time movie, scratches, and dust effects filters when editing your movies in Kdenlive.
I paired the Pi and LCD with a 2200 mAh cell phone emergency battery to get a solid 3 1/2 hours of video play time on the gadget.
Lastly, I added the following text to the
/etc/modules file so the driver would load automatically:
fbtft_device name=adafruit18 verbose=0
I also put the MPlayer command line in the
/etc/rc.local file to start the video immediately after booting up.
Wearables are the new tablets and Internet of Things. It’s even better because the hardware is getting so powerful, is fairly easy to use and affordable for just about anybody.
I have lots of new features and mods for upcoming versions of the Steampunk conference badge. This is the greatest time in history for hacking hardware.
What “wearable” will you build?