We were inspired to create an accessible mouse and keypad by the desire to create a new way to play videogames with friends but realized that the project could be used to make computers more accessible to more people. We wanted to make using a computer easier for people who have limited hand or arm mobility but can make small movements of their legs and feet while sitting. The accessible mouse allows someone to move a mouse on their computer simply by moving their leg while they are sitting. For example, moving their leg forwards moves the mouse up. The keypad is a large pressure pad that can easily be pressed by a foot; currently, one keypad is built which clicks the left mouse button when pressed. The accessible mouse is built using two ultrasonic distance sensors perpendicular to each other that determine the distance to an object, in this case a leg. The ultrasonic distance sensors are controlled using an Arduino Nano Sense BLE Rev 2 microcontroller. The Nano scales the distances to a percentage of the usable distance range and converts that percentage to the duty cycle of an analog output signal. The analog outputs of the nano go through an RC filter to smooth them to a constant voltage. The constant voltage signals are fed into analog inputs on a Raspberry Pi Pico microcontroller. The Pico interprets the analog input and interfaces with the computer it is connected to so that it will move the mouse depending on where someone’s leg is. The keypad is constructed using conductive materials mounted to a flexible plate, which is wired to the Pico, and is approximately 8 by 8 inches; the Pico senses if the contacts on the keypad are connected, and clicks the left click button if they are. We first attempted to code both the ultrasonic sensor and HID functions on the Raspberry Pi Pico but encountered severe timing issues (since both functions are time-sensitive). After troubleshooting the issue, we decided to split the ultrasonic sensor and HID functionalities into separate microcontrollers. We had to solve the challenge of conveying information between the microcontrollers in a way that was not timing-sensitive, which led to the use of an RC filter and simple analog voltage level communications. We were able to successfully construct a keypad after a lot of trial and error. We got the mouse to move, which took many hours and a lot of pivoting. Through this project, we learned how to code HID devices, how to construct pressure pads, and how to convey information between microcontrollers using analog voltages. Future iterations of the Accessible Mouse and Keypad will fine-tune the mouse control. Additionally, more keypads will be constructed to control more keys at the same time.

Built With

Share this project:

Updates