I had the amazing opportunity to help Skunk & Weasel Cosplay with one of their projects and make the led goggles/glasses for their Wrench Cosplay. Both of them are know for their high quality Cosplays and you should totally check them out on Facebook. (But don’t forget to come back here!)
Take a look at the finished mask:
So, Wrench is a new character from Watchdogs 2 and prominently known for his mask which has LED glasses, that displays his mood via emotes. Since I am a Techie, I offered to help with the LED part, which was a lot of fun and I hope this guide will help others to build there own version. If you have any questions, comments or you need help with your projects, use the comment section below or drop me a line at firstname.lastname@example.org
For now take a look at the official cosplay guide:
— Watch Dogs (@watchdogsgame) July 12, 2016
Check out those displays! Look at that resolution and and pixel density. People have made LED glasses before, but usually with low resolution matrices, like 8×8 or so. Something like that would be okay….ish, but I thought to myself, that I would have to kick it up a notch for Skunk & Weasel. Something that is just ‘okay’, would not be enough.
If you want to try this at home, please note that I did some really horrible things to some really nice Adafruit merchandise. These hacks may damage the electronics, even if performed correctly and you might even accidentally damage your USB Port(s), if you follow this guide. I take no responsibility for any damages that may be caused by following these instructions.
You have been warned.
- 16 x 16 pixels per eye
- External power supply – should last for longer then 10 hours.
- Remote Control for the emotes – single quick push, emote flashes up. Longer press, emote is displayed until another button is pressed.
Some of the materials used in this project:
(Note: these are affiliate links. I get a tiny amount of money if you use them to buy stuff. This comes at no additional costs to you, but helps me to break even on my server costs and additional spending on the projects I want to present here)
- Adafruit 0.8″ 8×16 LED Matrix FeatherWing Display Kit – White
- Anker Astro E1 5200mAh Mini Externer Akku Power Bank USB Ladegerät mit PowerIQ für iPhone 6s, 6, 6s Plus, Galaxy S6 S5 und weitere (Schwarz)
- Aukru HC-05 Wireless-Bluetooth-Host Serial-Transceiver-Modul Slave und Master RS232 mit 6 set kabel für Arduino
- Tinksky HC-06 Bluetooth RF-Transceiver-Modul drahtlose serielle 4 Pins für Arduino (zufällige Kabelfarbe)
- Andux Zone Jagd Airsoft X400 Wind Staubschutz Tactical Schutzbrille-Motorrad Brille GL-04 (clear)
- Nano V3.0 Modul mit ATmega328P, CH340G, 5V Board, 16MHz, Arduino kompatibel
I used cheap recreational goggles for this project and replaced the clear plastic visor with some perforated aluminium sheet metal, so that the LED glasses can be hidden behind it. When you buy your sheet metal, get some with waaaaay bigger holes. You basically want this to be a mesh, so very little light is lost. The ones I bought were to small and I ended up drilling a bazillion holes by hand, while constantly praying not to fuck it up.
The visor comes off very easily and I used it as a guide to cut the sheet metal.
I used an angle grinder to cut the sheet metal. Any other rotary tool with a grinding wheel should work too. I prefer grinding, since it makes very clean cuts and wont leave any tooling marks. You only need to file away the burrs and then you are good to go.
As I mentioned, I had to widen the holes by hand, which worked out better then I expected. The holes were originally 2 mm in diameter, spaced 3,5 mm apart (measured center to center) and were drilled out to 2,8 mm. If you have to do this, I suggest to not drill the edges. Nobody will notice this or even care and it might be a good idea to have sturdier edges. Drilling also leaves some nasty burrs, which need to be removed. Remember, this is a mask and will be worn on the eyes, you DO NOT WANT metal shavings in your eyes. Be thorough!
In any case, you need to use some sandpaper on this and rough it up, because we are about to paint it black.
Not to bad right? I used a simple acrylic paint from the hardware store and a brush, but painting isn’t really my thing. The pros among you may get better results with spray paint or airbrush or something I haven’t even thought about. I was playing with the idea of getting it anodized by a friend, but there wasn’t enough time and I was worried, that any acid wash used in the process might eat away to much of the thin structures.
Enter the (LED) MATRIX
After consulting google for a little bit, the KWM-20882XWB-Y seems to be the LED matrix with the highest available resolution, condensing an 8×8 LED array down into a square of 2 x 2 cm. Also, it has white LEDs! Let me tell you, there aren’t that many white LED matrices to be found…. After making a small cardboard mock-up, I figured that 4 of these for each eye is all that would fit into the mask and would provide sufficient resolution for all the Emotes. That would be astonishing 16 x 16 LED’s per eye! Most LED glasses have only a resolution of 8 x 8 pixels.
Luckily, there are modules available by Adafruit which include a controller (HT16K33). they can control up to 2 matrices and handle all the current limiting and complex multiplexing of the LEDs. This makes it easier to control the insane amount of LEDs with as little effort as possible. This is not (just) lazyness but it also makes the result less error prone. Since this guide is aimed at novices, I wont go into much detail about the electronics, but you should still be able to hook everything up. An in-depth article about the modules and the software will be written in the future, if demand is high enough.
For our purposes, the modules are a little bit to wide and leave an unacceptable gap in the middle. But as you can already guess from the picture, I solved this by filing away the excess material. A majority of the connectors holes on both sides isn’t used anyway and serve no purpose.
So I filed the edges of the PCBs, until they weren’t protruding anymore and where on level with the LED matrices.
See? No more gap!
As I said before, most of the pins aren’t used by the module anyway and it its totally save to solder the two boards together, for more stability. These ‘double-modules” need to be wired, in order to work properly. Solder as indicated in the picture. Note, that the top connections ABSOLUTELY NEED to be connected like this, at the bottom side of those resistors (the black rectangles, marked 1002). The wiring on the top is for the I2C data lines, that the boards use to communicate and the bottom ones are for the power supply. According to the pinout, red is +5V, green is ground (GND), beige is SDA and turquoise is SCL (you don’t need to know what this means, but you need to know which is which later, when you hook the display up to the Arduino).
Sidenote: I connect the display to 5 V, although the modules are designed to work with 3,3 V from a feather board. As far as I can tell, the controller chips are designed to work with up to 5 V anyway and seem to limit the LED current automatically. I can’t find a clear statement about the current limiting in the HT16K33 datasheet, but it works perfectly, so I didn’t ask any questions.
Your result should look somewhat like this, minus the aluminium strip. That comes later. You also nee to connect booth ‘eyes’ with each other. Just solder SCL to SCL, SDA to SDA, 5V to 5V and so on and you are good to go. You could basically hook this up to any Arduino and play around with it (errh…I mean make sure that it works…).
By coincidence, the mounting holes of the modules align perfectly with the sheet metal. So I cut out a strip of sheet metal with a nibbler (a type of metal work scissors). Sometimes, the most important thing when planning a project, is to have dumb luck. I bend the metal strip into shape and screwed the modules on it, with some M2 screws, which where cut to length and then filed, in order to remove burrs and tool marks. Looks a lot more like glasses already!
I used an Arduino Nano to control both displays. You could also use an Arduino Pro Mini, which would be smaller but in this case I wanted to use something that could be programmed again in the field by a layman. You know, just in case something goes wrong, a layman could plug this to a computer and I could reflash everything by remote connection. With the Pro Mini, they would need a programming dongle and I would also need to explain to a layman how to connect that to the goggles and only God knows, if connecting a programmer later would be even possible at all. Keep in mind that this would also most likely be in a situation where everything broke and they needed it in working order in 5 minutes. So no, I didn’t take any chances.
At any rate, I took the Arduino and connected it to the display. Hooking up GND to GND, 5V to Vin (NOTE: I used a 5V power supply, so this works and doesn’t stress the voltage regulator on the Arduino. Your setup may be different.) and of course SDA to A4 and SCL to A5 (Note: Only applicable for the Arduino Nano, consult the pinout description of your board, if you use something else). I don’t have a picture of that, but you can see something in my full systems check. This is also how I did most of my software testing.
After confirming that everything works, I hot glued the Display into the goggles at the center and at the edges. It is actually a very tight fit already, so I didn’t want to mess everything up with big globs of hot glue. I might have to disassemble everything later and using huge amounts of glue would just get in the way.
The Bluetooth modules
Connecting the HC-05 to the HC-06 Module is a little bit involved if you haven’t worked with an Arduino before and so far I haven’t managed to write a newbie friendly guide for it. Please look here for more details: https://www.martyncurrey.com/connecting-2-arduinos-by-bluetooth-using-a-hc-05-and-a-hc-06-pair-bind-and-link/
I will update this post with some additional info, as soon as I can put it together.
The LED glasses are controlled by remote via Bluetooth. You could use a commercially available keypad, put there are none that have more then 16 keys (without having significantly more then 16 keys) and we want(?) to have all of the 17 Emotes from the official cosplay guide. So I soldered my own, which turned out to be smaller anyway. Originally I planed to have this hidden inside a spike wristband, but I soon realized that it was getting to big and was in danger of turning out like this:
So, a simple remote it is. I soldered small push buttons into a grid on a piece of perf board, with 4 columns and 5 rows, the last row has just one button. I apologize for not having a clearer picture and diagram, it will be provided later, when I have more time.
The 5 row are connected to pin 2,3,4,5 and 6 of another Arduino Nano and the columns to 7,8,9 and 10. The button number ‘1’ should be connected to row 2 and column 10. If you don’t care which button is which, then this doesn’t matter. Finally, the HC-05 Serial to Bluetooth module is used to connect to the goggles. Just wire TX to pin 11 and RX to Pin 12 and you are good to go. I soldered everything onto the perf board and gave it a USB plug, so that the remote could be powered by a powerbank. I used another Anker Astro E1 5200mAh, which is totally overpowered, but this way there is an emergency spare for the goggles. The powerbank is attached to the remote with a strip of double sided velcro.
You can find the firmware for the remote and the goggles here:
If you have have written programs in C oder C++ before, you will see that I just modified some example projects and that the code is pretty trivial. I choose to write simple, easy to read code over elegant solutions, so that everyone can give it a try, without breaking everything.
So that’s basically it. I hope you enjoyed the guide and that you will have an opportunity to see it live at Gamescom 2016. If you have questions please use the comment section below.