Monday, July 20, 2009

Robot Costume


This a a robot costume that I made for Halloween '07. The mouth is an LCD screen; the eyes are lit by multi-color LEDs. This was my first real foray into amature electronics. It's a good manageable sort of project to learn through for someone with a little programming experience and a few months of electronics tinkering under their belt.


The LCD had a nice strong back light and could display two lines of text. The eyes were plastic cups painted black on the outside, which gave a nice glossy sheen when viewed from the front. I cut out the bottoms of the cups and replaced them with a perforated silver paper made for cross-stitching. Because of the holes, I could see out easily but they looked mirror-like from a few feet away. The LEDs around the eyes were tri-color, essentially three LEDs in one package, giving a full red-green-blue color range. I filled the rims of the cups with hot glue and set the LEDs into that to diffuse the light around the circumference.

The ears were the bottoms of coke cans, punctured for air flow and sanded for a metallic finish. I wanted the case to have a thrown-together look to offset the electronics. The back opened up to let my head in and out, with a velcro closure. There was a USB port at the right temple, a power switch at the back right corner, and a fan at the back left, which I didn't get working in time. I had two additional air vents on the bottom, right under my mouth and nose.


The chest box featured a bunch of buttons, three knobs, and a power indicator light. Each button put a message on the mouth screen and in some case set the eyes to a color matching the message. Another button set the eyes to do a slow random walk through the color range. If the eye color was not forced by the buttons, it was controlled by the three knobs: red, green, blue. One button set the screen to display text coming in over USB, for on-the-fly communication. The chest box also held a battery pack, and power could be taken from the batteries or the USB port when the head was plugged in.

The head housed an Arduino microcontroller. Its input/output pins are limited, so I made an expansion board with a multiplexer to multiply the inputs and two daisy-chained shift registers to multiply the outputs. It turned out to be a great solution for pin-greedy Arduino projects. I'm sure I'll use it again in the future. Writing a set of functions to abstract away the details of the expansion board was really good practice. I was initially afraid that shifting two bytes out the shift registers and latching them every time I needed to change an output pin's setting would be too slow for running the LCD. Silly me, it was actually too fast and I had to put in a delay to communicate reliably. I wrote my own set of functions to run the LCD, working from the data sheet. I recommend that to anyone trying to get started with this kind of thing. It was just challenging enough to make the payoff of a working screen really satisfying for an amateur like me.

Here's a picture inside the head. The nose brace and vents were great for comfort. My head just fit inside. Incidentally, the head is made from the two boxes that the supplies arrived in from Digikey, hot glued together in the middle. It's good to know what size box fits your head, I suppose.

Thanks to J for the two better looking photos.

No comments:

Post a Comment