Video available: https://youtu.be/ADPLgpeq92M
Additional photos: https://photos.app.goo.gl/wjoFi8ZHbLQefiyo9
This art-tech sculpture was inspired by the shape of the DNA molecule. As can be seen in the lead image, the sculpture is a single helix of AWG8 copper wire with AWG20 copper & brass rungs with WS2812B RGB serially addressable LEDs. There is a NodeMCU V1 microcontroller which drives the LED display.
Design files are available on Github: https://github.com/joliva/genoscope
The 3D modeling of the design was done with OpenSCAD to get the dimensions and design details hashed out prior to attempting a build. OpenSCAD was also used to design three 3D printed jigs for assisting in the build process. There is a jig for winding the AWG8 copper wire into a helix, a jig for laying out rows of LEDs for the soldering of the AWG20 wires, and a final jig for bending the wires that go between the rungs.
There is a NodeMCU v1 microcontroller which drives the daisy chain of WS2812B RGB LEDs and provides 5V via a set of inter-rung wires and GND via the helix itself. The NodeMCU was programmed using Arduino.
The helix was made by winding AWG8 copper around the helix jig and using clamps to hold it in place. A marker was used to put a small mark on each rung on the left and right side to show where vertical AWG8 copper wires would be soldered for structural integrity.
The rungs were made by laying out individual WS2812B RGB LEDs in the rung jig and soldering wires between them. The inter-rung wires were bent into the proper length and shape using the datacon jig. Soldering and spacing of the wires was a delicate process. Once the entire grid of LED rungs was wired together, it was attached to the structural helix via the GND connections to each rung.
A NodeMCU v1 was then soldered to the helix (GND) and to the first rung of LEDs (data and 5V).
The last part of the physical construction was adding a CD to the bottom via hot glue which serves as a nice flat base and also provides an interesting refracted and reflecting surface.
(code available on Github)
The NodeMCU was programming using Arduino and makes use of the ArduinoOTA library so that new code can be uploaded wirelessly via WIFI (nice).
The code is structured as a main loop and a set of LED animation effects. The mainloop calls ArduinoOTA to see if a new connection from the IDE is being established or not and then calls the current animation effect. The main loop also maintains a timer used to switch between the various animation routines. Writing to the set of LEDs is accomplished with the FastLED library.
I knew it would be important to have a nice regular grid for the LEDs and to have a very consistent shape for the helix in order for the result to look aesthetically pleasing. The jigs made it possible to achieve this.
The AWG8 wire making up the helix is somewhat springy so even after bending along the jig it wants to open up some when released. By putting the marking on the rungs prior to releasing the wire from the jig it was possible to apply some torsion prior to soldering the vertical structural members to achieve the desired helix diameter.
Soldering to the heavy gauge wire was also difficult because it acts as a heat sink. My standard soldering iron would not cut it so I ended up using a powerful hot air gun to heat the junctions prior to soldering - this worked quite well.
AWG8 copper wire: https://www.amazon.com/gp/product/B01LORGH9U
AWG20 copper wire: https://www.amazon.com/gp/product/B000IJW7W2
WS2812B LEDs: https://www.amazon.com/gp/product/B00P2GQUYC
NodeMCU v1: https://www.amazon.com/gp/product/B010O1G1ES