Introduction: Batkid Tech #3: Wrist-Projector Communicator

Welcome to Batkid Tech #3!
(the exciting conclusion of this series)

Here's why I'm writing this: Pretty much every wish Make-A-Wish grants involves having custom stuff built. Sweaters, posters, tiaras, hovercraft... and they're awesome and fun to work with.
>>>>> Here's where you volunteer.

Note: If you're short on time, just flip through the pictures and read the captions. Maybe also look at the "What went wrong" sections.
This instructable covers the creation of our wrist-mounted projector communicator (video from CNN):

Why a projector?
So you know that dream where you're running through the city fighting crime in a mask and cape, with a 5-year-old armored rockstar superhero by your side, looking at you like this is all normal and you're supposed to be the expert on how to do it? Yep, I have that dream sometimes too. In my version, we have matching Lamborghinis and a cute brunette to rescue.

On Batkid's big day, every danger he faces, we face together. That's the deal. We're both stronger that way.

So when the Chief of Police calls (yep, the real one; thanks Greg!), he wants to talk to both of us, face to face. If I pull out a smartphone to answer it, that's when I stop being a superhero and become just a grownup on a phone. A tablet would be slightly better, but won't survive five minutes stashed in my... um, where exactly?

Right. No off-the-shelf tech. We need to build something cool. Miles deserves that for sure.

Batman's tech is always...
...wearable and miniaturized, but over-powered
...armored so it can survive adventures
...and then used in ridiculously impractical ways
And really, what better way to take the Chief's calls than to shoot them out of my arm onto a nearby car or ceiling?
Sounds about right to me. Let's get started.

Step 1: Proof of Concept

Here's the biggest hurdle in this whole project:
  • Make a wearable projection system which can run all day on batteries, but is bright enough to see in daylight.
If that doesn't work, the whole thing is sunk.

Pico-projectors are awesome. A few years ago, the brunette and I did a Rhinestone Cowboys & Aliens Halloween costume, with a working arm-gun. (Halloween parties tend to be dark, so a tiny projector is bright enough to look great.) It was great fun, and it's been sitting in a display cabinet in the lab since then.

That projector was only 7 lumens, which is not really enough for this project. Luckily, I had recently acquired TI's new top-of-the-line model (see the next step for details).

...so the first thing I did was to stuff the projector into a mobile-phone exercise case, strap it to my arm, and go to the locations we were planning to use.

What went wrong
  • At the "damsel rescue" intersection, I had planned to project the Chief's call for help onto a shiny gold shop door (the one in the photo). On the actual day, there were hundreds of people between us and the door. Luckily there was a silver car parked right there, so we watched the Chief's message on the car.

Step 2: The Projector Core: TI DLP

The key component in this project is a DLP (Digital Light Processor) kit made by Texas Instruments. They have a few different kits, and the current version will cost $600 or so, but considering what they can do, they're well worth the price.

