Hands on with the Light Blue Bean

A Bluetooth LE capable and Arduino compatible micro-controller you'll never plug in!

We took a look at Punch Through Design’s Light Blue Bean back when the board was called the “Cortado” and Punch Through had just opened its doors for pre-orders. However with the board now shipping to pre-order customers, and going on general sale at the end of the month, it’s time to take proper look at the final production hardware.

Punch Through was kind enough to send me four Beans for evaluation. The board I bought with my own money is apparently sitting on my desk back home, unfortunately I’m currently a few thousand miles away in New York for this year’s ITP Camp.

The Light Blue Bean is a new Arduino compatible board with built-in Bluetooth LE support, and while that isn’t a new idea, the Bean does something different than the other Bluetooth LE enabled Arduino clones I’ve seen so far—it lets you upload your code to the board wirelessly… look ‘ma, no wires!

Although the boards are supposed to ship with the battery in place so that—as long as you download their app to your phone ahead of time—you’ll get a push notification when the board arrives at your door, mine didn’t. When I opened the boxes there was a ‘remove before flight’ style plastic separator between the battery and the board. However I’m putting this down to the unorthodox method I obtained them rather than any change in policy.

So after pulling the ‘remove before flight’ tab I waited a couple of minutes, sure enough the Bean was discovered by the app and the promised local push notification turned up on my phone. Tapping on the notification opened the Light Blue app and allowed me to pick the Bean out of the list of nearby Bluetooth LE devices, which dropped me into a custom service view for the Bean.

The Light Blue app discovering a new Bean (left), showing the Bean in the list of nearby devices (middle), and the Bean in the 'Service View' inside the app (right).

The Light Blue app discovering a new Bean (left), showing the Bean in the list of nearby devices (middle), and the Bean in the ‘Service View’ inside the app (right).

The board has 8 digital I/O pins—2 of which can be used as analog inputs—an RGB LED, and a 3 axis accelerometer, and the app allowed me both to control the onboard RGB LED directly, and see the accelerometer values and the status of the digital and analog pins of the Bean.

A pin out diagram for the Light Blue Bean (credit: Punch Through Design)

A pin out diagram for the Light Blue Bean (credit: Punch Through Design)

Tapping on ‘Options’ in the upper right hand corner allowed me to drop out of the custom view back into the ‘raw’ view that the Light Blue app normally shows when connected to a random Bluetooth LE device showing the available services and characteristics of the device. All in all, it’s a really nice out-of-the-box experience.

Taking the Bean of of its box.

Not even all the way out of its box, and yet I can control the onboard RGB LED from the Light Blue app.

Unfortunately the rest of my setup experience wasn’t entirely hitch free.

Since I wanted to test out the Bean I decided to solder some headers onto the board so I could easily get access to the digital, analog, GND and VCC pins. However while soldering the first of the Beans I’d pulled out of its box, one of the SMD solder joints holding the coin cell battery compartment to the back of the board lifted, presumably due to heat that I’d applied to the board during soldering.

Wondering if this was going to be a one off—or something that might happen a lot—I pulled the other three boards out of their boxes and heated the boards gently with the iron. The same joint, curiously the one furthest from the prototyping area, popped on one more out of my three remaining of the boards. So while this is small number statistics and therefore horribly unreliable—a sample size of four is anecdotal at best—this is something you should perhaps be watching out for if you’re playing with the board.

However if it does happen to you, don’t panic. Soldering the substantial SMD joint back in place is fairly trivial. Just bead up a little solder on the iron, push the battery holder back into place, and lay the iron across the joint. It should drop back into place easily, and if you’ve got too much solder on the joint afterwards you can always use some solder wick to lift the excess.

However it did leave me somewhat unsure about whether my new Bean was going to be working okay. So I brought up the Light Blue app again on my phone and jumpered a wire from the GND pin across to one of the digital pins—and the pin status dropped immediately to LOW in the app. Repeatedly removing and replacing the wire in the other pins proved that everything was working.

Digital pin 3 connected to GND on the Bean.

Digital pin 3 connected to GND on the Bean in the Light Blue app, note that the Light Blue app is telling us that this pin has been pulled LOW.

Now I was sure my Bean was still working, the next step was to get some of my own code onto the Bean. Unsurprisingly perhaps, this isn’t as easy an out of the box experience as it might be in the future.

Punch Through have a step-by-step walkthrough of what you need to do to get your Bean up and working. First you need to download and install the Arduino 1.0.5 development environment—if you’ve moved to the 1.5.* branch you’re going to have download a second copy of the environment—and then install both the Teensyduino software and Punch Through’s own Bean Loader. Only once you’ve installed all three pieces, and restarted the development environment, will the Light Blue Bean show up in your boards menu.

