I’m an LED maniac. I put LEDs in (or on) everything. I’ve built LEDs into concrete coffee tables, shelves, and microphone stands. I’ve made more custom lamps with LEDs than I can count. So there was no way I was going to skip on bedecking one of our Misty II robots with some type of LED lighting. As I was thinking about putting LEDs on the robot, I realized it would be the first LED accessory for Misty II, so it had to be memorable. It had to stand out.
How about… a mohawk? They do tend to stand out. That’ll do it.
So now that I know what I want to build, let the fun begin!
With the start of any project comes a flood of questions. How big should it be? How many LEDs should I use? How do I attach it to the head? How do I power it? Do I have it controlled via the robot, or do I simply have it running on its own? What microcontroller do I use? How much time can I justify spending on this? How much money?
Aaagh! Analysis paralysis! Gotta step back and tackle these one at a time…
Control, power, NeoPixels, and magnets
First things first. I decide that I’m willing to spend about 4 hours on the project total, and I don’t want to spend any money on it, so I’ll re-use parts I already have.
I do want the robot to have the ability to control the mohawk. There are a variety of ways to do this, but in this case, I’m going to use the Arduino™ board in Misty’s Arduino Backpack, because it saves me from having to worry about how to make the electrical connections to the robot.
On the back of Misty II there’s a USB port and a line of “pogo” pins for the serial port. The same connector that contains the serial port also provides 3.3V power. The Arduino board built into the backpack will contact the pogo pins and automatically connect with the 3.3V power line. Easy.
(If I didn’t have the Arduino backpack, I could do something similar with a protoboard with 0.1 inch-spaced holes, to which I could connect another Arduino via power and UART wires. But this is an extra step in the process, given I’ve already got the backpack.)
Now, how big do I want to make the mohawk? Hmm, maybe it stands out from the head no more than 4 or 5 inches, and has about 6 spikes in it. Next question.
How many LEDs should I use? Well I want the mohawk to be just wide enough for one strip, and I want it to be fully lit from end to end. The mohawk should wrap from the base of the head/top of the neck to the point where the visor starts. That’s about 175 mm, which works out to 11 LEDs, using a 60 LED/meter strip.
And by “LED,” I mean NeoPixel (WS2812B LED). I’ve been using the NeoPixel for years because it’s designed to be daisy-chained in a way that lets me control a very large number of LEDs from a single microcontroller output. Before NeoPixels existed, I’d often have multiple microcontrollers talking to each other just to control all the LEDs I had in a project. NeoPixels also have all the necessary circuitry built in, so I don’t have to determine the size of and add a resistor for each LED I’m using.
The NeoPixel strip itself is 10 mm wide. Given the opacity of the standard white PLA filament I’m going to use for printing— not translucent, because I want the light be diffused— I think 1.5 mm thick walls should let enough light through. So, this all equals a 13 mm-wide mohawk. Woohoo! Another question down!
Now, how to attach it? I’ll put magnets in the mohawk, and then (Hack warning!) I’ll open up the head and hot glue magnets along the inside of the cap so the mohawk will stay in place. This is a cheat, and the only reason I do it is because I’m right here at Misty Robotics, where we’re building Misty II prototypes.
Actual Misty II owners don’t need to mess with adding magnets, because real, non-prototype Misty II robots come with built-in magnets under the antenna “cap” on the side of her head. This does mean that your mohawk’s physical design will require a larger “footprint” to ensure the magnets in the mohawk extend over the antenna cap, which is more to the side of her head than in the middle.
That right there is a pretty darned good start. I haven’t run into any show-stoppers that mean I can’t build it. And I have all the parts I need. Awesome!
I think the hardest part of this build for me is going to be matching the shape of the base of the mohawk with the shape of the head. I’m an electronics and firmware guy. Pretty good with electrical/electronic work, but 3D modelling for me takes more effort.
To do this I’m going to need the exact design of the head’s profile. I pop over to the desk of my coworker who did all the CAD for the robot, and ask him if he wouldn’t mind sending me a STEP-format file of the head. He being a master negotiator, I have to promise him a Coke Zero to get the STEP file.
I’m not cheating by using Misty’s CAD files, by the way. We’re releasing CAD files for Misty II publicly. These will include the designs for the antenna cap, so for a more limited project you could just modify those. Still, it’s pretty likely that you may want to do more complete headgear for Misty at some point, so it’s good to walk through the process.
For this project, I use Autodesk’s Fusion 360™ software. I open the file and take a few minutes to inspect the features. This is my first foray into this program, and I am pleasantly surprised to find that it has most of the features of Autodesk Inventor® that I use on a regular basis. It looks like the STEP file I received has nearly all the individual pieces of the head, the majority of which I won’t need. I quickly go through and hide all the superfluous parts, keeping only the visor and the head cap.
Even though I have a 3D model of Misty’s visor and head cap, for the mohawk I only need the 2D line that goes from the base of the head cap to where the visor starts. To get this line, I create my work plane such that it dissects the head cap from front to back.
I then proceed to “project” the curve of the head cap onto the plane by selecting SKETCH > Project/Include > Project.
I select the top of the dome of the head cap as the geometry to project, then hide the head cap, so it won’t get in the way. What I’ve got left is a 2D curve for the bottom of the mohawk, right there in my work plane.
I grab the Spline tool and start drawing in the upper part of the mohawk. This part takes the most time, as I end up starting over several times and tweaking until I get a shape with which I’m happy.
Earlier I’d decided that the mohawk needed to be 13 mm thick to account for both the width of the LED strip and the 1.5 mm walls on each side. To accomplish that I extrude the mohawk design 6.5 mm out of the work plane in both directions.
Then I use the shell tool to hollow out the design, leaving behind those 1.5 mm thick walls.
This looks like a good place to stop and do a print. The design isn’t finished by any means, but it lets me test all the important aspects of this design. Does the light shine through well enough? Does it match the shape of the head and adhere strongly enough?
I save the file, then select File > 3D Print. A window pops up that lets me select the part I want to print. I make sure to select only the mohawk, and not a part from the original head. I also make sure that “Send to 3D Print Utility” is checked. This opens the MakerWare software and automatically imports the file.
I orient the part so that it fits on the Makerbot’s print plate, and try to minimize the amount of support material that will need to be removed from the printed part. I slice it up like a tomato, load the output file onto an SD card, insert the card into our MakerBot Replicator 2, and hit Print.
Whew. Now I can move on to wiring up the LEDs and Arduino.
And just a little electronic work…
This step is the fastest of the three main steps (structural, electronic, firmware).
I grab a string of NeoPixels I have laying around and cut off a strip of eleven. Next I measure out enough 28 AWG stranded wire to safely run from the backpack connector to the beginning of the NeoPixel strip at the base of the head cap. I cut the three wires I need (5V, GND, and a signal line) and connect them to the NeoPixel strip.
I then grab a Misty Arduino Backpack and connect the three wires to the appropriate places on the Arduino using male header pins. I chose pin 7 for the signal wire because I like the number 7, but really any GPIO pin would work for this.
I place the other end of the wire with the NeoPixels just inside the plastic mohawk.
Before I hot glue it in, I also add a few magnets into the glue along the length of the strip, which is how — for my hardware hack version — this will attach to the head. If I were attaching the mohawk via the magnets in the antenna cap, I’d have a file showing me where the magnets were, so I could glue them into my accessory accurately. The only thing I’d have to worry about would be polarity.
That’s all I have to do. The Misty Arduino Backpack board is already built to connect immediately to the robot’s communication and power lines, so I don’t have to do anything to make that connection. I simply screw the backpack together again and snap it onto the back to make sure it works.
And… YES! On to the firmware! That’ll be in Part 2, so stay tuned.