For this project, I used the LightCrafter Development Kit. It actually contains an on-board computer with everything from a micro-SD slot to a camera input. (These projectors can do amazing things for machine vision... imagine projecting an active grid onto the surface you're looking at.)

Smooth and easy
These units really are trouble-free, plug & play. They accept HDMI input, or can use the on-board Linux machine. And they run off 6 volts.
Brightness setting
I was running mine at the default 20 lumens (that's the brightness). You can push this unit up to 50, but you're supposed to connect a fan, to avoid thermal problems. Considering I'm already going to be using this way outside of its intended environment, I decided not to push it. That's not a lot compared to household appliances, but for a digital projector you can wear, it's excellent.
Earlier model
For previous projects, I've used (and totally loved) TI's earlier model, the Pico Development Kit. (You can see a pair of them in the picture) This is smaller, but it's lower resolution, and hasn't got nearly the brightness or features. The brightness of this one tops out at 7 lumens.
The team behind this device
This entire project only worked because of the forward-looking engineering teams at Texas Instruments. These kits are well-built (and tough... see below).
Even better, TI has an E2E Forum (that's "engineer to engineer"), and they take it seriously. Before this project had started, some of my older units malfunctioned. I posted to this forum, and very quickly got a response directly from TI. One thing led to another, and pretty soon I had a replacement, some new friends, and a chance to try out their brand new kit (the one used in this project). Thanks guys! I owe you.
What went wrong
  • During our battle with the Penguin, I smashed the entire unit on the concrete hard enough to leave pieces of the case everywhere. Once I got back in the Batmobile, I used Velcro to strap the bare projector unit onto my arm. In the pictures from City Hall, if you look closely, you'll see the bare DLP on my arm. Funny thing: it still worked. That's because the TI folks are great at what they do.

Step 3: The Computer: Gumstix

Although that spiffy Lightcrafter kit actually has an onboard Linux machine powerful enough to play video, I chose to use a computer by Gumstix to play the video via HDMI.

What's a Gumstix?
It's crazy. It's a full desktop PC the size of a stick of gum. The one I used (the "Water" model) is a 720MHz ARM chip with 512MB of RAM, 512MB of storage, and hardware-accelerated 3D graphics. That's way more powerful than almost any computer I used in college, for $169. And it's tiny, and runs on 6 volts, just like the DLP.

The Gumstix itself is so small there's nowhere to put I/O ports, so I attached it to a Summit board, also from Gumstix. It just clicks into place, and it's the smallest board they make which has all the ports I need (USB, HDMI, power, audio). Really, the design of this thing is quite clever.

Some of their machines have on-board WiFi, but I just plugged a USB hub into this one, and used a USB WiFi adapter to get it onto the web.
Why use the Gumstix?
  • Availability: I had used this processor before on a Halloween costume, so I had one already.
  • Circuit work: I had already soldered two push-buttons to the board.
  • Audio: Remember, we need to play sound. This has a standard audio jack.
  • Simplicity: It just looks good. I could actually have used a hidden phone to serve the video, but I didn't want to have to fuss with the device when there's crime to fight. The Gumstix is easy to set up and use.
Custom software
The Gumstix is a Linux machine, and mine was running a mini-GUI operating system called Angstrom. To write software for it, I just plugged it into a monitor, mouse and keyboard, and wrote a short C++ program and actually compiled it right there on the Gumstix!

The program just needed to play videos in response to button pushes, so it could be done any number of ways. I chose C++ as personal preference. I've attached the source code to this step, so you can read it, or use it.
Custom enclosure
Originally, I tried to stack the Gumstix on top of the projector, but there were just too many stressed and crossed parts for me to feel comfortable with it, so I used the laser cutter to make a sweet little enclosure for it (with the blinking lights visible, of course), and strapped it on my gauntlet right next to the main assembly.
What went wrong
  • Three days before the eventI destroyed my only Gumstix. I messed up. Linux experts can begin laughing at me in 3.. 2.. 1.. my actual error was forgetting a "&" in my init.d startup script (which launches my program at machine startup). Without the "&", my program starts, and the rest of the system waits for it. My program wasn't set to quit, ever, and it wasn't finished.

    Impossible: Three days? No way. It's the Kobayashi-maru of Batman events. There's no solution. There won't be a projector. Miles will still have a great day, and I'll just know for the rest of my life that I could have done better. Just in case, I ordered another Gumstix, and sent email saying "Please please ship this today. We're doing this Make-A-Wish project..."

    Miracle: One hour later, thanks to a lovely woman (Susan) who saw my email, I got a phone call by Gordon, the CEO of Gumstix. He has a replacement Gumstix setup hand-carried to me the next day. Thank you Commissioner Gordon, and Susan. Thank. You.

    ...also, I added a "panic exit" button press to my code immediately, so this never happens again.
What else went wrong
  • Everything else was minor. For example...
    • ...it turns out that if your program launches via init.d, then you can't call mplayer (the video player) because the window system wasn't set up when you launched. I switched mplayer to direct-screen-write mode ising the "-vo fbdev" argument. Not ideal (that's why the logo is still visible behind him), but it got the job done.
    • ...the "display" command (to show the bat logo) wasn't working, so I just set my desktop to be the bat logo. That way it's there before the videos play.
    • ...the Gumstix came loose from the Summit board when I did a flip on the trampoline. This was also my fault, as I hadn't used the handy plastic fasteners which come with the board. Snap them in place, all good.

Step 4: Power System: Utility Belt!

The power system was the easiest part. Seriously, if there's one thing Batman knows how to do, it's wear a utility belt.

We just need 6 volts (for the TI DLP and also the Gumstix). Four D batteries should give more than enough juice, and I can keep extra batteries in the car, just in case.

Smartest decision ever
I used USB connectors as my power connectors. This was just convenience at first (the cables are easy to find, and when you cut them open the leads are red/black coded.) Later, however, I realized that because of this decision I can run the entire projector from any USB socket! Phone charger, whatever.
Parts
  1. First, I bought a $12 Batman costume belt. Actually, I bought two of them so I'd have extra pieces.
  2. Then I bought a pair of dual D battery holders and some USB extension cables at Radio Shack.
  3. Then I went to Cliff's and bought some gold paint and a lot of black Velcro.
Paint and velcro the battery holders to the belt, solder it all up so that there's 6 volts on the correct pins of the USB cable, and then make crazy faces as I plug it in for the first time.

What went wrong
  • The whole system ran perfectly ...for about 45 seconds, and then it froze. It turns out that the D batteries don't provide enough constant current to run both the projector and the Gumstix.
    Solution: I split the power circuit onto two separate USB cords, and plugged the Gumstix into a small USB phone-charger battery, tucked discreetly into my gauntlet. With separate power, everything ran with no trouble.

Step 5: Sound System

Audio was a huge part of this device. The Chief is a good-looking guy, but if Batkid can't hear what he's saying, there's going to be trouble. I needed something loud. And cool-looking.

Radio Shack had the perfect thing: rechargeable expanding speakers. I couldn't have come up with a better fit.
  • They're self-powered (no more load on the bat-belt)
  • You can pop the top off with a screwdriver, exposing that cool-looking shiny blue disc.
  • Integrated power switch and volume control.
Plug this into the Gumstix, secure it in place with double-sticky tape, and we're in business.

What went wrong
  • Just before lunch on Batkid's big day, the projector came on by accident. The chief's voice came booming out of my arm, and I quickly shut it off. Miles grabbed me and said "That was the Chief! What did he say?!" I gave him a pensive look (not easy through the mask) and told the truth. "Something about the Penguin, I think. What could that mean?" Whew.

Step 6: Designing the Case

Designing a case to enclose wearable electronics can take weeks, but I used every sneaky shortcut I could think of, and got the first blue mockup in an hour.

Sneaky shortcut #1: Given the thermal issues involved in running a projector, I decided to leave the sides of the case open (really hoping it wouldn't rain). Here's what I did...

  1. Place all the parts together and fuss with them until the whole thing was reasonably compact.
  2. Measure the locations of the screw-holes on each board.
  3. Build outlines of each component in Illustrator, in a layer called "components".
  4. Trace a cool-looking outline around them, in a separate layer called "shell".
  5. Duplicate all of the screw holes from "components" into "shell".
  6. Add a bunch of extra screw holes, anywhere the components aren't in the way.
  7. Add a bunch of Velcro-strap slits in the lower shell.
  8. Add a bunch of hexagonal holes in the upper shell.
I didn't worry about screw sizes or screw-hole diameters, because I still had hundreds of screws left over from this project. Best to use what I've got on-hand.

With the case cut and ready, it's time to put it all together!

What went wrong:
  • The holes I cut in the top shell made it way too fragile. For the final shell, I removed many of them, and made others much smaller.
  • Stacking the DLP and the Gumstix seemed like a neat idea, but it turned out to be much simpler to separate them. I didn't figure this out until the device failed two nights before the event.

Step 7: Test It All Together

Having worked with the components separately for more than a month, it feels crazy to pack them all into a box and switch it on.

What went wrong:
  • This step actually went more smoothly than I expected.

Step 8: Final Assembly!

After a quick re-design of the case, it's time to put it all together.

I used a thin black acrylic as the material. I also placed some window-tinting film on top of the electronics, just for a little extra protection and spiffification.

One unusual step: For laser cutting, it's very important to focus the beam, for a nice sharp cut. In order to make the bat logo spiffy and deep, I actually de-focused the laser by more than an inch, and left it in high-power mode. This made a nice wide outline, cut deeply but not all the way through.

What went wrong
  • Acrylic is handy and easy to laser-cut, but breaks easily. In the picture, you can see that I've cut three copies. That's because I've broken two of them. The damsel/muse has recommended rebuilding this part from anodized aluminum, and she's right. It'll take longer (and different tools), but will make it last forever.

Step 9: All Systems Go!

Success! Every time Batkid heard from Police Chief Greg Suhr, it was using this device. See the attached video of the final device in test.

The video messages were expertly recorded by John Crane and his crew.

Here's a clip of it in action
...and here's a the final result again, via CNN:

Special thanks
  • Miles and his family, who wished for something amazing
  • SF Police Chief Greg Suhr whose enthusiasm and authenticity made the day come alive
  • Gordon Kruberg and Susan Lehman from Gumstix, for rescuing the project from certain doom
  • Beth Stafford and Pascal Nelson from TI, for providing brilliant cutting-edge technology and support
  • Patricia, Teresa, Jen, Lynne, John, Mike, Philip, and the rest of the Make-A-Wish Batkid team, for making it all happen
  • Kristen, Christopher, Jersey, and the rest of the SF Opera staff, for making our outfits great
  • Jennings, Xiaohong, Barry, Chris, and the acrobats at Circus Center, who gave Miles some real superhero training
  • The entire city of crazy awesome fun people, known as San Francisco, who took time out of their schedules to make Miles' dream real
  • ...and most of all, my muse, for her inspiration and great shop tools.
Rescue the cute brunette: check!