The Dicemaster 2000

By David Crookes. Posted

Chris Hall enjoys playing board games and he’s part of a local gaming group. He attends with his best friend and the pair have had many happy times but a medical condition affecting his pal’s vision has threatened to spoil the fun. “About a year ago, my best friend was diagnosed with a degenerative eye disease,” says Chris. “So when his birthday was coming up, I wanted to do something special for him.”

Most of the games played by the group involve the rolling of dice and the problem for his friend was all too apparent: without someone reading out the result, he wouldn’t know what numbers were showing. The answer, Chris surmised, was a dice-rolling device that his friend could use independently which would read out the results and incorporate some other handy features. “I figured it would help him out and be a surprise gift,” he tells us.

From the start, Chris had an idea of what he wanted from the device. “I knew what I wanted to achieve – for my friend to press buttons, for virtual dice to be rolled and the result to be announced,” he says. “From there it was just about figuring out which components to use and how to lay them out efficiently. This needed to be hand-held, so a compact design was a must.”

To that end, Chris modelled the device on a gamepad. “I tried to imagine a controller, like an Xbox controller,” he says. “I sought to work out how it would look, feel and where the thumbs would rest. I wanted to make something that was comfortable and felt familiar and I also needed it to operate without being plugged in so I chose a Raspberry Pi Pico and used an 18650 battery shield to power it along with the other components.”

The different modes make life even easier. A die pool can be saved and loaded to a microSD card which is inserted in the top of the device.

Roll with it

Selecting the Raspberry Pi Pico meant the dice roller could be compact and use minimal power. “It’s instantly on and it was able to handle the different components I needed, such as a microSD card reader, an audio amp with speaker and a litany of buttons,” Chris says.

Those buttons would be 3D printed with Braille so that his friend would be able to read their various functions and control the device effectively and independently. “Adding Braille wasn’t very difficult,” Chris says. “I designed flat button caps then added the Braille numbers to them in Blender, the free open-source 3D computer graphics software.”

Board games often make use of non-traditional dice – in other words, they’re not always familiar cubes with six marked faces. The standard polyhedral dice set also includes those with four, eight, ten, 12 and 20 sides (the entire set being referred to as d4, d6, d8, d10, d12 and d20). “I needed to have a button for each one,” Chris says. He also added two extras: Reset and Roll.

The case took some time to perfect, but it’s been designed to be comfortable to hold while giving easy finger access to the buttons

Writing the project in CircuitPython, he created a device that would allow his friend to press one of the numbered buttons to add it to the die pool. When the dice are ready to be rolled, it’d be a case of pressing Roll and listening to the result when it’s announced. “In addition, there are some long press modes,” Chris adds. “If you hold the d4 button for a few seconds, you will enter quiet mode which plays chimes rather than speaking out every die entered and describing what it’s doing. It still announces the results of the roll, but it can cut down on time and I added it in case the normal mode was too distracting to other players at the table.”

Holding down d6 saves the current die pool. “This is useful if you’re playing something like Dungeons & Dragons and constantly need to roll that big 8d6 fireball [that’s eight d6 dice being rolled at once],” Chris continues. “Long-pressing d8 will load the saved die pool from the microSD card, and that means the saved pool will persist across uses.” Long-pressing the d10 enters percentage mode which, rather than rolling dice, will simply give a percentage between one and 100.

Play the game

Coding all of this was a challenge. “Interfacing with the audio amp was tricky and I wish the device was a bit easier to understand in terms of audio quality, but this may have been due to everything being built on a prototype board,” Chris laments. He also found it difficult to perfect the controller shape. “The housing was 3D printed in a single colour and the top was painted red. I had a good friend of mine help with the ergonomics of it. There was also a lot of soldering,” he adds.

The device makes use of a Raspberry Pi Pico board connected to a protoboard which is wired to the buttons and a PAM8302 2.5 Class D single channel amp

Even so, it’s been worth the time and effort. Chris’ friend loves using the device and he finds it allows him to fully participate in games. It’s also comfortable to hold, easy to use and very effective. What’s more, you can replicate it because Chris has made the code open source and he has also shared the 3D files on Printables. In that sense, it’s capable of helping many other people with a visual impairment.

Chris is certainly happy overall even though he would have done some things differently. “If there is one part of this project I wish I had done, it would have been to design a custom PCB using something like KiCad – if only I’d had issue 138 of The MagPi when I started! It probably would have helped a lot with audio issues and made for a cleaner build overall. It’s definitely on my list of things to learn for future projects.”

From The MagPi store


Subscribe to the newsletter

Get every issue delivered directly to your inbox and keep up to date with the latest news, offers, events, and more.