The Bluetooth system has been one of those lingering features that I couldn’t quite manage to nail down for one reason or another. Well, no more! It’s working now. I’ve got a robust connection and data management system in place, built around the Bluegiga WT12 Bluetooth module and its powerful iWRAP firmware.
Here we are, one step closer to my ultimate goal of using the Keyglove as a wireless input device to control a wearable computer. For this installment of progress, the milestone is Bluetooth control of Glass, using a Bluegiga WT12 module and the custom HID descriptor that I wrote about earlier. I won’t go into detail about what that descriptor does, since it’s all documented in the other post, but the short version is that it provides a keyboard, consumer page control (e.g. media), mouse, and raw bidirectional 16-byte packet transference.
Thanks to Bluegiga’s workhorse of a class 2 Bluetooth module and the latest iWRAP5 firmware with custom HID descriptor support, I have now been able to achieve the wireless capabilities I always hoped the Keyglove would have. Keyboard, mouse with scrolling support, consumer page reports, and raw HID packets for arbitrary data transmission. It isn’t fully integrated into the Keyglove code yet, and I’ve only tested it with manual control so far, but the firmware setup is solid. It’s now just a matter of translating the manual control I’ve already done into my codebase.
Read more →
As I continue building the code to support all the necessary aspects of the configuration and control protocol for the Keyglove, I am also thinking about the various ways the protocol will be used, and how to keep everything as predictable and flexible as possible. There are both wired and wireless methods of interfacing with this device, but it turns out to be a little more complex than that.
Read more →
While working on the iWRAP code library for the Bluegiga WT12, one of the issues I’ve come across is trying to create a good way to detect and manage active Bluetooth links. The iWRAP firmware, controllable entirely over a simple UART connection, has three different possible modes. As I mentioned in my last post about the Keyglove Kit board, the most efficient solution is to avoid the high-demand MUX mode and instead rely on regular DATA/COMMAND mode switching and active link detection using two GPIO pins.
Read more →
Keyglove #09 – Wireless Mouse Movement Demo from Jeff Rowberg on Vimeo.
Finally! I have managed to incorporate the Bluegiga WT12 sufficiently into the current prototype hardware, along with the still-in-progress iWRAP code library to control it easily and transparently. This video demonstrates the first true combination of Bluetooth wireless functionality and the actual Keyglove code, rather than just a proof-of-concept Arduino sketch. This is a major milestone; wrapping up the remaining core Bluetooth functionality should be pretty straightforward now.
Read more →
After my original post about the WT12 breakout board I was working on a while back, I thought I should really follow that up with some info on what’s happened with that adventure. In short, it’s been a great success! The PCB revisions that I made proved to work very well, and I now have two great boards available for purchase through InMojo, as well as an Eagle library if you want to make your own.
Read more →
The next major missing piece of Keyglove functionality is wireless support. This involves a battery, charging circuit, and a Bluetooth device. I’ve been working on Bluetooth for a while now, and after the difficulty with Broadcom BCM2042-based modules, I had some very exciting preliminary success with Bluegiga’s WT12 module (as described in this recent post). My rat’s nest of a test hookup demonstrated to me that the WT12 is perfect for the Keyglove, so a breakout board became the next priority.
Read more →
So, after all of my experiments with BCM2042-based Bluetooth modules and the uncertainty and sparse documentation surrounding them, I decided to give Bluegiga’s WT12 module a try. I have to say, the more I learn and experiment, the more I like it. This one single module supports pretty much every Bluetooth profile ever, easily hot-switchable via a simple command. Their customer support is excellent. Their documentation, firmware, schematics, and all other development resources are readily available for free. Their modules are available for purchase cheaply in small quantities (e.g. one at a time for $27 from SemiconductorStore.com). You can control the complete behavior of the module using their capable iWRAP firmware and well-documented commands sent over the UART interface. It’s perfect.
Read more →
The CE Compass WKB-1500 Bluetooth Keyboard I ordered arrived in the mail a while back, and I took to testing and dismantling it immediately.
Now, I decided to buy an actual device instead of just a Bluetooth module for two reasons: first, and most importantly, the only source I know of for the HID-profile module I was looking at has been out of stock for quite some time. There is currently no place I’ve been able to find, even internationally, where you can buy a single HID-enabled module. There are many places to buy SPP-enabled modules, and in many cases these can be adapted to providing keyboard and mouse support. All they require is a driver on the host device to translate the serial data into input control signals. However, my goal is to have the Keyglove be detected natively as an input device, so that no special driver is required. The HID Bluetooth profile specification is basically just a hardware Bluetooth wrapper around the standard HID profile used with USB keyboards and mice, as far as I know, which makes it perfect. The only problem is that nobody sells those modules by themselves, so I decided to try taking one out of another device.
Read more →