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 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.
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.
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.
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.
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.
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?
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.
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.
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.