Keyglove Developer Podcast Interview

Sorry for the flurry of updates all at once, but I have one more for you all: Michael Cheich over at Open Hardware Junkies recorded a Skype interview with me about the Keyglove project back towards the end of March, and he just got it posted in the last couple of days. If you’re interested in some audio about the design and motivation of the Keyglove, head over and listen! (Note that it was recorded before I got the Keyglove up on Kickstarter, and before the recent hardware and software developments.)
Read more

VIDEO: Prototype C KB/Mouse Demo

Keyglove #06 – Prototype C KB/Mouse Demo from Jeff Rowberg on Vimeo.

Some of you have probably already seen this video in the recent Keyglove Kickstarter Update #4, but for those of you who haven’t yet, it’s a demo of the current functional progress of the latest Keyglove prototype. The wire loop sensor approach has worked well, and I think it’s definitely the easiest option so far for anyone building their own Keyglove. I used wire that was slightly thicker than it should have been though—thinner stuff would have simplified the process. It’s still far easier than sewing 25 tiny squares of fabric onto a glove. Yeesh.
Read more

WT12 Custom Breakout Board: Take 1

WT12 Custom Breakout Board: Take 1
Update 6/24/2011: the WT12 breakout boards I designed are now available on InMojo here (full, $50) and here (UART only, $40) for cheaper than you can get WT12 breakout boards anywhere else as of the time of this update. You can also download my Bluegiga Eagle library here.

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

Interfacing with a BCM2042/BP20422 Bluetooth HID Module

Interfacing with a BCM2042/BP20422 Bluetooth HID Module
Update 4/6/2011: the design files for the breakout board shown below from Wayne and Layne has been made available here. Thanks, guys! (Remember this board is optimized for the BluePacket BP20422 module, and the pair button doesn’t work with other modules.)
Update 6/24/2011: one guy has been able to successfully integrate a BP20422 clone module into an existing full-size IBM Model M keyboard to convert it from wired to wireless. This included a lot of custom circuit design work and firmware replacement, which may be useful to you depending on your own interests. Check out his detailed documentation here.

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

Teensy++ Controller Board Adventures

Teensy++ Controller Board Adventures

I placed an order for a set of Teensy++ parts from PJRC quite some time ago with the understanding that it was out of stock and would likely take a least a couple of months to fill the order. That’s exactly what happened, and I ended up receiving the parts sometime in December. Because of other stuff I was working on both related and unrelated to the Keyglove, I wasn’t able to find time to really make use of the new parts until the middle of January.

Now that I’ve had a chance to, though, all I can say is: the Teensy++ is a really awesome device!
Read more

VIDEO: Typing With Prototype B

Well, this has certainly been a long time in coming. I’ve been really busy with all kinds of work, most of which has not been related to the Keyglove project, which is why it’s been almost three weeks since my last update. However, I’ve been able to make enough progress here and there to post this video for you today.

Keyglove #04 – Typing With Prototype B from Jeff Rowberg on Vimeo.

Basically, this shows another proof-of-concept typing demonstration using the new glove construction with a full sensor array. All 34 sensors are attached to the glove: five sewn on the fingertips, one sewn on the lower thumb segment, three sewn on the palm. All of the rest are remote control rubberized keypad contacts which I cut from a cheap broken universal remote I got off of eBay.
Read more

Prototype B is Imminent

Prototype B is Imminent

Ever since I was able to actually type some stuff in Microsoft Word using the Keyglove—albeit very slowly and methodically, and only through the use of a makeshift serial translator program in VB and the use of the SendKeys() function—I’ve been increasingly eager to finish this glove prototype as quickly as possible. Granted, “etaoinsrhdlucwvmgkfpxybqjz” is not very impressive, but it’s one of each letter of the alphabet, and it came right out of my fingers without a keyboard. Pretty awesome, really.

The first thing I’ve finished that will make Prototype B a reality is the quick connect breakout board. The Arduino Mega is a great board by itself, but when you’re working with multiple test gloves, each of which has up to 34 unique sensor connections on it, constantly cutting, soldering, and heat-shrinking new header pins on every wire for every set of sensor leads can get really tedious. This board uses a couple rows of spring terminals designed for high-gauge wire to eliminate the need for soldering (and managing) header pins for each new glove attempt. Additionally, I’ve labeled each terminal as shown in the photo so that it’s immediately obvious which hole is for which sensor. No more testing every connection with the serial debug output!

I built the board using a basic 2″x2″ ProtoBoard, some stackable headers, and spring terminals (all from SparkFun). I had to use a very sharp knife and a little ingenuity to connect the spring terminals together to make rows of 18 pins, since they came in blocks of six. They actually stack together horizontally very nicely, and it was fortunate for me that I needed 18 and they came in an even factor of that number. The only downside to the board construction is that it inevitably covers five of the existing header pins on the Mega board, most of which are important. One of them is the “B” sensor input, and two are the I2C DATA and CLOCK pins (used for the accelerometer). To solve this problem, I just stuck an 8-pin 90-degree header in so I can still get to everything I need.

The second thing I’ve managed is a successful experiment using the conductive rubber keypad contacts from a cheap TV remote. The remote uses a very small (1/8-inch diameter) contact to short each pad on the main remote circuit board, and the material on this contact has great conductivity. Using a small knife, I cut a couple of the pads off the main keypad and tested them for suitability, first touching the pad to a fabric sensor, and then touching two pads together. Both times, the sensitivity and conductivity were excellent.

