Tuesday, December 20, 2016

Building a Bluetooth Conference Badge

Who doesn’t love electronic con badges? They look fly as heck, blink LEDs, and… well… that’s all most of them do. Don’t get me wrong, there have been some neat game badges and even a few useful ones (hat tip to Mike Ossmann for releasing a HackRF as a badge(!)). But those are the exception. Most go straight into the ewaste old badge pile after the con.

That’s why when I set out to create a conference badge, I wanted to make something I’d actually use for something other than bling. Enter the Slide Quacker!

This summer ICE9 Consulting (that’s me!) sponsored Wrong Island Con 2+ε, a roaming conference put on by ducklord richö butts that took place on Catalina Island in Los Angeles, CA. Along with our pal nico, we sunk a bunch of time, effort, and money into creating the best conference badge we could imagine.

The Slide Quacker is a Bluetooth Smart (BLE) slide clicker. You can pair it with your laptop and use it to change slides in a presentation. Neato. It is an open source, open hardware design, so if you like what you see you can even make one yourself.

The firmware is based on Apache Mynewt, a project by Runtime.io that is incubating its way (hopefully) into the Apache Software Foundation. Mynewt provides a full embedded RTOS (real time operating system) as well as a fully open source BLE stack. I did run into a few rough edges at the time. It’s a little underdocumented, and I did find some bugs (it turns out when you report bugs in a Bluetooth stack the default assumption is “crackpot”, reasonably so). That being said, it’s come a tremendous way since then, and they just released milestone 1.0.0. If you’re in the market for a lightweight, featureful RTOS, give it a look.

On top of Mynewt, we implemented a very basic HID over GATT implementation to emulate a HID keyboard. Our super sick keyboard only has two buttons: left and right arrow, although you can of course map any button to any function since the firmware is open.

The hardware was lovingly handcrafted by nico. The design centers around a Nordic nRF51 SoC (System on Chip) with integrated BLE-compatible radio. Nordic does ship source code that you can use in designs, but it’s not an open-source compatible license. Thus our choice to use Mynewt. Other peripherals include an I2C accelerometer for pairing, a USB UART for firmware updating, and a whole bunch of LEDs because no conference badge would be complete without them. It even includes some easter eggs for setting your preferred orientation (though I did morally struggle with whether to include the UPRIGHT option).

This was our first experience building a con badge, and holy moly was it a frosted buttload of work. But it was totally worth it in the end to see the badge ACTUALLY BEING USED by some of the speakers! Plus there were some fun shenanigans to be had at the con, making sure everyone knew that flat ducks ultimately reign supreme.

If you’re interested in the hardware design and the firmware, check out the repo! As always, feel free to leave any questions and comments below.

And before you ask… no I do not plan to make any more of these. But if you come to the next Wrong Island Con (hint: bug richö to run it again) maybe you’ll get your hands on our next creation.