We’ve been working hard to improve the LipSync (opens in a new window) and are proud to announce the open beta release of our LipSync V3.0 (opens in a new window) firmware. After months of development, internal testing, and a closed beta with a small group of LipSync users, we are now ready to share it with a wider audience.
The LipSync is a sip-and-puff joystick that enables people with little or no hand movement to operate a touchscreen device, and can be built for approximately $250 in parts, compared to $1,500 or more for commercial equivalents. It was the first device in the Makers Making Change (opens in a new window) assistive device library (opens in a new window), and we’ve been continuing to work on it ever since.
In developing our most recent update, we’ve worked with LipSync users and listened to their feedback to improve the LipSync user experience. We focused on four main areas of improvement in this update:
- Reducing Cursor Drift
- Additional Mounting Angle Choice
- Creating an Application Programming Interface (API)
- Enhanced Performance
Reducing Cursor Drift
One of our main objectives in this update was to reduce cursor drift as much as possible. Essentially, you don’t want the cursor to move when you don’t want it to.
In the past, cursor drift has been one of the main issues we’ve seen in feedback from users.
To fix this, we updated the code to allow for dynamic centering. It checks for cursor stability, and adapts the values if it detects drift. Basically, it differentiates between purposeful movement and sensor drift, and the cursor only moves when it detects purposeful movement.
In our closed beta testing, which saw experienced LipSync users try the new firmware, all users indicated a significant reduction of cursor drift.
Additional Mounting Angle Choice
When we originally designed the LipSync, we intended it to be mounted standing up, with the light pointed up and the mounting connection on the bottom — when you moved the mouthpiece up the cursor also moves up.
However, some users have found it more convenient to mount it upside down or from the side — particularly important for some users using it in their wheelchair or bed. But until now, that required manually editing and uploading new code so that the cursor movement matches the mouthpiece movement.
We wanted to make it easier for you to mount it in any manner you want.
In this update, we’ve done that by making it much easier to change the “up” direction on the LipSync. For instance, if you have it mounted upside down, and you push up on the mouthpiece, it will recognize you as pushing it up and move the cursor up, not down. There are now four mounting angles available to choose from.
This can be set in coding or through the API (more on that below).
Creating an Application Programming Interface (API)
Previously, the majority of settings that controlled the operation of the LipSync were directly written into the code. Other than increasing or decreasing the cursor speed using the buttons on the rear of the shell, changing these settings required someone to manually modify and upload new code.
We’ve now created an API, which provides a way to access and modify the settings without having to to change the source code. This will help our users in a variety of different ways.
For users, this will eventually allow for greater customization and the ability to adjust settings independently such as the amount of pressure needed to activate the sip and puff functions. The new API also makes it easier to do a factory reset.
On our end — and for you makers out there — the API makes it much easier to test and troubleshoot LipSyncs by allowing us to see the raw input values the LipSync receives. For instance, using the API, we can see what the LipSync registers when you move the joystick, or when you blow on the mouthpiece.
For now, the API is primarily accessible through a serial connection. We’ve created a list of the commands and functions (opens in a new window) that are available. Stay tuned over the next few weeks for a more detailed explanation of how you can use these commands to easily swap the sip and puff functions (i.e., swap left and right click) or change the pressure thresholds to make the LipSync more or less sensitive.
In addition to the major changes listed before, we also made a number of quick fixes and improvements to enhance the user experience:
- Optimized the code so that the response is a little quicker, and the cursor moves faster at maximum speed.
- Separated the sip and puff thresholds so they can be adjusted independently.
- Added responsive visual feedback when you sip and puff. Previously, there was no visual indication to differentiate between a short, long, and very long sip or puff. Now, the LipSync LED will turn on when you’ve held a sip or puff long enough to activate the long sip or puff.
How to Update the Firmware
The LipSync V3.0 firmware can be found in our LipSync V3.0 Github file repository (opens in a new window).
To update the firmware, you’ll need to connect the LipSync to a computer and upload the new firmware using the Arduino IDE (opens in a new window). You can flip to Part 8 in our LipSync Manual (opens in a new window) for step-by-step instructions (using the code for V3.0 instead of the suggested microcontroller codes in the manual). If you need help updating the code, feel free to reach out on the forum (opens in a new window).
We also made this video to help guide you along the process.
Let Us Know What You Think
We want to hear from you — we need your feedback!
Your input will help us refine LipSync V3.0 so it best meets your needs, and will inform future LipSync development.
You can leave us feedback publicly on our forum post for the LipSync V3.0 beta (opens in a new window). You can also email us your feedback directly to firstname.lastname@example.org (opens in a new window).
This post originally appeared on the Makers Making Change (opens in a new window) website.