Slack is great. We use it as our primary source of communication between the team and, whilst the majority of the time it is used as an elegant middle ground between knowledge store and constructive discussion, it occasionally descends into a barrage of absurdity and internet humour gifs, usually at the hands of giphy.
For those not familiar with slack, there are two great things about it. Its integrations, and giphy. You can plug almost anything in and out of slack, github notifications, exception notifications, custom webhooks, it’s incredibly flexible. Then there’s giphy. Type /giphy followed by some words and it will return a gif related to those words. It’s always a gamble on whether giphy nails the context of your conversation or not, which is a large part of the fun.
Slack has a personality, it’s almost like a member of the team in itself. What it lacks is a physical body. So I decided to create one.
Fortunately I had a previous robot I could salvage for creating a Slackbot. An arduino with a motor shield held the brains, while a base with two motors with encased gear mechanisms and two wheels provided adequate mobility for a small desktop robot but this wasn’t going to be enough.
A Raspberry Pi would give Slackbot enough brain power to handle talking to the internet and processing commands before passing them off to the arduino to interface with the hardware. I flashed the arduino with the standard Firmata library and used an arduino_firmata gem for Ruby to allow the Raspberry Pi to communicate with any pin on the arduino, giving me simple ruby methods to use to fire the motors and other hardware on command.
A speaker and touchscreen were added for interaction and a fresh install of Raspbian had been patched with touchscreen drivers, Slackbot was alive. Alive but braindead.
This post is a work in progress and will be updated as the build progresses…