A few months back I made a crack elsewhere about how you could tell I was a geek because I was going out to my workshop to program a LARP costume. It’s possible that people who don’t know me may have thought I was joking in some way. Foolish people. I don’t joke about such things! Well, okay, I might joke about such things… but hey, I was serious this time.
Death Unto Darkness – Event 4 – The Long Way Down
I used to dabble a bit with Warhammer 40,000 when I was a teenager and dinosaurs still walked the earth… and have recently found a rekindled interest through the PC game “Dawn of War“. On top of this, I’ve known a few of folks involved with the Death Unto Darkness live-action games for a while – some of whom are players, some crew. I’d even managed to find my way along to crew some of the previous games myself, where I died repeatedly whilst wearing a succession of foolish hats. This time, though, I was actually able to make the whole event.
I’d already been putting thought into how to create an Adeptus Mechanicus costume for a while. They’re a faction within the Warhammer 40,000 game world that I find quite interesting. So when I heard that they were going to be involved in the plot, it made my day. It meant I had an excuse to tinker with electronic gubbins even more.
The Core Idea
My initial idea was that I wanted to have a glowing powerpack mounted on my back, and that it should be resilient enough that I could bash it about a bit and light enough that it did’t restrict me too much. I didn’t quite achieve all of these due to time & money constraints, but I did end up with something that I think looked pretty cool.
First, I needed a base on which to start mounting everything. This needed to be something I could fix things too and strap on to my back, but it also needed to be something that was reasonably comfortable when I was wearing it. I looked at a few options, and even bought a cheap water-carrier rucksack as an option… but in the end I found an old rucksack in my wardrobe and used that instead. I’d had it for more than two decades, so it was starting to show a bit of wear and tear… so I figured this technological enhancement would give it a new lease of life.
This rucksack had a simple metal frame in it that meant it would keep it’s shape when I was wearing it, and the straps were good and sturdy without having too many extra fixings or doodads on them. So I just cut away the main “sack” part of it so it was just a nearly flat backpiece, the shoulderstraps and waist-belt. Because the metal frame was shaped to fit a back, rather than completely flat, I couldn’t just fix a lump of wood to it, so I had to attach three flat MDF sheets to it instead to work with the curve. Once these were fixed, I fixed the remains of the “sack” to the MDF as well, helping secure it to the frame.
I then sprayed the whole lot black, because “green and beige” isn’t a very techpriest colour scheme.
Electronic Bits – Prototype One
Next up, I started to experiment with LEDs until I found some that were good and bright. After several false starts, I found I could get some from Oomlaut – not the cheapest, but they came with bundled with resistors to soak up some voltage… so I went ahead and bought a load to use. I’ve been back and bought more since for other projects, because I know they’re bright enough for what I want.
Test LED Array
For my prototype, I put together a test LED Array. This array was made up of 20 sets of LEDs and resistors – not the most efficient way – but easiest for me to put together with what I had. Basically, each LED was wired in series with a resistor, with the resistor making sure that the LED only had the right amount of voltage between it’s two legs. There’s some magic involving Ohm’s law and the LED specifications involved in working out what resistor to use, but this probably isn’t the place for me to explain all that! It probably would have been better to use 10 sets of LED+LED+Resistor, but I wasn’t paying enough attention to do that properly at the time.
So anyway, I made 20 of those LED+Resistor pairs, then wired those pairs in parallel – this meant that each LED+resistor pair was going to be getting near enough the same amount of voltage…
I also picked up a bunch of transistors to drive my planned LED arrays. I used some TIP-120 darlington transistors (or their equivalent – I can’t actually remember which I used) which were almost certainly overkill, but they did the job. I’ve always been rubbish at picking transistors, so I tend to go for overkill rather than efficiency.
For the uninitiated, I needed the transistors because the electronics I was planning to use to control this lot can only supply a small amount of current, and a bank of 20 or so LEDs will try and suck up more than that small amount, which, in WH40K terms, would anger the machine spirit. By using a transistor, I can use the controlling electronics to control the transistor instead – basically using it as an on/off switch for a source that can supply a larger amount of current. This means that the machine spirit in the controlling electronics remains happy, and will continue to do my bidding.
I tested this prototype initially by just hooking it up to a 5v supply to make sure it lit up properly. Sure enough, it did.
Electronic Bits – Prototype Two
The next step was making the LED arrays have variable brightness. To do this, I needed to use something called “pulse width modulation”, which is a fancy way of saying “turning it off and on again really, really fast”. You can use this to control the brightness of the LED by varying the ratio between “on” time and “off” time. Since I wanted this to be both variable and software controlled, it was time to break out the Arduino so I could knock something together quickly.
An Arduino is a handy little microcontroller board that you can program via a PC and then use independently. They’re really good for prototyping widgets and devices, and also good for where you want to knock together circuits where you don’t want to put time and effort into making a custom board.
For this prototype, I hooked one of my LED arrays up to the Arduino’s PWM pins, as this makes it really easy. The Arduino has 14 output pins, six of which are capable of provising pulse width modulation (PWM) out of the box, meaning that I just have to write a value between 0 and 255 to those pins, and it will use pulse width modulation to make it a value between 0v and 5v. So setting it to 255 gives 5v, setting it to 128 sets it to around 2.5v and setting it to 0 turns it off.
Sure enough, this worked just fine, and I could set the LED array to whatever brightness I fancied. I also confirmed the levels where it was good and bright, and where it was just too dim to be seen. It was never going to be really effective in full daylight, but indoors or in shade it stood out pretty well at anything above around 60% brightness.
Physical Bits – The “Glass”
The effect I was trying to achieve was that of a set of small glass panels in a gothic decorative frame, with the pulsing light of the “power unit” inside it. Handily I had some clear polycabonate around, which is pretty resilient stuff (they use it in riot shields, after all) so I figured it would be tough enough to survive being knocked about a bit in a LARP. I cut this down into three large sections and three small sections, which would be used to crea
te the windows in three panels joined by hinges, which I would then fix onto a shaped frame.
Because I knew that I didn’t want a clear view of my bad soldering through the windows, I sprayed the polycarbonate sections with a few coats of frosting. This wasn’t hugely effective, so I think I might look into using either privacy film or starch and tracing paper next time – it’ll probably be quicker and less hassle. I did experiment with engraving patterns into the window sections, but at the time I didn’t have a good set of engraving tools and it was going to take days to do… if I was quick. I considered panting patterns on the inside of the glass, too, but in the end I just decided to leave it plain – it worked okay without any extra decoration.
I then used various bits of plastic moulding and edging to create frames that the the polycarbonate sections could be securely fitted into. I then used upholstry strapping and impact adhesive to join the three panels together with a flexible hinge, so that I would be able to fold them to make the shape I wanted. At this point the construction was fairly loose, with the exception of the good and sturdy hinges, and could be pulled apart easily. So I added more upholstry strapping in various places to hold it all together. This was ugly, but it was on the inside of the “power unit”, so that didn’t really matter. It still wasn’t as sturdy as I wanted it to be, but to hold it together any more firmly, I was going to need to have the skeleton to fix in onto – I couldn’t make it tougher whilst it was still a separate piece.
Physical Bits – The Skeleton
To make the skeleton, I first needed to knock up a prototype to make sure I got the dimensions right. For this, foamboard is my friend. Conveniently, I still had loads left over from when I made Arty the Artifact for another game. For this prototype I made three trapezoidal “ribs” (one for each end and one for near the middle of the backpack) that the panels could fold around, and two end caps that would cover the top and bottom of the panels. When I’d made sure that the panels folded around them properly, I replicated these ribs from MDF. This was slightly more complicated as MDF is thicker than the foamboard, so the endcaps would have been too thick… so instead of having separate ribs and endcaps, I carved a step into the edge of each endcap so that they could double as the end ribs.
I them fixed these sections onto a backplate and started to attach the LED arrays.
Electronic Bits – Final Assembly
Fixing the LED arrays in was slightly harder than I’d planned for, as the ribs of the frame took up more space than I’d intended, so the LEDs were pushed too far forward, making them too close too the glass. Rather than living with this, I actually chopped them in two and replaced a bit of wiring with a longer gap. This meant that I could put the two halves either side of the rib, so they were set further back. It was hassle, but it looked much better for it.
Once these were in place, I drilled a hole in the bottom endcap for the wires, then drilled a matching hole in a pretty basic black plastic box and fixed that to the bottom of the backpack. Once that was in place, I pulled the wires through and tested that the arrays still worked. Once I’d confirmed that it was all working, it was time to put the window panels on, sealing the LED arrays in place.
Whilst I was doing this, I also wired in a third LED array, made from a modified head torch and the same transistor arrangement as above. Basically, this was 9 ultrabright white LEDs with a reflector. I fixed this inside the bottom endcap, pointing along the inside of the power unit. I decided I wanted this to add occasional strobing into the backpack rather than any fading.
My plan here had been to use the arduino for prototyping, then build a dedicated circuit… but I didn’t manage to maintain that idea in the end – just not enough time. For this kind of job, it’s a bit overkill to use one, but since I’m only going to get occasional use out of the thing, and can pull out the arduino and use it elsewhere, I decided to stick with it – although I did swap out the arduino for a cheaper arduino clone (a Seeeduino) rather than risking my main board.
Physical Bits – Enclosure
The first stage of this was simply to place the panels over the skeleton and get everything lined up. Which fitted pretty much perfectly first time.
The second stage was to glue upholstry strapping on the outside of all of the hinges and joins, but also to loop it around the whole assembly and fix it (with both staples and glue) to the outside of the backplate and endcaps. Once I’d done that, there was no way that it was ever going to shift again! Okay, so the thing looked like a monstrosity of black strapping and frosted plastic, but I already knew I was going to be fixing a protective and decorative layer on top, so I decided I could live with it.
Now that things were mostly built, it was time to deal with the software. What I wanted was for the backpack to pulse red whilst it was on, until I turned a keyswitch somewhere, at which point I wanted it to switch to fade across to pulsing green. I also wanted a way to undo that change so that I could move it back to pulsing red without having to power the whole lot down and start again. At this point I hadn’t wired in the keyswitch, but that didn’t matter very much. A switch is basically two bits of wire, and when you touch them together it’s “on” and when you separate them it’s “off” – so I just used two bits of wire for the time being. Good enough for me.
The tricky bit came because I wanted the change from red to green to be a smooth fade rather than a sudden switch… and because I’m picky like that, I wanted it to be a dipless fade. Usually, if you have two lights next to each other and you reduce the power to one at the same rate that you raise it to the other, what you’ll actually get is a dip in brightness, because they cross at 50% power on both, and 50% power rarely matches 50% brightness. In fact, I usually find that 50% brightness comes in at around 70% power, so that’s where I wanted the power levels to be even. If I was doing it properly, I’d have used two logarithmic curves to make the two meet at around the right spot… but I’m not quite that picky. Instead, I wrote the software so that it waited until the current pulse was at it’s lowest point, then it would fade the red up to it’s highest point, but also the green up to 40%. Then, it would use a linear fade to bring the red from 100% to 40% and the green from 40% to 100%, crossing at 70%. Then, it would fade the green down to the low end of a pulse, and fade the red out.
The result was that the power cell would pulse red, then do a pulse where it started red, crosssed over, then ended up green, after which it would continue pulsing green. It was then easy enough to tweak the code so that it could do the same going from green to red when the switch was turned off again as well.
I added in a few hard-coded pulses of the white LED array as well, so that there were some bright flashes at various points in the sequence.
I’m not going to post the code up here becuase it’s quite, quite horrific. It’s not difficult or complex – just bad because I was writing it in a hurry. One day I might replace it with something clever and efficient.
Electronic Bits – Mounting and Control
Once I’d got the software working enough to use, it was time to fit the Seeduino into its box and close it up, so I fitted leads for the keyswitch and added transistors to drive two more LED arrays (so I could add them later if I want to)… Then screwed the lid onto the box. I then ran those cables (with a couple of connectors on the way) round to the
waistband of the rucksack, where I fixed another black box. I then fitted the keyswitch in the faceplate of that box, and put the key onto a chain next to it, so I’d never be able to lose the key without losing the whole backpack… which seems like an unlikely occurance.
That meant that all of the technical bits were done, so it was on to the finishing touches.
Physical Bits – Padding and Decoration
At this point, the backpack “power unit” was a bit fugly, being clad in glue and upholstry strapping. Whilst it was pretty resilient in this state, it still had a few solid edges that could damage other people’s kit if they hit it. I had no concerns about it taking damage, but LARP weapons hitting it may have suffered damage… so I wanted to soften the edges up a bit. I wasn’t planning on repeatedly beating people with it, though, so I didn’t need to go the whole hog… I just needed to soften the edges, make it look good and make it able to take a couple of knocks.
What I ended up doing was making a foam decorative layer, which was coated in latex and painted bronze on the front and edges. When this eventually all dried (which took about a day and a half), I coated the outside in clear varnish. I didn’t have time to let that lot dry completely, as it was still tacky two days later… so I pressed on and glued that lot on top of the strapping with impact adhesive.
Then, the finishing touches. Going in with a fine paintbrush and filling in any unsightly little bits of visible white plastic moulding with black paint. I still missed a couple, I think.
How did it handle?
All in all it worked pretty well. I had a couple of issues with wiring around the battery as I hadn’t had time to add a proper power switch or put any kind of boot onto the power leads, so I sheared off the wire to the battery connector at one point. I replaced it easy enough when I found a screwdriver, but it could do with some sturdier cabling and some work to make it a bit more resilient in future.
You can see what it looked like here:
Edited to add: In this video I talk about estimating the battery life being 6-10 hours. I’d miscalculated. A more accurate estimate is 12-16 hours on a single Lithium PP3.
- Make use of the two extra transitors and cabling I added to put some LEDs on the front of the costume somewhere.
- Rewrite the software with less horrible code.
- Make the software more versatile, maybe adding more control to the inputs.
- Make the white LED array independently controllable, and able to do continuous strobe flashing at a controllable rate.
- Improve the sturdiness of the wiring around the power connector.
- Tidy up the mounting of the seeduino in its box.
- Add a usb connector to the box so I don’t have to open it up to change the software
- Improve the non-techy bits of the costume to go with it