…to me, anyway.
A friend lives out in the Sounds, way out beyond where the electricity grid stops, so her lighting is solar and candles. So I made a candle holder as a birthday present.
I’d had something else made in the transparent ColorFabb filament and I liked how it looks with a light behind it, so thought I’d give that a go for a mock-up, before getting the final version printed in porcelain for heat resistance. Oliver Seiler did his usual job of a great print and it turns out that the plastic version is far enough from the flame that it doesn’t heat up at all, so the mock-up became the final thing.
And any excuse to improve my Fusion 360 skills. Turns out F360 isn’t great at drawing helices and what I thought would take five minutes to draw took five minutes to draw, after I’d spent two hours scratching me head and trying a bunch of approaches.
What I’d do differently next time:
Making this smaller would make it cheaper, but then the plastic would be closer to the flame and will get hotter. How close is too close? Given the risk of the plastic creeping, melting, or burning, I’m happy with the size, but I am being fairly conservative.
- The filament is a little stringy, so this print needed a fair bit of manual finishing with all those holes. A less stringy material might work better, but then again, the ColorFabb is PETG and pretty heat resistant. So there’s a trade-off to be made, as ever.
It’s been a good summer and now it’s time to catch up/write up all the fun. Back in December we went to a bay in Tennyson Inlet in the Marlborough Sounds, like way out the back, almost to French Pass, for a friend’s birthday. Her family have lived out there stretching back several generations. It’s as beautiful as it looks and it sounds like weka and Epsilon Blue – One In A Million (Tom Cosm Remix).
- Everyone was delighted that we were there with Wendy’s project (second pic down).
- I am amused that my snarky “Giant Scabies” sign is now a thing.
- It’s a commercial festival, so all the friendly people wanting to start a conversation with you want to sell you something. I rapidly stopped seeing people as people and started seeing them as hindrances. Commerce, man, just say no.
- Bars with really loud music. No alcohol outside the bars, with fences and security to enforce that. So, beer and shout till I lose my voice, or tea? Tea won.
- It is a spectacular venue.
- Except for the rain. Fuck that rain. Set up in rain, packed down in rain, and mostly rain between the two. Hence ankle deep mud everywhere.
- 2017 Splore business idea – stall outside gate selling gumboots. Would make millions. Just need to go back in time to before the festival.
- Better time machine idea – go back to before the festival, stay home by the fire instead.
- Worked too hard, failed to party. Again. Equally failed to spent much time with lots of my friends there, but that’s cos we were all mostly there to work.
- The ute got blocked in by bad parking, yuppie SUVs without 4wd, and soaked ground turning into bog. I wasn’t delighted. Kiwiburn has better parking organisation.
- The stuck cars resulted in people just standing around, not self-organising, and waiting for the festival to fix it, where “festival” meant one sleep-deprived secuirty guy and four 4x4s to unstick vehicles for 10,000 people. We got out by ourselves, where “we” means several vehicles and the people with those vehicles. Literally all it took was Wendy and myself just walking up to people and saying, hey, why don’t we try just pushing? Burners are better at seeing a problem and just fixing it.
In short: I am going to continue to push for reform of drug policies because a friend is likely to die of his addiction problems.
I’ve just come back from a New Year’s Eve festival where we were helping to provide a pill testing service. People who were planning to take substances could come to us and find out what they had. This is probably the number one thing anyone can do to keep people safe at festivals – if you let people know what they have then you enable them to make safer choices. And when some people found that what they had in their hand was a more dangerous substance, then they chose not to take that.
Everyone there could see that it is a great idea – the attendees, the medics, everyone.
So why are we not doing this everywhere that people might use drugs? Coz the law gets in the way of us doing it. I can’t even name that festival for fear of getting them in trouble. And we couldn’t even advertise our services at the festival, we had to go by word of mouth. A lot of people didn’t know we where there so we couldn’t help them.
Well, fuck the law. We were there and we helped people. From what I could tell and from what I’ve been told, the people attending the festival had a great and a safe time.
Feeling like we’ve done a good job, I get home to discover that a friend who I value very highly has overdosed and is likely to die. He had a history of trouble with alcohol and addiction and he didn’t get the professional help he needed to get through. I don’t know the details yet, I don’t know what substances were involved, legal or not, but that doesn’t matter – New Zealand society treats people with alcohol and other drug problems as problems, not as people with problems. We treat people with those problems as less than people and that stops them getting the help they need. It stops them from asking for the help they need. We make judgments about people based on which diseases they have and consider people with alcohol and other problems as less worthy of our help and care than people with other diseases. And that feeds through into politicians who score points by dehumanising people with problems. And that feeds through to the sharp end, where everyone involved in mental health and addiction support says that they are catastrophically underfunded, that there is a vast need for more and more effective treatment for these diseases.
We know that the New Zealand Government’s policies about alcohol and other drugs don’t work. We know that moralising doesn’t save people. We know what does – not moralising but taking a rational and effective approach to reducing the harm from all substances.
So I’m very upset and angry right now and I am going to deal with that by doing exactly what I’m doing – help with substance testing to help people make safer choices and help pushing for changes to policies about alcohol and other drugs.
(Email me if you need to know the person’s name. I want to respect the family’s choice about how to communicate this.)
TL;DR: Tiny soldering leads to a Teeny that can tell when its battery is being charged
I’ve been using and loving Onehorse’s STBC08 High-Current LiPo Battery Charger. It sits on the back of a Teensy, you plug in a lithium battery, it charges off USB and has a host of LEDs to let you know what it’s doing – red for charging, yellow for external power. However, I’m working on something where all the electronic gubbins are going to be buried and I’d like to have the Teensy do the reporting of battery charging rather than the LEDs.
The STBC08 chip in the charger has signal lines to tell when charging power is connected and when the battery is fully charged – those are what lights those LEDs. Sadly, they are not broken out to the spare holes in the charger board. So no worries, I’ll just solder to those LEDs and break the signals out. Like this:
Yeah. Those LEDs are a single millimeter long. So that’s a job to do with no caffeine in my system. Managed it though.
And then I smothered the wires with epoxy, coz they are tiny, fragile, uninsulated, and right next to the battery connection.
Now the Teensy can read pins 1 & 2 to find out whether external power is present and whether the battery is charging or charged. And then it can tell me.
And this week in “Jez makes things”…
Rebate guides on planers are awesome. I’m going to rebate everything now, for ever more.
Also, Fusion 360 makes it really easy to turn models into drawings. Admittedly, three of the five components here were just rectangles so the drawings were pretty simple, but it’s all practice, right?
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.