DIY bluetooth button – How to build your own smart IoT buttons

16th June 2016

We’ve been working on a project to build configurable connected buttons and we’re excited to announce that we’re making the code and instructions for building “Pips” publicly available and open source.

You can find everything you need to get started on our GitHub repository. We hope that this will allow students, researchers, and makers to get started experimenting with the Internet of Things a little more quickly.

Pips are smart, configurable, connected buttons. They are designed to make it really easy to create sequences of physical alerts and reminders, but they’re flexible enough to be used as a general purpose internet connected button.


Pips were originally designed to help people with cognitive or sensory impairment to organise their daily routines.

Our idea was to build devices that could be placed around the home in order to guide users through the sequence of tasks that make up their daily routine. A typical routine might be: Wake up, take a shower, get dressed, feed the cat, have a cup of tea. Each step would have an accompanying Pip placed nearby. A Pip lights up and beeps to show that a task needs to be done. Once the pip is pressed it turns off and the next Pip in the routine is activated. We’ve explored using Pips to help visually impaired people to navigate and as a toy for visually impaired children.

Pips can be considered to be little light-up alarm clocks that reset daily. They provide guidance but allow for plenty of flexibility in a routine.

We think that there could be lots of applications for similar devices and we want to make it easier to build interactive IoT systems. For example you could build a set of wireless quiz buzzers or create some physical alarms that you can trigger from your infrastructure monitoring tools.

How it works

This prototype Pip is built around the Light Blue Bean microcontroller. The Light Blue Bean is a Bluetooth low energy enabled prototyping board. It waits in a low powered idle mode until a message is received. Upon receiving a message it will wake up and activate the buzzer and LED according to the message payload. When the switch is pressed it will send a message to say that event has occurred before returning to idle mode.

Pips use Bluetooth to communicate with a central gateway which controls their behaviour. The gateway hosts an MQTT broker which can be used to make messages available to other services.  The gateway can be implemented with a Raspberry Pi.

The public repository contains code for Pips and the gateway along with a shopping list of components and instructions for building the devices.

We’d love to hear from you if you build something using Pips: ([email protected]) When your project’s off the ground and you need to manage all of those devices Nominet’s IoT Tools will be really useful!