This project was one that I've always wanted to do, but I never found the time to. But when the time rolled around for our final project in my Engineering 101 class, I suddenly found an excuse to make this ridiculous contraption. I first got the idea for this a while ago from the Mask of Emotion, but I couldn't actually find where to buy it. So why not do the next best thing and make one myself? It was a team project, so I did half of the work while my teammate did the other half. That's also why some of these pictures aren't the best quality, because he tried sending me the pictures, but there was a miscommunication, so I just pulled them off of a video he made over it.
The helmet has 12 faces total: happy, sad, neutral, mad, surprised, tired, confused, disgruntled, disgusted, elated, worried, and creepy. It is done with a set of 22 LEDs, 6 for each eye and 10 for the mouth. It is set up as a multiplex matrix and hooked up to an Arduino in the back of the helmet, which is powered by four AA batteries. The user can switch between the faces with 2 buttons on a controller in the user's hand.
Step 1: Materials
- a motorcycle helmet (can be any helmet as long as it has a visor)
- an Arduino Uno
- 22 red LEDs
- plenty of wire and ribbon wire
- 10 resistors
- 4-6 transistors (depends on how you set up the multiplex)
- experimental board
- 2 buttons
- button housing (an old mini M&Ms bottle)
- Hand drill
- 7/32 inch drill bit
- 3/8 inch drill bit (?) (can't remember if that was correct)
- Soldering iron
- Hot glue gun
- Duct tape
Step 2: Drill them holes
Try on the helmet and draw out places for the LEDs. For me, the top center LEDs on the visor were on my eyes and the middle row on the mouth was on the crest of my lips. Marked? Good, now the drilling can commence!
The LEDs can be secured into place with hot glue. I didn't try it, but putting the glue on top of the LED could diffuse the light so that you can see the light better from different angles. Just make sure that you don't put too little glue on them or you'll regret later on (like we did).
Also, the "legs" of the LEDs weren't long enough to fit all the way through the holes in the faceguard of the helmet, so we had to solder small wire extensions onto each leg. After we put the LEDs into the faceguard, we stuck small scraps of foam in the holes so that they wouldn't touch and short-circuit.
Next, we need a place to put the Arduino. We drilled four holes in the back of the helmet in a square pattern and used the jigsaw to connect the dots. At first the hole was too small, so we used a box cutter to remove some of the styrofoam to give the Arduino a snug fit. Then we cut a hole in the fabric on the back of the helmet so that we could run the wires from the front to the Arduino.
Step 3: Wiring in the front...
Now, solder lengths of wire across the long legs of the LEDs. These will be your power wires. When we had the ones on the mouth soldered, we folded them down and put tape over them so that they wouldn't touch the short legs and short-circuit. Then we took some ribbon wire and soldered it to the row wires and sent it running back to the hole where the Arduino would be stored.
For the columns, the short leg on the LEDs on the top row in the visor were long enough to bend down and solder to the whort legs on the bottom row. We then took some more ribbon wire, soldered it to the short legs on the bottom row on the visor, ran it across the bottom of the visor so that it could still be opened be the user, and soldered it to both of the bottom rows by twisting them all together (it doesn't matter if top or bottom are soldered first because they are all going to ground).
As you'll notice on the schematics, there is one column that was left off of the the mouth. This is because the matrix is actually set up for 24 LEDs, but it will still work with 22, it will just have one short column. When we soldered some colored (yay! color!) ribbon wire to the mouth columns to run back to the Arduino, we just soldered the one that was left off of the visor directly to the colored wire.
Step 4: ...wiring in the back
We realized something early on; the Arduino only has 3 ground pins. To solve this, we used transistors plugged into some of the Arduino's digital outputs, so that when the output was set to HIGH, the transistor would change it into a ground. At first we decided to make the rows grounds so that we would only have to use 4 transistors, but a miscommunication (short and long legs on the LEDs) lead to us using the columns as grounds using 6 transistors. This lead to a more cluttered experimental board, but I guess that was our fault.
Now, we used an experimenting board (a silicon board with a bunch of holes in it) to keep all our resistors and transistors in place in the back of the helmet. The one that our teacher gave us already had a bunch of stuff on it, so we just cut it all off, except for some nice looking pins that would fit quite nicely onto the Arduino. The only thing that was a pain was that everyone in the group was fairly new to soldering (which explains the long-stripped wires). The pins already had soldering on the back of them from their previous usage, and they proved difficult to remove. So we just left it on there and put new soldering on top of it. DO NOT DO THIS. It gathers in massive clumps and can be even more difficult to remove afterwards. Some of the soldering was difficult, and got on other pins (which is why pin 7 was not used in our Arduino code). Also, when pushing the pin on the transistors back up through the experimental board, I accidentally ripped them off so the wire had to be soldered onto the back. But enough QQ for now, back to the project.
The setup should be exactly like the one in the schematic. The only thing that not 100% is the value of the resistors, which I think is 10k for the transistors and 5k for the rows.
Step 5: Button switch
I found an old mini M&Ms bottle that I was planning on repurposing into a flashlight, but I never got around to finishing it (story of my life), so I decided to use it as a housing to hold the buttons in place. Plus, it fits well in your hand. We drilled holes in the cap so that the buttons could fit snugly inside of them. Then we cut off the bottom and ran some ribbon wire up to the buttons, soldering them in place. You could tape the wire securely to the inside of the bottle, but we didn't so that we can still open the cap to check the soldering on the buttons. Then just run the wire through the hole in the fabric to the Arduino hole. The buttons should be plugged into analog 1 and analog 2 to ground (if you want to use our code).
Step 6: Code it
Before making the faces, we need to test the LEDs to see what order they are in. For this, we used a code that would light each individual LED for a certain amount of time, and then go on to the next LED, going from left to right and top to bottom. The picture is where we found each LED to be; the numbers being the pin that the LED is assigned to (7 and 9 are missing because of a screw up on the experimental board).
To make the face you want, just light the LEDs that you want on each row. A sample would be:
and so on.
The buttons also took a bit of skill to program. It's basically a bunch of IF statements. It does a loop, reads if the button is active, if it is, then it adds to a counter. If it was the "previous face" button then it subtracts from the counter. The counter is reset once it reaches 12 or is less than 0. Each face is assigned a certain number of the counter and shows on the LEDs when it's number is active. If you would like to decyfer it for yourself, I will include the code that we used.
Step 7: Let there be power!
Black duct tape. It works. :D
And that's it! Enjoy watching people give you weird looks as you give them even weirder looks, they just can't tell that you are....