Challenge

If you use a laptop you may have found that using the touchpad involves placing your right hand, arm and shoulder in a different angle than your left. After some time this can lead to pain and even numbness due to nerve compression. An alternative is to use an external mouse but this also involves placing your right hand far from the keyboard and carries the same problems.

The main problem behind this, is that using your hand for pointer control gets in the way of maintaining a neutral and symmetric position on your keyboard, such as when you have your index fingers resting on the nubs of F and J keys.

Besides the ergonomic aspect of this problem, a hand-controlled pointer wastes the extra dexterity available on your fingers: precise motion with a finger is easier than with your whole hand/arm.

In terms of accessibility, there are also limitations to current solutions: a universal mouse for left and right handed people implies either two different device models or ignoring the different grip from a left and right hand (mice are typically curved one way or the other).

Finally, there is an undeniable aspect related to individuals with limited mobility or dexterity, in case where full arm/hand use is not possible but thumb and index use is possible. While I have not addressed the problems of a particular ailment (this requires careful thought and consideration of a given disability and carries great responsibility to avoid false expectations), I believe it is possible to design a device that can be easily modified to conform to particular needs.

Proposed Solution

thumbMouse is designed around the BlackBerry trackpad family of sensors. These work exactly like the sensor found on optical mice, where images of the surface are analyzed directly in hardware to produce and estimation of planar motion based on the displacement of pixels on the image (this is usually called "optical flow"). The sensor simply reports an increment in X and Y coordinates. For the case of the BlackBerry trackpad, instead of sensing motion of the surface where you place your mouse it recognizes the motion of the finger over the sensor.

To provide a wireless solution using low-power approach, thumbMouse uses Bluetooth Low Energy (BLE) communication. The device itself acts as a Human Interface Device (HID) which is the standard protocol for mice and most input devices. This protocol is universally recognized not only by computers but also smartphones, regardless of its Operating System. To provide such a low-power and low-size solution, the nRF52832 chip (using a pre-existing module with chip antenna) is used.

As a wireless device requires its own power, thumbMouse also includes a battery and a USB based charging circuit.

To complete the device as a general purpose pointer, there's is support (via explicitly exposed PCB pads) for up to four I/O, as well as exposed 3.3V power and ground connections. As the trackpad itself embeds a push button in its back (you can press it and it will register the click), these extra I/O lines will mainly be used for adding other buttons found in mice such as left, right and middle click. However, given the ability of nRF chips to multiplex almost every pin to almost every peripheral, these inputs could be used to interface to analog sensors (including capacitive touch) or even I2C/SPI devices. This opens the possibility of extending the device in new ways, such as including an IMU.

The way to use thumbMouse is to wear it on your middle phalanx of your index finger and employ your thumb to operate the trackpad and thus control pointer motion. As the sensor has sufficient resolution, you can control it precisely. At the same time, by using pointer acceleration, a single swipe can make the pointer move across the entire screen with little effort.

Left/right/middle buttons can also be operated using your thumb or fingers from the other hand (for drag operations, for example). This operation allows for scrolling using for example the fourth button to switch pointing/scrolling. However, for ultimate comfort and more natural control, one thumbMouse could be worn in each hand. This way one can be dedicated for scrolling and the other for pointing. Plus, the extra buttons can be used for more complex actions. In this configuration, each mouse presents itself as an independent input device to your computer and your hands do not have to move from the keyboard neutral position at all.

To complete the device, a 3D printed enclosure is used to allow for mounting on your finger. This way, it can be easily customized to different finger/hand shapes/sizes. Furthermore, it opens the way to extend thumbMouse by allowing for extra space or mounting points for different button types or input sensors.

Current Status

I'm in the process of building a second revision of the prototype. First version was based on nRF51822 which has insufficient RAM and on the BlackBerry 9300 trackpad which uses a proprietary connector which I could not find. Also, this version was not battery powered and did not have the charging circuitry. The second revision is based on more commonly available BlackBerry 8520 trackpad sensor (with easily sourceable connector) and nRF52832 module.

I will be using NuttX RTOS for the firmware. This means that I will have to write a device driver for the sensor (although I already know the protocol) and also the BLE controller (which I have already started and is progressing well). I have also designed an Adafruit Feather Wing breakout board just for the trackpad, so that I can comfortably work on the sensor driver before moving on to the smaller thumbMouse board. I chose the Feather format since this means that if paired with a nRF52 Feather, you can have a "thumbMouse evaluation board" (or just for playing with the sensor).

I've also started looking at another family of trackpads (from 9360 BlackBerry) which are based on I2C instead of SPI. This involves a different connector and a few more components but I will look into comparing the trackpad capabilities (resolution, power consumption, etc). I made a quick breakout for this and if it works it could also be made into Feather format.

Once I complete working on the firmware and have the prototype tested I will look into enclosure design.

License

thumbMouse is completely open-source software and hardware. As I will be using NuttX RTOS, which is Apache 2.0 licensed and since NuttX does not use third-party SDKs, the firmware is not encumbered by other licenses. Any contributions to NuttX arising from this project will be submitted upstream. As for the license for project specific logic, I will decide upon a specific open-source license, as I would like to consider whether thumbMouse should use a permissive license (allowing for commercial closed-source derivations by third-parties) or a copyleft one (requiring derivations to remain open).

As for the hardware, there is one aspect that I'm not aware of: since this is based on a BlackBerry sensor I'm not sure if it would be legally possible to eventually offer a commercial device featuring it. Also, there is the chance that this sensor eventually becomes extinct (although it appears BlackBerry will be offering new old-style phones!). Having that said, from an open-source hardware perspective using a low-cost widely available component, it remains a valid solution for other to utilize non-commercially.


I will be creating new Project Logs for more significant milestones and detailed progress description. In the meantime, you can follow find me at: https://twitter.com/protobits.


Funding

If you're interested in this project (or any other of my projects), consider helping me by donating a small amount:

Buy Me a Coffee at ko-fi.com

I use (and have already used!) this funds to not only order PCBs and components for this project but to also explore new ones by trying out interesting hardware. As such, even small amounts eventually add up to useful purchases. Thank you so far to everyone that has contributed!