Since the “target” sensors on the glove don’t need to be large (as discussed in the solution to Problem #3 listed in this post), these pads should work fine as sensors even though they are as small as they are. I’ve got some cheap for-parts remotes on order from eBay now for further testing, but for the moment I’m going ahead with these pads.

As you might be able to tell in the photo here, I’ve also switched to using enameled magnet wire for sensor leads. The stranded stuff had great flexibility, but the very nature of the many tiny stranded wires made it too difficult to work with for actual attachment to the sensors. So, to achieve a good compromise between size, flexibility, and stiffness, I’ve switched to 28 AWG magnet wire. It’s cheap, and it even looks cool. It’s thin enough not to be noticeably stiff, and it’s thick enough (and solid enough) to exhibit the right properties for sensor attachment—specifically, the ability to be poked through both the sensor fabric and the glove fabric. More importantly, as shown in the photo, I can poke the wire straight through these tiny conductive pads, bend it back, poke it through again, and pull it tight against the surface to create an instant and reliable electrical sensor attachment. With a bit of glue on the back, this is a remarkably durable way to do it. It sure is a lot easier than homemade conductive glue.

So, now I have a glove that is missing only the small sensors, but it has all the rest of them attached. I’ve decided to try using the conductive fabric for the large sensors (thumb, fingertips and palm), and also to quit taking shortcuts and just sew them on. Sewing them on undoubtedly takes time, but after all of my recent experiments with other materials and methods of attachment, nothing comes close to the result I am able to achieve using needle and thread. It looks good, feels good, and it holds nicely. There may be better ways to do it, but so far, I haven’t discovered them, and that’s certainly not for lack of trying. I was extra proud of myself for this one because this is the first prototype glove out of all my attempts that I actually got the palm sensors applied and/or attached with any kind of success. I’m really happy with how this has turned out so far.

Finally, I’ve got the sensor leads attached to all of the sewn sensors currently on the glove (four fingertips, two on the thumb, and three on the palm). The tail ends of these leads are pretty messy at the moment, but I’ve actually been able to keep the sensor ends organized well by weaving the wire itself directly into the glove fabric. I might need to add a few thread ties here and there, but I’ll wait to make that decision until I have the rest of the sensors attached. I hope to get that done by this weekend; if I can, I should be able to get a video up demonstrating all of the glove’s sensors and a little bit of real typing.

After that…who knows! Once I iron out the kinks in the mouse control and finish up the HID interface methods, maybe Keyglove kits will be coming soon!

Practicing with the Keyglove

Practicing with the Keyglove

This weekend, I finished most of the sensor mounting on my Prototype B glove. Actually, it should probably be called something more like “Prototype G” because of how many different things I’ve tried since Prototype A, but I’m going to stick with “B” since this is still only the second glove I’ve got quite this far on. All of the sensors are mounted and wired except for the three large ones on the palm. It’s the first time since my original attempt that I’ve been able to connect and test a nearly complete array of sensors, and I must say that it does work better than my first one.

However, I must also say that it still needs some work, specifically in the following areas:

  • The sensor size and placement is significantly better, but a few of them still need to be moved a bit due to the structure of the hand and the way the thumb reaches each other sensor.
  • The tiny stranded wire is more flexible than the larger solid wire I had before, but it is actually quite fragile (as far as wire goes, anyway). I’m going to try some enameled magnet wire instead.
  • This glove is nylon, not cotton. I’ve decided that I like the cotton one better, so I’m going to switch back to that for more testing.
  • I really need a faster way to connect and disconnect the sensor pins from the Arduino board. I think I may get some screw terminal sets and build a header breakout board or something.

Overall though, it’s a good step forward. With some more software modifications and a hacked-together serial interface program, I was even able to do some real typing in regular programs with the glove. Mouse movement should come soon as well. Now, I do want to reiterate here that using a serial driver (or foreground program, as I’m doing here) to type characters and move the mouse is not a permanent solution. I fully intend to make this into a complete OS-independent device that communicates with standard input device protocols—PS/2, USB, and Bluetooth. I’m only using a serial interface right now because it was easy and it works.

One thing I discovered in my five elated minutes of typing is that I have no idea how to type efficiently with the Keyglove. I expected this, of course, since I’ve never used it in a real typing environment before. I do have the beginnings of a letter-frequency-based touchset created, but I haven’t been able to practice with it at all since I didn’t have a fully working glove. This revelation of my sad inability prompted me to begin building a practice tool.

So, last night, I took a picture of each base touch combination as represented by my hand (60 in all), and then this afternoon I modified them to be more visually informative. Then, I created unique versions of the main sensor diagram to go along with each photo in order to eliminate any possible confusion as to what the photo is trying to show.

This evening, I put all of these images together into a very basic Training page. It’s currently only a full list of all 60 base touch combinations, but it will eventually grow into an interactive training app online. I may also make an standalone application for this, but I believe I can accomplish at least all of the training aspects with a web app. Customizing touchsets is another matter, but I’ll take care of that once I get a little farther along.

Take a look at the table on the Training page and see if there are any combinations that are very difficult for you to do. If there are, let me know. I’d love to get some feedback on the feasibility of what I have in mind. Although I’ve tried to stick with combinations that seem pretty easy, I am double-jointed (some say disturbingly so) and I might just be oblivious to the fact that some of them are impossible for normal people to make.

Once I make a few more changes to the Training page to add at least a minimal amount of interactivity, I’ll post the results of my first few practice sessions. My next immediate goal here is to create another proof-of-concept video that shows real typing, not just sensor touch recognition in a debug window.