Loading up one of the example sketches in the development environment and selecting the ‘LightBlue Bean’ from the pull down menu I hit the ‘Verify’ button which, according to Punch Through’s instructions, should open the Bean Loader interface. However at least for me, that wasn’t the case.

While the code apparently compiled without a problem, my development environment couldn’t communicate with the Teensy Loader.

The Arduino IDE having problems communicating with the Teensy Loader.

The Arduino IDE having problems communicating with the Teensy Loader.

I tried the obvious things, uninstalling, reinstalling. Didn’t seem to help, and it looks like it might be tied to my operating system revision. My main day-to-day Mac is still running OS X 10.8.5, and that might well be the problem. Almost certainly the problem in fact, as after poking around the files installed by the Bean Loader package file, it seems that the Bean Loader app is 10.9 only.

The Bean Loader application is compatible with OS X 10.9 'Mavericks' only.

The Bean Loader application is compatible with OS X 10.9 ‘Mavericks’ only.

Either Punch Through have been careless when building the application, or to do it’s magic the Bean Loader needs a feature that only appeared in Mavericks. Either way, and even if the source code would build on earlier versions of the operating system, the binary is certainly compiled for 10.9 only and won’t work on earlier versions of OS X.

Unlike iOS where most people upgrade to the latest version of the operating system fairly quickly, the same really isn’t true for OS X. Despite being a year old now, Mavericks is only just now climbing past the 60% installation mark. So that’s an curious limitation if it’s not really necessary, and it doesn’t look like the other people that have run in to it are very happy.

In any case, to get my own code on the the Bean I’d have to upgrade to 10.9. Which isn’t something I’m willing to do three and half thousand miles from home. I have good backups, but they’re in the cloud, and getting to them from here if it all went wrong would be… interesting?

But hang on, wasn’t one of the features of the Bean the ability to upload code directly from your iPad? Surely I could just get out my iPad and push code from there?

The iPad App

Programming the Light Blue Bean from the iPad.

Unfortunately not quite yet as the current Light Blue app doesn’t, yet, have the ability to load sketches onto the Bean. It’s promised for the next release. After which Punch Through will start working on cross-platform support with Android and Windows 8 apps, so if you don’t have a Mac running the latest version of OS X, this is not the time to go out and pick up some Beans.

I’ve asked Punch Through for a comment on the compatibility issues I faced, but at the time of going to press I haven’t heard back from them.

So for now at least this is as far as I’m going with the Bean, however I was interested enough to dig a little deeper into how the Bean presents itself to the world even though I can’t, yet, do anything with it.

One of the things that’s become really apparent to me is that the maker community might well be approaching Bluetooth LE in the wrong way. Most of the popular break out boards for the two competing Bluetooth LE chip sets—which come from Nordic and Texas Instruments—are presenting serial interfaces. Which is fine as far as it goes, but doesn’t really take into account how Bluetooth LE works.

Imagine a example where you want to control an LED connected to an Arduino board from our phone via Bluetooth LE. If we use a serial connection that connection will be open continuously, but it’s only going to get used periodically—when we send a 1 or a 0 over the air to the Arduino board to turn the LED on, or off.

As an alternative, you can heavily reduce the power consumption of your project by using Bluetooth LE like it’s supposed to be used and implementing a custom service for the radio connected to the Arduino to advertise its ability to turn the LED on or off. Effectively we create a custom service that has characteristic which we can both read, letting us know if the LED is on or off, or written to—allowing us to control the LED. If we want to get more complicated we could also mark the characteristic for notify, which means that we’ll get told when the state of the LED changes.

Interestingly, the Bean is one of the first to implement more than just a serial connection. In addition to the serial, the Bean has five “scratch” characteristics that can be used to read and write arbitrary data—although not as yet notify—to the Bluetooth LE radio on the Bean.

A systems view of the Light Blue Bean (credit: Punch Through Design)

A systems view of the Light Blue Bean (credit: Punch Through Design)

While its not true custom services—it’s getting close—closer in fact than most of the competitors, and Punch Through have told me that they’re “…working on allowing custom profiles.”

To access these scratch characteristics, and the onboard RGB LED and accelerometer, from the Arduino Punch Through has provided an Arduino Bean Library that allows you to talk back to the radio module—their LBM313 module which is based around the TI CC2540—that serves as the hub of the Bean.

Interestingly because of this architecture, that puts the LBM313 module in the middle, the Bean library can also include a Bean.sleep() function which you can use to put the power hungry ATmega328p—the Arduino—to sleep. This is a stand out feature for the Bean, something that I haven’t seen elsewhere and could be a really interesting and valuable addition, used correctly. Of course used incorrectly, it could mean that communicating with the Bean becomes somewhat difficult.

