DiceBot: The Twitter Controlled Dice Roller

The intersection of man and machine has always been of great interest to Intridea. While much of our work focuses on software, we’ve also been exploring the hardware side and the increasing demand for human-software-hardware interaction.

The machines we interact with are no longer just typical computers and phones. They’re increasingly specialized hardware devices like the Nest thermostat, Fitbit, 3D printers, and more. In our exploration of these interfaces, we’ve built a multitude of gadgets and devices. Some playful and some serious.

Over the coming months we’ll show you what we’ve been up to, delve deeper into how these gadgets came to life as well as what it means for UX, software, and the future Internet of Things and Social Machines.

Our first example, DiceBot, takes a 1920’s antique dice game and adds some additional hardware and a few software layers to make it interactive and connected.


We added a motor to the dice roller so we didn’t have to spin it manually then connected it to a RaspberryPi via a L298N and GPIO so we could control the motor programatically. Then using OpenCV we created a program to recognize the pips on the dice that got rolled and output a count.

The device is connected to the Internet and controlled via Twitter using a couple Ruby scripts; one that listens for Tweets and queues jobs and another that listens for jobs, spins the wheel, counts, and puts the results back on a queue. To operate the device you simply send a tweet to @IntrideaDiceBot with the hashtag #RollTheDice and it will add you to the queue. When your turn comes up, it will spin the dice, count the pips, and Tweet back to you the count, plus a picture of the roll. You can see all the latest rolls on dicebot.intridea.com.

Here’s an example:

@naffis: Hey @IntrideaDiceBot, I’m feeling lucky #rollthedice cc @intridea

@IntrideaDicebot: DiceBot rolled you a 7, @naffis. See your roll at dicebot.intridea.com #DiceBot #INTRIDEA

Stay tuned! In the next few posts, we’ll be illustrating each step for creating Dicebot:

  1. RaspberryPi GPIO and L298N control of the motor.
  2. OpenCV image recognition program to count the dice pips.
  3. 3D Modeling and printing of the enclosure and other apparatus.
  4. The scripts and workers that interface with Twitter and allow control of the device.
  5. The Single Page App (SPA) that ties it all together using Firebase and AngularJS.

So next time you’re playing D&D or you want to use a physical random number generator take the DiceBot for a spin.

Got any suggestions or cool projects you’re working on? Keep the conversation going!