For a long time I had a 8×8 RGB WS2812 led module in my gadget box. The WS2812 led is a wonderful component for makers. It is easy to program and comes in many forms for a really low price. With just 3 lines (5V, GND and Data) you can control dozens or hundreds of leds. Modules can be chained together to increase the number of controlled leds.
Fusion 360 is a very powerful tool but if you never worked with a CAD program before it can be overwhelming at times. But with every project you get better and learn how to make your design more robust. A robust design is easy to adapt or extend later on. Parts which interact with each other are updated automatically when changing one feature.
When I started designing the Icon64 enclosure I expected many iterations of designing, printing, fixing, printing… To my big surprise the design worked right from the start. The squire grid fit perfectly into the outer shell, the paper diffusor and the acrylic came out of the laser cutter also with a perfect fit. And the best part was when the snap-fit back component slid into the shell with a satisfying click.
Each of the 3D printed components took about one hour or less to print. The modular design lets you change parts without printing the whole enclosure a second time. So I added a grid to the shell in a second revision and replaced acrylic cover and the diffusor paper with two layers of white PLA.
Electronics – ESP32 & WS2812
Software – Nibbles Demo
Usually I use the Arduino IDE for entry level projects. The Arduino IDE is made for programming beginners, but it also lacks a couple of key features. Very important for me is that others can easily re-create my projects. In the Arduino IDE there is no project file which defines the libraries used in the project. Users have to find the right version for each used library manually and this allows for mistakes
So I decided to use the Platformio IDE for this project. Platformio is a build tool for embedded devices and supports many different build targets. And it uses a project file – the platformio.ini – where you can define all libraries, even with a specific version. The editor is based on Microsoft’s Visual Studio Code and is very comprehensive.
In case you’ve never worked with Platformio before follow the instructions at https://platformio.org/platformio-ide to install it.
I tried to keep the code as simple as possible. My worm is not very clever and constantly collides with its own tail. If that happens the board will be reset and a nibbles is born. The code could be improved with a path finding algorithm. Maybe a nice exercise for you?
- ESP32, e.g. ThingPulse DevBoard, but any ESP32 should do
- WS2812 8×8 RGB Matrix from AliExpress
- 3D Model: Thingiverse
- Code on Github
Did you like this post? Consider supporting me with a virtual coffee or beer.