It was a week before Manchester Pride 2017, and I was signed up to march in the parade with my employer. Being an unashamed and indeed proud hacker, doer, and queer I wanted to express my pride with LEDs and decided to pimp my t-shirt with LEDs.
Finished only at 1am on the day of the parade it is a small miracle it got finished at all, after a calamity of cock-ups and a muddle of mistakes.
This is the story of how I did it, a painful recollection of the many times I messed up, and hopefully hints on how to learn from my mistakes.
Measure Twice, Cut Once
My original plan was to have a horizontal line of LEDs on the front and back beneath the logos, and then one strip down each of the sides. I cut small holes where the wires would go, and cut the LED tape to size. I then realised that LEDs on the sides wouldn’t be hugely visible (turns out humans have arms) so moved them to be on top of the sleeves.
So I started off with two extra holes in the fabric I didn’t need. Not a disaster as they aren’t visible, but definitely not perfect.
Next time, I’d want to pin the LEDs in place and walk about and check that they’re visible and not in the way.
Extreme measures of adhesion
I originally planned to use epoxy to stick the LEDs to the t-shirt following a prior incident that ruined my favourite shirt. Someone rightly pointed out that if I did that, the shirt would become totally rigid where the LEDs were as epoxy has no flex. That would make walking and waving flags difficult.
The great thing about Hackerspaces is people offer suggestions freely. Following a chat with another member I decided to use velcro strips, sewing one side to the t-shirt, and then attaching LED’s to the other using UHU. This would allow flex and mean I could reposition the LEDs when wearing it.
I also learned that sewing material that is quite stretchy to material that isn’t is a greater challenge than I first thought. This was the first point I really wanted to give up.
My first two attempts at the back velcro strip failed – as I was sewing the strips on, I must have not kept the material at a constant tension, so when the t-shirt was relaxed the velcro strips scrunched up. It wasn’t ignorable.
On the third time I settled on sewing smaller sections of velcro individually instead of one long one. This meant I didn’t have to keep everything at a constant tension and if there was any waviness it could be corrected easily.
Wiring it up
The next step was figuring how I’d wire it up. I had a reel of WS2812B addressable LEDs meaning every light can be individually controlled. The LED strip has three wires: 5v, ground and a directional (remember that part for later) data wire. You send data down the data wire which then controls the LEDs to show various effects. For my controller, I planned to use an Arduino Nano I had previously ordered from AliExpress.
I wired it such that LEDs 0–9 were on the front, 10–19 on the back and then the shoulders would be wired in parallel from that point. I mentioned the LEDs are addressable – starting from the controller we have LED 0, then LED 1 and so on until we run out of LED tape, volts, solder or sanity. Splitting the shoulder LED strips at the same point means they will be symmetrical as the first LED on both sides will listen for the same address. Nice and easy.
I glued the Arduino Nano in a tiny enclosure, and with everything soldered up I was blindly approaching the second time I wanted to give up.
Make sure you can clearly see your multimeter
I uploaded a demo programme to the Arduino using the FastLED library which I highly recommend. I used a separate strip of LEDs to verify the code, and sure enough they lit. I then cut a USB cable in half, with the USB plug on one end and the (weirdly coloured) wires connecting to the Arduino VIN and GND pins. This was so I could power the lights from a battery pack in my pocket. I plugged the USB cable into a power supply and measured the voltage using a multimeter. The multimeter on the other end of the electronics bench read 4.88v and so I wired it up.
I turned it on… and nothing happened.
That’s actually a lie, in fact the Arduino and USB plug got very hot. I checked the wires again, pulling the multimeter closer, and saw the voltage was actually reading -4.88v, meaning I had connected it the wrong way round. The angle the multimeter was at before and reflection of the lights had hidden the minus sign from me. Doh.
I thought about burning the t-shirt.
Frying some chips
I rewired the Arduino and tried again but nothing would light up. I thought maybe the LED strip had fried, although I now know it’s actually very hard to fry LED tape. Even if you completely mis-wire it, it’s remarkably robust.
I tried to solder on some new LED’s. Somehow a blob of solder hit the main chip on the Arduino board. It looked like it had shorted the chips pins, but to eliminate that risk, I tried to remove the solder. Doing so just ended up flowing solder under the chip and shorting all the pins together. Completely unsalvageable. But I tried to rescue it and in doing so the chip just melted off the board.
In the bin it went. I consumed caffeine and blasted some electronic music (https://www.aboveandbeyond.nu/).
The tale of asymmetrical tape
Feeling as deflated as a cheap airbed that’s been left in the garden all summer I inspected the LED strip and noticed it actually isn’t symmetrical — one end has a “Data In” connection, and the other a “Data Out” connection. I’d somehow managed to not find this out sooner when playing with them previously and had just been incredibly lucky.
The LEDs had been incorrectly wired hence why they didn’t light, so it was likely the Arduino was in fact fine before the solder incident. But it was gone now, anyway. I then correctly wired up the LEDs at which point they illuminated when using a friend’s borrowed Arduino. Lovely.
I had the LEDs working but nothing to drive them after I fried my one remaining board. I re-evaluated if it was worthwhile. I’d gone through too much frustration to give up now.
The spare controller
I thankfully found a spare NodeMCU lying around. Technically I had hoiked it out of the alarm system I made for the hackerspace but I figured it would be fine for the weekend which turned out to be correct (it’s back now). As it was physically a bigger board, I had to snip off all the pins except ground, voltage in, and the data pin and even then it only just about fit in the enclosure I had. Hot glue was applied everywhere, ending up on me, my clothes and nearby snacks. I programmed it with the same demo programme and connected the LED strip the right way round.
It lit up.
Suddenly, the whole project seemed salvageable.
It was midnight. The parade started in about twelve hours. With a flurry of soldering, glueing and stitching, at 1am the night before Pride, I I finally got the t-shirt done. I felt like both crying and laughing.
Simple idea, brain still required
The hackspace is often a thing I do in my spare time when I am done using my brain for the day. This leads to some pretty creative solutions to problems that sometimes don’t even exist. Often that leads to good fun, creativity and a great outcome, as the joy of it is in meandering and exploring solutions.
But that didn’t work so well when I had a deadline to meet and had told everyone I was going to be in an LED t-shirt.
I probably also underestimated the skill in sewing – sewing stretchy material was much harder than I anticipated. Then being a bit fried didn’t help and silly mistakes snowballed.
I’d recommend joining a hackerspace near you, without Hacman I wouldn’t have been able to do it – from the space and tools itself, to the advice of others.