Then for the next 4 years I made several half-hearted attempts to assemble the thing and get it running with an arduino sketch. At some point I had it together with 9g hobby servos, then I decided I wanted metal gear servos so I swapped them out. Getting the tilt servo and LED wired in through the head is a pain, and I think the design puts a lot of stress on the tilt servo that even a MG servo can’t handle indefinitely.
I used a Lolin32 to drive the servos and LEDs, and at one point I got a YAML config that let me drive the servos and LED via Home Assistant. But I never really used it for anything, every time I got it working with something I’d pack it back up after a couple of days because it wasn’t very fun to control.
But then I finally got Art-Net working on other ESPs and QLC+ provided the kind of control I wanted. So I got a pretty crappy sketch going that was able to execute Art-Net commands for the LEDs and servos. I watched it draw a figure 8 pattern on my ceiling for about a half hour.
So yay! I finally found a place for my little MAC light! I’ll just let it sit in the corner and set up some little light show functions for alerts and that will be cool.
Hey- what’s that’s smell? Did something short out? idk… oh well, I’ll find it when it catches fire or something doesn’t work any more.
Hey… the little MAC light is at a weird angle, thought I had it default to centered…
Oh, the tilt commands aren’t doing anything, not even a sound from the motor. I wonder if the servo connector came loose- nope it’s on there. I guess I have to pull it apart.
Hmmm… servo’s a little warm, that’s not great. Do you remember how the servo horn is secured in there? Did I glue it? I don’t think so… it’s just stuck in there probably, I just need to pry it up a litt… SNAP… oh it was screwed in- and the infill density on that part was super low so… yeah, that’s totally broken now… and oh, the tilt motor is utterly frozen, can’t even turn it with pliers.
So that’s how it happened. I could reprint the part but I won’t, I like pan\tilt lights but this particular design maximizes the MAC light look but probably isn’t the best design for functionality.
But I spent a lot of time messing with this thing and looks like I’ll never get to post it in action so here’s a rememberance.
My recent experience with WLED has made me think all these years coding out FX loops were a monumental waste of time. I should have just waited for WLED to exist. Not really, I learned a lot, but WLED is seriously the benevolent overlord of LED control code, and of course it includes the godfather of LED code- FastLED. I know I can gush over awesome open source projects, but WLED is a transcendental gift to reality. I have been looking for and vaguely pretending to plan to code something like this since I started playing with LEDs, but this is far beyond my abilities as a coder, or a human being. Anyway- WLED is the alpha and the omega for LED projects. So I’ve been smartening up a couple of dumb lights with it and smiling and clapping at some for the first time in a long while.
Here’s a video of a few lights running WLED, but it doesn’t demonstrate a fraction of the control options or effects.
I’m still really digging the hextube configuration. I don’t really plan on making more of them because it’s kind of quirky and I don’t think many people would be into it, but I really dig it but I haven’t been able to figure out a good FX loop for it, so I gave it an ESP8266 brain and took it to WLED university. Now I can control it with QLC+ via E1.31, but the onboard WLED FX are pretty wicked too. WLED lets me define different sections of the strip to do different FX, so I defined ‘segments’ for the outer tube LEDs, the area LEDs, and the inner tube LEDs and set them all to slightly different loops and pallettes. The video shows ‘wipe’ running on the outer and area LEDs but with different timing and opposite directions, and ‘plasma’ running on the inner tube LEDs. I think it looks pretty cool. I don’t even want to start parsing out how I would recreate this loop in an Arduino function, and now I don’t have to- and I might never again.
The video also shows an 8×8 LED matrix I built a while back using WS2812B strips, the bluetooth breakout board, and about 20 lbs of acrylic. I have no idea why I thought 3 sheets of 1/2″ acrylic were appropriate for this, but the thing is solid. It’s been running the fire effect 24/7 for at least the past 5 years. It was pretty trivial to swap out the Nano board for an ESP01. I also added a capacitor across the +/- just because I’ve learned you should do that for larger displays. The display is just running ‘plasma’ on very low brightness to let the hextube shine.
And there’s an obligatory balsa tube because it’s running WLED too and balsa tubes are just my jam now. I modified the WLED source to add the little crossfade effect loop for the balsa tubes so it starts up running that and it’s selectable and dimmable in the webUI. I’m having a little trouble figuring out how to handle the WS2811 PCB LEDs with WLED. I want them to stay off for regular onboard FX and only use them in the custom FX, but if I put them in a different segment they don’t work in the custom FX either. It’s not a huge deal but I’d like to get it straight.
I would like to take this opportunity to give the hextube a more fitting moniker since I’ve called several tests and builds ‘hextube’. It’s become a bit of a ‘my grandfathers axe’ situation with the parts but I think it’s going to stay what it is now. So I’m going to start calling this particular build SEVEN.
STYLES BLOOM – Looks kind of like a weird underwater flower with fluorescent stems. FLAME – A bubbly flame sort of thing, usually orange-reddish. CLOUD – Like if you could drill a core sample from a cloud or something, but more colorful. GUMBO – Whatever looks cool in a tube but isn’t one of the other styles. SPACE – Scenes of whatever looks cool in a larger tube made from a fresnel lens sheet.
PARTS\MATERIALS MicroUSB ATTINY85 Board, WS2812B LEDs (RGB and UV), WS2811 PCB with Discrete LEDS, Vinyl tubing, Silicone, Fluorescent\Glow-in-the-dark pigments.
DISCLAIMERS ~There’s a 10 second delay after you plug them in before the lights turn on. This is due to to the controller board being programmable and just is what it is because I want people to be able to reprogram them if they want. See ‘Hackability’ if you’re interested. ~These lights are not perfectly manufactured. They’re built entirely by one guy with a poorly calibrated 3d printer in the kitchen of a one bedroom apartment, but they should do what they’re made to do, which is light up and look kind of pretty. ~Don’t handle them too aggressively. They’re sturdy enough to survive light knocks, but they’re just display lights. The tubes are not completely rigid so you can squish them hard enough to destroy the scene if you try, but don’t try you should be fine. For best results just plug and stare. ~I guess they could catch fire, but most things could. These run at 5V and pull less than 50ma but they are made of electricity and rubber and that combination has some flammable potential so I feel I should mention it. ~Don’t consume them or let children or pets consume them. They’re probably toxic at some level and it just can’t be good for you. They look way better than they taste. Also these have zero considerations for children or pets so just keep them away entirely. ~I’ve hidden a false but very convincing secret of the universe in every 42nd light. The message is encoded in the LED’s PWM so it’ll become embedded in your subconscious the instant you turn on the light. Try not to fall for my cosmic lies.
PROCESS At some point I’ll put more effort into documenting the process of working with silicone because it is pretty interesting and I haven’t found references to anyone else doing this kind of thing with it. I got some inspiration from people who work with clear resins, but silicone has a lot of different properties. My initial choice of silicone was by circumstance, it’s just cheap and available, but by now I appreciate some properties that make it a very unique substrate. I also found some information from people who had experimented with silicone to create homemade casting molds that turned out to be pretty useful.
The electronics were pretty simple since I’ve been working with Arduinos and LEDs for about a decade, though I did have to do some thinking and tinkering. I’ve been going back to the Arduino Nano for years. It’s my default for any non-wifi project, but I wanted USBMicro and the Nano is actually way overpowered just to drive 2-10 LEDs. I found the old digispark ATTINY85 board I got from their kickstarter (the USB-A version) and got it to run the FX loop after shaving off some superfluous code to get to 6000 bytes or whatver. So I ordered a bunch of the USBMicro version and those seem to work pretty well. Full disclosure I’m using the chinese knockoffs because they’re ridiculously cheap.
The BLOOM and SPACE lights have RGB LEDs at the top and UV at the bottom. The top of BLOOM is a 2×2 RGB matrix and SPACE is an 8 RGB ring. The bottom of BLOOM has a UV WS2812B pixel, and SPACE has a WS2811 PCB with 3 discrete UV LEDs arranged in a triangle for a kind of spotlight effect.
Designing the base\stand was painfully iterative. I’m a very lazy and imprecise 3d designer and really bad at maintaining\calibrating my 3d printer. But eventually I landed on a pretty simple but functional and aesthetically inoffensive design and that’s what I’ve been sticking with. I plan to adjust the base to make room for ESP based microcontrollers to implement WiFi, but overall I like the footprint and size of these so I’m going to try to keep this general look for a while.
MAINTENANCE\REPAIR These shouldn’t require any maintenance, they just sit there and make light. Maybe dust it off every now and again. The tubes and stand are vinyl or plastic so avoid solvents or anything sharp or abrasive. As far as I know if left alone these tubes should outlast me, but I can’t test that assumption. If anything happens with the electronics but you want to keep the tube I can fix it, but any damage to the tube is irreparable. I’ll offer electronics repair for undamaged lights for one year after purchase for no charge except international shipping, and we can work something out after that or if they’ve been damaged.
HACKABILITY These are made with common, inexpensive parts and open-source code so if you’re handy you can modify them to do whatever you want. New FX can be uploaded via USB without any modification, though getting the micronucleous programmer USB drivers set up on your PC can be a hassle especially on Ubuntu. I may post some links to tutorials at some point but this is hackablity for already hacky people, it’s not an educational device. The data pin will probably be 2, but you’ll want to open the case and double check. The LEDs are just WS2812B so you can swap out the board for something with WiFi or BT if you want. I’m all about hackery so if you intend to or end up doing something with these that they weren’t designed for please share, or if you need some help I’ll see what I can do. At some point I plan to make a 4×4 matrix of the FLAMES that can be controlled via WiFi so if that kind of thing is your bag let’s jam.
LED LOOPS The FX loops use the FastLED library. There are no user adjustable settings via buttons or serial interface at this time, you just plug them in and they do what they do. The FLAME\CLOUD\GUMBO effects cycle through the color wheel. The bottom LED cycles +\-50 hue offset. Each LED has an independent brightness that cycles randomly from about 40-100%. Both LEDs cycle saturation between 50-100%. The top LEDs of BLOOM and SPACE crossfade between adjacent LEDs to give a bit of a motion effect to the scene. The bottom UV LEDs of BLOOM and SPACE crossfade between adjacent UV LEDs and randomly cycle the maximum brightness. These loops should create continuous but fairly random look that is interesting enough to stare at but doesn’t become distracting if you’re not looking at it.
In the past I’ve worked with bluetooth and serial remote control of LEDs and I cobbled together a system to control LEDs with UDP packets at some point, but I never landed on anything I really liked or found useful for more than just a rough test. I’ve known of DMX\Artnet for some time but never understood it or cared enough to implement it. Well I finally dug deep enough to get an ESP8266 controlled by QLC+ and it’s pretty sweet. I’m not a huge fan of DMX512 from an structure standpoint- 512 bytes per universe and channel\address offsets and all this are just archaic nonsense, but it is pretty simple and ubiquitous so it probably makes more sense than the wacky bespoke UDP nonsense I was cooking up. I also looked at MQTT and it’s probably superior, but it doesn’t seem as universal for lights as DMX\Art-Net.
I had to edit a bit to handle channel\address offsets I can send commands in the same DMX ‘universe’. I’m not sure if it’s best practice to make each light its own universe, but I thought using one made more sense for my needs. I’m still a little rough on how the Art-Net nets, subnets, universe, kilouniverses or whatever are supposed to be structured, but I’m thinking that only matters when you’re controlling a lot more lights than I ever intend to.
This next video is 3 lights, each with an WS2812B 8LED ring on top and some kind of LED on the bottom, left to right they have a 3-UVLED WS2811 PCB, a 3-WhiteLED WS2811 PCB, and a WS2812B UV LED.
And for some reason here’s a picture of one of the tubes right after putting the silicone in. Silicone this thick is relatively forgiving with small bubbles, as you can see from this image the initial ‘pour’ left some ugly voids but after about a week of curing they disappeared completely.
“Silicone is optically compassionate but tactilely sociopathic.” -Banksy’s neighbor’s friend from the hardware store.
I’m using this Arduino library – https://github.com/rstephan/ArtnetWifi. At some point I’ll write a DMX client sketch that includes codes for running onboard FX modes, but for now I’m just using individual RGB channels.
Part of the problem I ran into controlling LEDs with WiFi was lack of a suitably convenient board. Most of the cheap ESP8266 boards run at 3.3V and I’m too lazy to add a level shifter to every build. Some board\LED combos will still work at 3.3V but it was too inconsistent. I found some 5V ESP32 boards that worked but they were less cheap and I didn’t like how hot they seemed to get just driving a strip of LEDs. Also had trouble with some of my goto libraries working on ESP32.
I did find these ESP-01s RGB modules and they work pretty well, but they only break out one pin so I can’t drive APA102 or add a button or anything.
I’ve also been sitting on a half-dozen of these ESP-01 TX\RX adapter modules that I originally got to add WiFi capability to a Nano. But I never got the AT mode to communicate with the Nano, and it’s kind of dumb anyway since the ESP is a perfectly capable microcontroller, the Nano just adds 5V and more IO pins, but I was only using 1 or 2 pins, and I could get 5V IO a dozen other ways.
Not sure why it took me literally years to realize this, but those modules also make the ESP8266 into a perfect WiFI LED driver board. It takes 5V and gives the ESP 3.3V, and the the TX\RX lines are already level shifted to 5V. You just have to add a line in the setup() function to define the TX\RX lines as GPIO:
pinMode(1, FUNCTION_3); //GPIO 1 (TX) swap the pin to a GPIO. pinMode(3, FUNCTION_3); //GPIO 3 (RX) swap the pin to a GPIO.
Add a little MicroUSB connector and you’ve got a cheap ESP8266 LED controller with 2 IO pins. It’s a little annoying to code because you can’t just leave it plugged in to the USB and keep uploading new sketches like you can with a Nano or something. But I just have 2 ESPs and work with the protoboard plugged into a USB battery and the USB-ESP programmer to the PC and just keep swapping the ESPs back and forth. Alternatively for some things you can write code on another board like a NodeMCU or Lolin32 and just upload it to the ESP8266 when it’s good to go. I have a lazily iterative process so it’s easier for me if I can just change, upload, change, upload, etc, with as little delay as possible. It’d probably be better if I just thought things through more, but if I did that I probably wouldn’t be doing any of this in the first place.
So anyway with that rig, the ArtnetWiFi library, and a tutorial on QLC+ I quickly achieved my dream of finally becoming a a lighting designer for a portable micro airshow. Now I am content… but only just now… yeah it’s over, I’m not content anymore so I guess I’ll get back to tooling around and messing with stuff.
The balsa glider is a wily and shy creature in the wild. Few corporeal entities have seen the delicate beauty of a freshly unwrapped gliderling catching its first updrafts among the Cherenkov tulips in their quasi-quantum development stage.
I’ve been fascinated by this elusive species for some time and have spent some time developing a system to track, capture, and preserve balsa gliders in a state visually identical to their natural environment.
The gliders are treated very humanely and respectfully throughout the taxidermy process. Though it does end with their dead little balsa frames suspended in a matrix of acetoxy silicone, balsa are intensely vain beings so they don’t actually mind being murdered as long as they know they’ll leave a beautiful corpse.
I have documented a few steps in the process. This image shows the my team of trained domestic gliders immobilizing a wild juvenile glider by laboriously explaining the concept of token currency.
This is a side-by-side of a real Cherenkov tulip and a decoy made to capture wild gliders, and subsequently used in the final glider display.
Here is the glider and tulip in the freshly poured astral preservative compound, which suspends physics indefinitely when properly cured inside a corectilinear third-order hypercylinder.
Here is an unnecessarily long video of the final taxidermied balsa plane with scene accents and lighting.
It’s actually one of the SPACE tubes at the end of the last post video, but I put it in a more permanent fixture and it’s got the tiniest balsa plane I’ve made yet and I thought it deserved more attention.
This is a video I created to demonstrate\promote these little lights I’ve been making.
I’ve got a fairly consistent process for making a few different styles so I’ve decided to call the main ones BLOOM, FLAME, and CLOUD. One-off experiments that work out enough to put in a light will be GUMBO. The larger fresnel lens tubes with little scenes will be SPACE.
I have no idea if anyone will think these are cool enough to spend actual money on, but at this point I pretty much have to start selling them just to justify continuing to make them.
I still have a little sorting to do but I plan to have the first Etsy listing of one of these lights up within a couple of weeks. Still not sure about a price, I’m thinking in the 60-80 range.
If you are an Arduino\electronics person and want to try writing some cooler FX loops or replacing the ATTINY85 with an ESP8266 for WiFI control let me know and I’ll see about sending you one for testing.
UV LEDs really make fluourescent materials pop but I’m way too lazy to be wiring up individual PWM dimmable LEDs, so I looked around for addressable UV options. The first searches came up with references to a few UV LED strip supplies, but everything I could find was out of stock. But in combing through Alibaba I found these PCBs made to drive a thru hole RGB with WS2812 signals.
I thought it might be possible to drive UV LEDs with them, so I ordered some.
I had a while to wait for the shipment and started searching again, and realized I’d somehow missed the most obvious supplier of specialty electronics had exactly what I was looking for- Adafruit FTW.. So I ordered a meter of them and got them about a week later.
They work really well, and I love that I can control 3 tiny UV LEDs on one chip and that does offer a little movement with the light when you rotate them, but I was looking for more definition. I’d already tried some little 30degree lenses for 5050 LEDs so I popped one on. It definitely tightens the beam, but the beams are so close it doesn’t make much of a difference in a small amount of space.
So I finally got the PCBs in and tested soldering up a few LEDs in a triangle.
Here’s a demo of the addressable 5050 bare, the 5050 with a 30degree lens, and the PCB with 3 individual UV LEDs (I think they have 20 degree lenses).
I really like the PCB version and I think I’m going to use them in these fresnel tube lights. This is a balsa plane one that is kind of boring because the plane is too level, but it’s good for testing.
I needed a phase-cage to trap a A tensor varmint outside of normal space-time, so I built this meta-harmonic open-closed cubical spheroid.
That, or this is the same as the hex tube from before, but in black PLA stand and with a cooler tube in the middle. I need to write some cooler FX loops for it, this one doesn’t even use the ‘area’ LEDS, the ones in between the tubes in the LED ring. Can’t really think of anything for the FX right now, but there have to be some cool combos for this configuration.
Plenty of other neat-o silicone\LED nonsense going on, but this is kind of a one-off I figured deserved a post so here is.