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.
For those not already aware, I’ve been working on a straightforward protocol that you can use to control the Keyglove. This (or at least the initial version of it) is now complete. This Keyglove API, or “KGAPI”, is made up of the following basic types of communication:
- Commands: sent to the Keyglove to make stuff happen
- Responses: sent back from the Keyglove after commands are sent, acknowledging or reporting errors
- Events: sent from the Keyglove when things happen that aren’t directly triggered by commands, such as touch sensor changes or new motion data
This is the same kind of structure that you will find in many protocols used by hardware peripherals, so there’s nothing particularly special here.
Read more →
The development between now and my last post has been pretty significant. I published a new Kickstarter project update a few days ago, but I don’t want to fragment the news updates, so I’m (mostly) reproducing that content here.
The biggest news is the updated and largely rewritten Arduino firmware source code that powers the microcontroller at the core of the Keyglove design. Since this is an open-source project, it has always been my intention to publish the complete source so that anyone can understand or modify the functionality however they might wish to. However, I am a bit of a neat freak when it comes to code. Well, “a bit” may be an understatement. It’s hard for me to work with or around code that isn’t organized, and/or formatted, and/or documented well, and it’s even harder for me to publish it knowing that others may need or want to use it in their own designs. Before I feel good about handing something to the world, it must pass my own tests for organization, readability, and documentation.
Read more →
I have been working with the same basic approach to digital touch detection since the inception of the Keyglove. That process goes something like this:
- Pull all touch points to logic high
- Select possible combination [X, Y] from touch definition array
- Set point [X] low
- Measure the level of point [Y], and if it is low, then touch combination [X, Y] is active
- Increment test combination index and go back to step #2 until complete
At first, this method of scanning to detect connectivity between arbitrary I/O pins without mechanical switches seemed wonderfully functional and easily implemented. I used Arduino’s built-in digitalWrite()
and digitalRead()
functions, which was the simple solution. It was also plenty fast enough at the time. However, it has a couple of now-obvious shortcomings, plus another not-so-obvious one which I am hoping that I diagnosed correctly.
Read more →
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 →