Fidgeting is a very natural and common response to either boredom or nervousness, and it can also lead to some destructive/harmful habits if not curtailed. So as a project for element14 Presents, host Katie Dumont created a fun and tactile way to fidget that integrated embedded technology. Her "fidget cube" houses six sides, with each face of the cube having a unique thing to do which often involves messing with switches or seeing a few LEDs light up.
In the first part of the project, Dumont worked on the initial three faces that were quite simple for the most part. One panel was dedicated to LEDs and power management since it contained a ring of LEDs surrounding a central button that can be pressed to light them up, along with power management circuitry on the back controlled by a switch and an additional button. The second face has a tiny OLED screen that allows a user to play a game of snake by moving a five-direction switch, and everything on this face is managed by an AVR64DA32 microcontroller. Finally, the third face houses another AVR microcontroller that manages a two-input logic gate at the top and a 6-bit binary counter at the bottom.
For the last three panels, Dumont reached out to other users on the element14 forum to get their ideas for what she should integrate into the second half of the fidget cube project. One user suggested some kind of haptic device, either shock/vibration or simply a buzzer that can be felt by placing a finger over the device. Another idea involved a maze game played on a small display where the user must get the ball from the start to the finish by only tilting the cube. The last idea was a "touch switch" that could allow a user to tap or drag along a conductive surface.
Dumont began implementing the first idea by creating an initial schematic that combined the previously used AVR microcontroller with a pair of vibration motors and a momentary pushbutton switch. Once pressed and released, the microcontroller times how long the button was held down and causes two of its digital GPIO pins to each begin outputting a signal. This signal then travels to a MOSFET that drives the motor.
Because it is always fun to control something by simply swiping a finger across it, Dumont was very excited to add this feature to her fidget cube project. In essence, her design involves integrating four slides on the top layer of the PCB that each have three sections of exposed copper plating. And as set up in the MPLAB Code Configuration tool, the microcontroller can determine the level of charge on each pin thanks to its internal capacitive sensing peripheral. Three of these sliders adjust the level of red, green, and blue, while the last one sets the overall brightness. Once the new values have been read, they are outputted to a 3x3 grid of neopixels in the center of the board.
This last cube face was the most complex to create, as it not only required a larger OLED screen driven by SPI, but also an inertial measurement unit that measures the cube's orientation in 3D space. Unfortunately, Dumont encountered a problem with the screen and determined that it was due to a lack of sufficient supply voltage, meaning that she could not complete it in time.
The first iteration of the fidget cube's enclosure featured two 3D printed halves of a cube that let each PCB face to slot in vertically. This worked for the most part, but Dumont was still concerned about it potentially breaking, so she added more material at each edge and included several internal reinforcing pieces for extra rigidity.
Overall, the cube was a great success and worked exactly as intended, apart from the one non-functioning balance maze face. Once the boost converter is added, Dumont will have made a six-sided fidget cube complete with interesting things to occupy the time. For more information about how this project was designed and made, you can view element14 Presents's video here on YouTube.