Scrumtato: Make daily stand-ups agile again
12 June 2017
At Delphi in Gothenburg, where I am currently employed, we create all kinds of cool products for the automotive industry. To organize our development process, we use SCRUM and abide by the Agile principles. Every morning, we have a short meeting where we discuss what our progress has been since the previous meeting, what we intend to work on until the next one, as well as mention any obstacles that we face. This meeting, the “daily stand-up”, is supposed to be short and should not last more than 10-15 minutes.
However, we used to have a problem: As our team is full of talented and passionate developers, we love to talk about the tasks at hand, details of the conducted work, engage into technical discussions about issues etc. Sometimes… too much! This stretches our meeting time and keeps us from getting the most out of our work hours. To solve this problem, here comes Scrumtato, a gadget to make daily stand-ups agile again!
But let’s take it from the beginning… About a month ago, I was trying to think of a cool handheld gadget, that does something meaningful and is powered by a very minimal source, such as a coin cell battery. Eventually, I came up with the idea to create a toy inspired from the Hot Potato game. The functionality would be very simple: A timer should be counting down, beeping at an increasingly higher frequency as the remaining time decreases. When the time is up, there should be a characteristic sequence of sounds as well as vibration to make it cooler. To spice things up, an accelerometer should detect whether a player is holding the ball for too long in their hands and start a sudden countdown. In that case, the player would have only a couple of seconds to pass the ball, before it prematurely explodes. The microcontroller, a trusted ATtiny85, should remain in deep sleep as much as possible in order to preserve power and be able to operate the gadget for as long as possible on a coin cell battery. Additionally, a 3D printed round shell would protect the electronics and make the gadget more appealing, as it would ultimately be intended for kids.
After designing the circuit, I placed the order on PCBway (which has become my go-to fabricating service when I want a PCB cheap and fast) for the boards to arrive less than a week later via DHL. In the meanwhile, the idea was shared with the rest of the team during our morning fika. A colleague, Jesper, proposed that the gadget could be used instead to moderate our time during the stand-up meetings. And this is how Scrumtato (a wordplay of SCRUM and Hot Potato) was conceived!
Scrumtato is our way of keeping developers in check when it comes to excessively talking and discussing during daily stand up meetings. The usage is very simple. It begins by pressing the button that lies on the bottom of the Scrumtato. Then a double beep is heard. The developer has 1 minute (or whatever the SCRUM team decides) to talk about what they did, what they will do and whether they have encountered any impediments. Whenever the remaining time has been decreased in half, the Scrumtato will beep once reminding the developer that they are not supposed to talk forever. As you might have guessed, the frequency of the beeps will steadily increase stressing out that time is running out and… the developer! If the developer finishes on schedule, then they press the button and a triple beep is heard. In case they fail to do so, a different sequence of beeps is heard while the ball is vibrating.
And that is how, based on the same hardware we ended up with two different firmware, the scrum tool and the toy. For the time being, the two use cases are maintained separately, but if it is deemed sensible to combine them it should not be a problem to do so, as the logic and code are very similar. An advantage of keeping them separate is that the scrum-tool firmware can be run by the - cheaper - ATtiny25 which has just 2 KB of memory, while as a toy it needs at least an ATtiny45 which has 4 KB of memory.
On the software side of things, we have two states. A deep sleep state, where the microcontroller consumes a minimal amount of energy (I have not measured it, but it should be below or about 1 uA) and can be woken up by an (external) interrupt. This is the state that the microcontroller goes after a game has finished. Next, there is the game state where the main business logic is implemented and the microcontroller is also sleeping most of the time. In this occasion, the sleep is interrupted by a watchdog timer which essentially manages the pace of the operation. For example, while we are awake we check how much time has passed, or rather how many times the watchdog has woken up the microcontroller, since the familiar Arduino millis() function does not produce very meaningful output, as the timer it is based on is stopped, when the system sleeps. When used as a toy, during the game state we have the accelerometer powered up and read its measurements in order to estimate whether there has been a considerable “move” over the course of time, indicating that the ball is being passed around and not standing still.
On the hardware side of things, namely the PCB, the design is fairly straightforward. Challenges involved making the board as small as possible and managing the limited number out of I/O pins, as the ATTinyX5 family has only 5. Additionally, it was imperative to have an accelerometer that could be turned on and off. Therefore an I/O pin was dedicated to this operation and in order to occupy the minimum amount of I/O pins an analog accelerometer based on the ADXL335 chip (GY-61) was used. This allows us to read data from a single axis, using just 1 pin, as opposed to 2 that would be necessary for an I2C based communication. Reading the “tilt” from a single axis works surprisingly well when you only need to know whether a ball has been thrown to another player.
The final task, which took by far most of the time, was to design and 3D print a shell for the Scrumtato. Considering that the gadget might be tossed around when used as a toy, the material to be used would have to withstand harsh ground impacts and protect the electronics. To achieve this, I used the proFlex filament by ZYYX. It is a tricky but neat material to work with. To give an example, designs that would be printed flawlessly with common PLA (hard plastic) would fail with the flexible filament. I ended up with two separate designs to accommodate the different use cases. The PLA version is rather simpler to print and the two parts just “click” together tightly. It is designed for office use during the stand-up meetings. It will not break upon the firs impact, however it is probably not a good idea to continuously drop it. The flexible version, is trickier and needs support in order to be printed as it should be. It is also comprised of two parts, but the bottom one is screwed onto the top. The flexible version can be almost freely… abused!
Check out a video of us playing the Hot Potato game. In it you can see the fast countdown mode that is initiated twice trying to “punish” me because I do not pass the ball fast enough. The second video shows how a premature explosion looks, sounds and feels like.
So… what is next? Well, for starters it would be cool for the ball to light up brighter. Currently the SMD LED that is on the board does not seem to be sufficient. Maybe a normal 5mm LED would be more suitable. Next, a way should be found to enhance the buzzer sound. It is presently not bad at all, but it would be really awesome if it was even louder. Additionally, a reset button is always welcome and useful. In the long run, it would be very interesting and drastically increase Scrumtato’s usability to add connectivity. For example to include a BLE module and get analytics about the stand-up meetings on the SCRUM master’s smartphone. Fortunately the whole project is open source, from the software to the PCB and the 3D printed case, so you can join in and give a helping hand! :)
You will find everything necessary to reproduce and further develop this on the project’s GitHub repository.