Designing Rainbow Glow: Extending Tinkercad Circuit Assemblies with programmable projects
On the Tinkercad Circuits team, we’ve been designing new ways to bridge electronic and 3D design so that anyone can learn to build physical, interactive projects.
With our introductory set of Circuit Assemblies, you can build 3D creations that light up, move, and spin using basic electronic components — with no soldering required.
After designing these initial set of introductory Circuit Assemblies (more on that here), I started exploring how programming could be added into the mix, taking advantage of the full simulation capabilities on Tinkercad Circuits.
In other words,
How can we combine programming, circuit design, and 3D design for building interactive physical projects?
Over the years, I had been closely following the awesome work of Erik Nauman (Erik Nauman) on a 3D-printed shield for the Arduino Uno. His brilliant design accommodates a NeoPixel ring with a holder that sits directly on top of an Arduino’s I/O pins. Only the pins needed to connect the NeoPixel to the Arduino (power, ground, and a digital output pin) are exposed to make connecting the two parts super easy.
By openly sharing his design (http://www.instructables.com/id/NeoPixel-24-Ring-Arduino-Shield/), Erik enabled anyone to build off of it, leading to lots of great examples of activities and curriculum around programming the NeoPixel RGB LEDs to produce interactive patterns.
Seeing this work inspired me to think about how it might be extended to accommodate any custom 3D-printed design, so you can illuminate any design from your imagination. I reached out to Erik, which led to a collaboration (along with Becky Stern, Instructables content creator extraordinaire) culminating in our Rainbow Glow Circuit Assembly:
Here’s a photograph of the Circuit Assembly design, which features a snap in the center which is used to attach any custom 3D design. You can remix it here: https://www.tinkercad.com/things/jrjg8hZXqG3-rainbow-glow-ca/
In this post, I’ll reveal the iterations that went into creating this design and some potential future directions. I’ll focus mostly on the physical design – there was a lot of other design work that went into this, like creating the learning content and tutorials, designing the simulate-able model, and more.
Designing the Holder
Lots of prototyping went into tweaking the original design to add the snap. I started by importing the original model (as an STL) that Erik shared for his NeoPixel ring into Fusion 360:
I ended up modifying the design to add a few features:
- Labelling the Arduino I/O pins that are used in the design
- Tightening the tolerances to create a tight press-fit around the holder and the Arduino header pins
- Increasing the rigidity of the inner ring so that the NeoPixel fits snugly in the holder (notice the tabs on the perimeter of the ring)
Next, three different attachment mechanisms were prototyped
- A press-fit design
- A threaded design
- A snap/socket design (which was eventually chosen)
The original press-fit design incorporates the same flexures at the base that’s used in the Glow circuit assembly to account for different printer tolerances. However, it required the most material of the three options.
The threaded and snap/socket alternatives were prototyped simultaneously. For the threaded design, inner-threads were printed with a few different offsets until there was a solid fit (loose enough to make attaching and removing easy while still being secure).
I found printing the offset amount on the side of the “bolts” was the easiest way for me to keep track of the differences. I do wish this was easier to add text extrusions in Fusion 360 — you essentially need to create a text object, explode it, and then extrude it. This is actually much faster to do in Tinkercad, but since I needed the parametric capabilities of Fusion 360 to more easily maintain the model more generally, I kept the design in Fusion 360.
After prototyping the threads independently, I then added it to the holder design.
I received feedback from a few people about the ease of use of the two options, at which point we decided to go with the snap/socket attachment mechanism for a few reasons:
- Snap/socket is a little more forgiving in terms of printing tolerances (you can’t file threads very well, but you can file a socket opening if needed)
- It is faster to remove a design using a snap and socket than unscrewing
- With a threaded design, you don’t have as much control over the orientation of the model when it’s fully threaded onto the holder, whereas a socket/snap design allows you to easily rotate the model to whichever orientation you want
- Wires could potentially be tangled as a result of unthreading once all the parts are soldered together.
As these alternatives were being prototyped, Erik and I were printing them on our own respective printers to check the tolerances across different printer types and resolutions in an effort to create a robust design.
Prototyping 3D Designs
We brainstormed together on different types of 3D designs that might be attached to the holder, ranging from a stormy cloud to a campfire to a UFO. As we were printing our designs, we were using clear filament when possible to get the best possible effect:
In the middle of attempting to print a UFO design, my Makerbot failed and I ended up with a half print. Wanting to test the fit nonetheless, I found that there was actually a compelling lighting effect using light-fill solid filament:
We started thinking about how to make the design flexible for solid filament so that opaque plastic acts as a diffuser for the bright NeoPixel RGB LEDs.
Erik then prototyped two different butterfly options, using cutouts that do not go all the way through the material so that when the design is illuminated, it reveals a hidden pattern.
In the end, we decided to move forward with the flat design because it eliminates the need for support material when printed upside down. This gave us our final 3D design to include as an example of using the Rainbow Glow Circuit Assembly!
Build It!
Below are links to tutorials and models you can remix to build your own designs.
Instructable*: http://www.instructables.com/id/3D-Printed-NeoPixel-Ring-Butterfly-With-Tinkercad/?linkId=51899198
*includes instructions for programming the NeoPixel ring, using the Circuit Assembly in Tinkercad, and assembling the 3D printed parts with electronic parts
3D design on Thingiverse: https://www.thingiverse.com/thing:2954923
Simulatable NeoPixel design on Tinkercad Circuits: https://www.tinkercad.com/things/fb3DnM3aCUT-rainbow-glow-circuit-assembly/editel
Butterfly design on Tinkercad: https://www.tinkercad.com/things/jrjg8hZXqG3/
Wreath design: https://www.tinkercad.com/things/lOuwnu9cKbY/
Next Steps
We hope to add new variable types to our Circuit editor soon, which would enable programming the NeoPixel using our visual code blocks:
If you have any feedback on the design, or future directions you’d like to see with any Tinkercad Circuit features, please leave a comment below.
Thanks to Erik Naumann and Becky Stern for collaborating on building the Rainbow Glow Circuit Assembly and tutorial!