ESP32 Nibbles Demo/ Icon64 Assembly

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.

Cross Section Analysis of the Enclosure in Fusion 360. You can easily see the snap-fit mechanism between the bottom and the shell

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 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?


Posted by Daniel Eichhorn

Daniel Eichhorn is a software engineer and an enthusiastic maker. He loves working on projects related to the Internet of Things, electronics, and embedded software. He owns two 3D printers: a Creality Ender 3 V2 and an Elegoo Mars 3. In 2018, he co-founded ThingPulse along with Marcel Stör. Together, they develop IoT hardware and distribute it to various locations around the world.

Leave a Reply