Bonus free internet points to anyone who can spot what I edited out.
I’m taking a break from spinning LED things and doing something else.
My Kiwiburn art project is not:
- A drone that hovers relaxingly just above the heads of meditating people
- The Bureau of Unerotic Discourse
- A large-scale video display with one foot per pixel, like a literal foot
- A trebuchet that launches hippies into the river
- A t-shirt saying “you’ll never work this event again”
- A robot arm that will shave only the left half of your head
- An empty cardboard box labeled “The Tyranny of Expectations”
- A scent
- The Stabotron
- A robot that assesses how sexy you are, but only to other robots and that thinks humans are just disgustingly organic
- The best goddamn cup of tea in the world
- An acroyoga workshop that contains no actual acroyoga learning but is focused on helping you get the perfect selfie
- A performance piece where you ask me what my Kiwiburn art project is and I make up a bunch of lies coz I want it to be a surprise
While lying on damp, cold, and hard ground at Kiwiburn one night, we decided that festivals are more fun when dry, warm, soft, and fluffy. So we made a festival blanket that we named the Flying Carpet – fluff on the top, waterproof underneath, padding in the middle, and LED animations around the edge (Teensy, FastLED, Li-ions, as per usual).
Heteronormatively, Wendy did the fabric; I did the electronics. Here’s her tutorial on how to make one yourself.
In short: the Mitochondrion looks as stunning as I hoped for about five years ago.
My journey into the obsession of making LED staffs
About five years ago, I stopped fire spinning and started building LED staffs. I wanted to have images hanging in space around me while I am spinning staff. Technology (and my skills) have finally got to that point where I’m pretty happy with the Mitochondrion, Mark 5.3.
The path has been:
Mark 1 – I learnt so much by designing the first one that there was no point building it. Straight on to…
Mark 2 – Ran without a microcontroller and had some fundamental flaws, like not turning on. I learnt enough to build the next one…
Mark 3 – The first of those pictured above. 44 LEDs controlled by a Picaxe. Twenty-eight bytes of memory, home-etched circuit boards, sketchy wooden parts, and bubble-wrap.
Mark 4 – First to use LED strips, 88 LPD8806 controlled by an Arduino Nano, twenty NiMH cells, and 3D printed parts. Eventually became bomb-proof enough that various I was happy to let randoms play with it at festivals.
Mark 5.2 – Teensy 3.1, 800 NeoPixels as four parallel strips of 200, and lithium cells. It looked good at Burning Man until the overloaded Voltage converters tried to catch fire.
Mark 5.3 – The brief details are: twelve 14500 Lithium rechargable cells powering 800 APA102/DotStar LEDs in four strips, controlled by a Teensy 3.2 microcontroller, with a motion sensor to turn it on and off, running the wonderful FastLED library and my own multitasking code to display a hundred images. You may have seen version this at Kiwiburn this year.
The not-so-brief details are explored below, with an emphasis on the inevitable trade-offs that you face when trying to push to the boundary of what’s possible.
First limit is size, because here we’re trading off between ease of holding, stiffness, and internal diameter. The outside diameter of the tube can only be so big before it gets hard to hold. 32 mm is already fatter than I’d like for a staff. The only possible material for the tube is polycarbonate and that’s pretty flexible stuff. That diameter tubing comes in two choices of wall thickness and 1.6 mm is like a noodle. So 3.2 mm wall it is, giving a 25.4 mm inner diameter. That fact alone drives the rest of the design.
Second limit is energy storage. I want this to be kicking out the lumens all night long, or at least as long I last at a festival. (So that’s till about half-way through the night when everyone is kicking off and I say “I’m just going back to camp to get more water” and then I sneak off and crash out. But I digress.) I also want to fit four LED strips along with the necessary wiring and internal structure. Turns out 14500 cells (AAA size) fit, with about a quarter of millimetre spare. Twelve of them give me 33 Watt-hours, which is sufficient. Splitting them into two groups puts the heavy cells at the tube ends for good weight distribution when spinning. Keeping those two groups as one pack, i.e. all the cells in parallel, makes charging so much easier. Charging from USB is handled by Peskie Products tiny 800 mA board.
The cross-section looks like:
Third limit is power. I’m keen on ridiculous peak powers. And 800 LEDs could peak at 150 Watts. Sadly, that would pull 4 Amps per cell, a rate of 6C. There are high discharge rate 14500 cells, but I’ve yet to find any that are also protected and 50 mm long. The Trustfire Flame cells I’m using have a detectable Voltage sag at anything above 0.1 Amps, so I chose to cap the power at 10 Watts. More is certainly possible, but the green and blue LEDs fade out leading to a noticeable colour change. And 10 Watts is still the brightest LED flow tool that I’ve seen in NZ. (At some point, I’ll try higher discharge cells…)
Fourth limit is features. Here the trade-off is between time writing code (and getting it to work) and just building the bloody thing. I’m at the point where it does images. It doesn’t visualise music, yet, but that’s the plan for Mark 5.4.
Fifth is durability. Making a long, thin electrical device and then repeatedly throwing it on the ground is just hard. So everything is solidly mounted, there’s 3D printed ninja-flex bumpers at the ends, all structural parts are aluminium, thick 3D printed nylon, or FR4. All wires are as short as they can be, with locking connectors. All solder connections between parts that could move are sewn. All cell holders are screwed in place as well as soldered.
Key design features for the Mark 5.3
Power architecture – the great thing about APA102 LED strips is that they will happily run off 3.7 Volts, meaning no need to step Voltages up to 5 Volts as with NeoPixels. (They also just work, unlike NeoPixel’s tricky timing requirements.) This simplifies the power architecture greatly and avoids using UBECs. The downside is that they pull 1 milliAmp per LED even when the LEDs are set to off. I don’t have room for a physical power switch, so to keep the stand-by life at more than a day, there’s MOSFETs between cells and strips which cut or enable power to the strips. This also allows for control of the strips on start up – the Mark 5.2 didn’t have this. On power-up, the NeoPixels could light before the microcontroller had booted up, getting stuck in a high-current draw mode, preventing the Teensy from starting and damaging other components from overheating. The Mark 5.3 holds power off to the strips until explicitly commanded by the microcontroller.
Here’s a block diagram, clickable for enlargement:
Overall Arrangement and Physical Alignment – Accuracy is hard. Or rather, accuracy is expensive and time consuming. Squeezing everything in gets to be a pain in the arse, when you have quarter-millimetre tolerances. Making everything stiff enough and strong enough is bonus arse pain. So rather than try to make structural components myself, I used the PCBs as structure, alignment, and circuitry. Board shops will happily drill holes for no cost with micron accuracy. Then everything just screws together and fits together. The four sides are in two pairs with L-brackets holding each pair. There’s hinges between each pair so you can remove the internals and open the whole thing up for access.
Physical power switches – I said this doesn’t have room for one. It doesn’t, at the ends. One end holds the charging port, the other the microphone. I probably could squeeze one in, but there’s lots of current so the switch isn’t going to be small and the ends are the parts that get most knocked-about, so it’s not going to be durable. Still, power switches are necessary for debugging and resets, so there’s two tiny, board-mounted six Amp switches, one for each battery pack.
Multi-tasking code and timing
The code is all built on Alan Bleaklow’s Very Simple Arduino Task Manager. Every feature is an object that gets called every X milliseconds. The pattern generator and display refresh run every 2 milliseconds; the motion sensor every 250 milliseconds when spinning and every 500 milliseconds when stationary. Communication between objects is by message passing, with a SwitchModes object running a finite state machine to hand smooth transitions between spinning, ambient, and timed-out modes. Transitions between images happen every few seconds, or on reversal of the spin direction. The transitions are sharp, but could be gradual.
This code is probably a bit over the top for just displaying images, but is a solid platform for more complex behaviour.
The interface is entirely motion-based. Spinning wakes it, not spinning drops it into mellow ambient modes, rolling it turns it black.
With a Teensy at 72 MHz and data to strips at 10 MHz, updating 200 LEDs takes 1.5 ms. The display aims to update every 2 milliseconds, leaving 0.5 milliseconds to get new the next column of image data or generate the next frame of a pattern, or do other stuff. This is plenty.
I wanted a strong visual identity to take to Burning Man – something very New Zealand. I also wanted bright colours and not too much complexity, coz the Teensy is pretty tight on memory. Luckily, NZ was having a competition to replace our flag, which provided a source of bold designs that look great in a palette of only 16 colours. (Unluckily, the proposed replacement flag is crap so we might be sticking with the original.)
Some are 256 colours, most are 16 colour for two pixels per byte. Images are 32, 48, or 72 pixels high.
So I rounded up a heap from the flag competition, along with lots of traditional tuktuku and kowhaiwhai patterns, and some mandala drawn by Spiralishis, and some mathematical designs sourced from Wikipedia. Some of these were tweaked in Gimp with conversion to polar co-ordinates, shifted, and faded brightness in the rectangular originals to give round and even brightness in when displayed by the rotating Mitochondrion.
Like this, original on left, what it looks like on right:
The images are processed from GIFs by a hacked version of Philip Burgess’ LED poi converter. It takes a directory full of images and writes out a header file full of image data and palettes, which then gets picked up by the compile.
And of course, we had to include Laser Kiwi. It’s the People’s Choice!
I’ll admit to being quite pleased with this version.
We’ve had a bee swarm come past once before, but this one settled.
So we rang Tricia and Martin from the Wellington Beekeepers Assocation and set about collecting the swarm.
Andrea in a borrowed suit:
Terrorist? Or Burning Man? Or makeshift bee photographer?
Of course, the swarm was up a tree on the steepest and densest part of our place.
The bees were pretty relaxed, given that we’d just cut down the branch they’d chosen.
Tricia said this was the biggest swarm she’d seen – twenty-five to thirty thousand bees.
Success. They are off to frolic in the kanuka above Karori.
Hmm… twenty one boards into a twenty five mm tube, with quarter mm clearances? I think I might mock that up with paper and cardboard, just to check nothing clashes.
So old school.
And then I’ll get all the circuit boards made and bits 3D printed and it’ll all just fit together, right? RIGHT?
[EDIT, eight hours later – Yeah, I’m really glad I did this before ordering the boards… ]
I was helping someone to unload the dishwasher at work…
Her: “Thanks for helping.”
Me: “No problem, I like easily achieved tasks with clear outcomes.”
Her: “So why do you work in policy then?”
Me: “umm… I’ll get my coat.”
Which is a long-winded way of saying, for those who don’t know yet, I’ve left MPI and I’m now working for MBIE, managing their investments in materials and manufacturing research.
Andrea’s sister & niece, Johanna’s book on foraging, and the flowers in our garden were featured in this week’s episode of Topp Country, streamable from the TVNZ site (ours is the middle section, not the lavender or the roses).
For those of you outside of NZ, the Topp twins are country singers, activists, and comedians. They’re NZ icons.
And I’m going to try nasturtiums and fuschias in an omelette, once summer comes around again.
They were bomb-proof. You could kick these across the room and you’re more likely to hurt your foot than the drivers. There were not, however, sufficiently dust-proof. The two that were used in people’s pockets or bags worked fine; the three that were on bikes all died due to dust in the switch.
- Power a metre of LED strip, 30 LEDs on the strip, at low brightness for eight hours, so about 10 Watt-hours of battery.
- Simple battery management, so protected Li-ion cells, Nitecore 16340 cells, three off.
- Display FastLED noise8 patterns from a physically small microcontroller, so a Teensy 3.1.
- Run strips reliably, so power the strips with a steady 5 Volts from a dinky UBEC and feed data to the strips at 5 Volts so a 74LVC245 level shifter.
- Bomb-proof, so a metal case and locking mini-XLR connectors with cable clamps.
- Mechanically, these were solid. Metal boxes rule.
- The cables survived unscathed. The REAN mini-XLR connectors have the best cable clamps that I have found. If you want, you can use these drivers as poi, the connection is that good.
- The strips survived unscathed. For the joints between cable and strip, two things work for me. Firstly, cover the solder joints in flexible, rubbery adhesive. I used silicone bathroom sealant, other people use E6000. Secondly, cover the glue in lots of heat-shrink. Preferrably the adhesive-lined stuff. I like to build up the diameter of the cable to match the strip, so the outer heatshrink can grip both cable and strip. And do this before the sealant sets, so the shrinking squeezes around the solder joints.
What needs to be improved in the next version
(Of course there will be a next version.)
- Dust-proofing: I’ll put them in a zip-loc plastic bag.
- Better charging: These require the cells to be removed for charging. That’s a pain with one driver and I made five. I’ll be exploring charging in place via USB (e.g. using Onehorse’s high power Teensy add-on charger should allow for charging in three hours). This would also allow the use of power from an external USB battery.
- Better power architecture: UBECs are good if you want to run the 5 Volt strips at full whack, but for anything wearable or battery powered, I’m always dropping the brightness down. Hence putting all the cells in parallel and driving the strips directly is the way to go.
- Making sure the microcontroller is always controlling the LED strip: A frequent failure mode for me in other projects runs like this: on startup, the microcontroller takes 100 milliseconds to power on, set up all the software objects in sequence, and start issuing commands to the LED strip. The LED strip starts instantly on power up and flashes to fully power, drawing enough power to damage the UBEC or sag the battery to the power where the microcontroller browns out. This is more of a problem with longer strips than this application, but I find myself holding my breath each time I turn one of. The solution is a MOSFET between battery and strip, controlled by the microcontroller. That way, the strip is not powered up until the microcontroller is ready to control it.
- A better switch: Dust-proof, of course, but also less prominent. These large switches were easy to find with your fingers if they were deep in a pocket. They were also far too easy to switch accidentally, just by random jostling.
- A better indicator LED: Using an indicator LED in the switch has an unexpected failure mode – the indicator LED can come on when power is reaching the switch but not getting past it. Thus the switch lights on when everything but the switch off. Also, illuminated switches are annoyingly large. I’m thinking that the indicator LED should be separate from the switch and controlled by the Teensy. If I use a red & green combined LED, then that could also report battery status.
- Better sockets: I’m in two minds about this. I love the mini-XLR form factor. It’s small, the connectors are grabbable, and they lock, meaning you can’t pull them out accidentally. However, they lock, meaning if you do catch the cable on something, they won’t release and something else will break. And the female sockets are huge. I’ve yet to find the perfect connector here.
- Easier manufacturing: Separate sockets and switches are a pain. Making up the flying leads and fitting those into screw terminals is far more effort and time than just mounting the sockets directly on to the PCBs. Mounting the switch and status LED to the PCB should be easy. However, I’ve yet to find a mini-XLR socket that is board-mounted. And there’s a few other spots where tolerances are to tight for easy assembly. This was fiddly.
What would be nice to have
- Wirelessly synchronising patterns between drivers when the people wearing them are close. We kept in synch by just turning them on at the same time. The patterns run a random sequence that’s actually the same each time. Clock drift was negligible over a night, but it did mean that if one driver accidentally got turned off, that one ended up out of synch.
- Audio responsive. Onehorse’s digital microphone shield looks worth a try.
Building your own
I wouldn’t use this design again. Or rather, I’ve learnt enough from building these that I can see all the better ways to do it. But the info here may provide some inspiration and guideance.
Order this board from OSH Park, if you must. It’s all through-hole, for easy assembly.
Drilling the case
- Use the PCB as a template for locating where to drill the PCB mounting holes. Fix the mounting screws in place with nylon nuts between the PCB and the metal case. There isn’t room to turn the nuts to hold the PCB in place where the screws are next to the cell holders. I used spacers on the mounting screws so that the nuts where above the cell holders. This does mean you’ll need 25 mm long mounting screws. I used counter-sunk heads so the bottom of the box could be flat.
- Mounting the socket needs careful alignment if the screw holding the socket isn’t to clash with the screw holding down the lid. I made up a quick drilling guide but it was still tight. And the lip of the lid needs filing to clear the retaining ring on the switch.
- The lid has just enough space underneath that there’s room for the cells to pop out of their holders if you whack the box hard enough. Two layers of thin yoga mat foam glued under the lid prevent this from happening by keeping the cells in place.
In short, coz back in Vegas:
Burning Man – I was aiming to survive and I succeeded. I’m told this year was particularly hard. There was lots of this:
Highlights being camp mates, surprise tackle-hugging Kiwi, the Temple of Mazu burn, the deep playa, and all the pretties. Low points being the brutal dust storms, the heat, and the wind.
As for my LED projects:
- The Mitochondrion lasted long enough for plenty of spinning and I didn’t see a better glow staff out there. Strips slowly failed, until only one of the four was working, at which point I put it away. Lesson: rebuild the power architecture to run strips direct from the batteries, no UBECs.
- The Too Bright Hat was still working by the end, but the battery life slowly dropped from five hours to one. Playa dust is conductive enough that the isolation from the strip power supply to ground dropped from unmeasurably high to 30k Ohms. Lesson: lacquer the traces and seal the strips.
- LED Strip Drivers: Bombproof, except for the switches. These were not dust proof. The two drivers that sat in people’s pockets were fine;the three on people’s bikes died. Lesson: Seal against dust, even if that’s just a ziploc bag.
When I get home, I’ll do detailed write-ups of the Hat and LED strip drivers. For now, we have to wash and then fly a fair chunk around the world.
…or something like that.
I got bad culture shock in SF (and still have more to write about that).
Then we went to Vegas. Oh Jesus.
So now we’re going to Burning Man…
Best part of Vegas was chilling with an old friend who works here. In her pool, in the ‘burbs.
Oh, and if you need to contact me, it’ll have to wait.
…after a Vegas birthday that took in two circus shows, one training session, and one visit to Walmart – it is connection that I value, not spectacle.
Hence I am delighted by this present from Andrea, helped by Shyamtara, from a photo of me spinning the Mitochondrion Mark 4 at Kiwiburn in 2013 by Kellective.
I shall be wrapping myself in this at Burning Man.
We caught up with a wonderful surfer/aerial friend at some cafe down by Ocean Beach. They had toast, apparently causing everyone to blame the techies. In their defense, it was very good toast.
It was like this:
As Andrea says, “you never see that the other way around – surfers carrying their skateboards”.
Saw sand dollars and a syringe on the beach.
Caught up with another lovely friend and went to the cafe at the de Young art gallery. It is entirely clad in bronze, because someone had too much money.
On the wall of the de Young was a huge copper slab ten foot tall listing their major donors. I could try to claim this as a piece of art that asks questions about the place of Art in America, but I have enough culture shock already.
SF looks like it does in the movies. The cultural presence is such that, even from far away as NZ, you kind of know what to expect, or at least there’s a pre-existing set of stereotypes that mediate your experience here. For example, the vegan cafe in Berkeley that’s full of hippy attitudes, the eye-wateringly expensive art gallery in the park, the white homeless people ranting about spirituality, the black homeless people giving you the side-eye.
The trick is going to be getting past that. Or is that the reality and does SF just have a global cultural presence because that’s where so much global culture comes from?