Conclusion

Despite the difficulties I had getting, or rather failing to get, the Bean working I’m impressed with the Bean, or at least with its potential. Because it does show a lot of potential. The hardware architecture is well thought through, and the Arduino Bean library looks useful and well thought out. But right now the Bean Loader compatibility issues—and the lack of promised cross-platform support—are badly letting down what could be a stand out product.

Alasdair Allan

Alasdair Allan

Alasdair Allan is a scientist, author, hacker and tinkerer, who is spending a lot of his time thinking about the Internet of Things. In the past he has mesh networked the Moscone Center, caused a U.S. Senate hearing, and contributed to the detection of what was—at the time—the most distant object yet discovered.


  • Pingback: Hands on with the Light Blue Bean | Salute()

  • Pingback: Hands on with the Light Blue Bean | NerdlyNews()

  • RobotGrrl 

    Hi Allan,

    Hopefully it is OK to ask questions in the comments? Or should questions be posted through Github Issues?

    I was wondering if there is a way to force an iOS device to not cache a peripheral’s advertisement name. Could it be done, with sending a service changed indicator? Is it even possible?

    Also about their app, it’s not surprising that it isn’t out yet. There have been some troubles with people getting apps approved that install or launch code :(
    http://mjtsai.com/blog/2014/06/08/editorial-1-1-1-rejected-from-the-app-store/

    Been interesting reading your experiences so far.

    • http://alasdairallan.com/ Alasdair Allan

      Hey, you mean the problem where you have to turn Bluetooth on/off again in iOS if you change the services or characteristics of the peripheral? Not as far as I know unfortunately.

      As for the app, yes and no, there’s things like techBASIC on the store http://www.byteworks.us/Byte_Works/techBASIC.html, that do similar sorts of things. They might well be having more problems with having a generic Bluetooth LE configuration app at all, Apple is starting to have problems with them from the looks of it. Presumably something to do with them moving iBeacons behind MFi you have to presume, look at what happened to TI and their iBeacon firmware for the SensorTag.

  • http://mattrichardson.com/ Matt Richardson

    Thanks for reporting about this, Al. There’s huge potential with this technology, but we still don’t have a clear winner in the easy-to-program BLE microcontroller arena, right?

  • http://kishan1214.wordpress.com proanish

    Hey if you can, can you write about this app on kickstarter. Maybe help it get some people to donate. This app will be available for both android and apple. So if you can, can you please blog about it.
    https://www.kickstarter.com/projects/747754501/social-connect

  • bbergman

    NICE “Right On” review, Alasdair!

    I had almost the exact same experience with my new bean. I went from total excitement (blowing off a family dinner event just to play with it), to confusion over the Mavericks requirement, to total disappointment after finding my device not supported, the environment not ready, and an iPad app that can’t do much.

    It has literally sat on my desk (sans battery) since that day. It’s sad that it had to come out in this fashion, but perhaps in a year’s time, PunchThrough will be mature enough to have a viable product. I had high hopes for the product, and the IDEA is absolutely superb. Unfortunately, the implementation didn’t live up to the promise.

    The Make review was perfect. Balanced, while exposing issues and concerns, and showing future potential. Nicely done!

    Thanks,
    Bruce

  • Pingback: Painting the Internet of Things Blue | MAKE()

  • Dan Braun

    Same thing! very excited, until I realised that i couldn’t make it work with the hardware that I have (windows, and linux) and they do support it!!! very upset! I have four of these bloody things, and they are completely worthless!!! I feel CHEATED!!

  • Pingback: New on the Shed—the Light Blue Bean | MAKE()

  • Shánè Fontáinè

    Where did you get the headers that fit into the Light Blue Bean so that you could easily connect the jumper wires?

    The ones I have do not fit. Is there a way to know how big the holes are, and how big each pin in the header is?

  • Pingback: The Light Blue Bean Goes Mobile | MAKE()

  • Pingback: The Light Blue Bean, now on Windows | MAKE()

  • Pingback: LightBlue Bean - Uma placa compatível com Arduino e com comunicação sem fio BLE()

  • Jody Axel

    Using the light blue bean is awesome! But getting advertising right isn’t as easy as many people make it seem. Lots of fields. has anyone seen this guide for them: http://www.argenox.com/bluetooth-low-energy-ble-v4-0-development/library/a-ble-advertising-primer/

    Seems very helpful in figuring it out.

  • Pingback: Light Blue Bean Gets Android, Node-RED Capabilities - Make:()