For many people with limited mobility, answering a mobile phone can be a challenge. Small buttons, touchscreens, and the need to reach for a device quickly can create barriers to communication. Fortunately, low-cost, customisable technologies such as Puck.js offer exciting possibilities for creating accessible solutions
What is Puck.js?
Puck.js is a small, programmable Bluetooth device that can be customised using JavaScript. Despite its compact size, it contains a range of sensors allowing it to send commands to connected devices such as smartphones, tablets, and computers.
Its wireless connectivity and programmability make it a tool for assistive technology projects, particularly when users need an alternative way to control everyday devices.
Turning a Simple Button into a Call Answering Solution
In this demonstration, Puck.js is used as an accessible switch to answer incoming mobile phone calls. Rather than interacting directly with a touchscreen, the user can simply press a button.
This approach can be particularly beneficial for people with reduced hand function or dexterity, and perhaps for wheelchair users who have difficulty reaching a phone. By pairing Puck.js with a smartphone via Bluetooth, a simple button press can trigger a predefined action. In this case the volume up command.
On the mobile phone
An accessibility feature within Android phone settings lets the phone be answered with the volume up button.
Go to Settings -> Accessibility -> Interaction and dexterity -> Answering and ending calls -> Press volume up to answer calls (set to ON)
Note: this method is not for an iPhone; there is no action to answer a mobile call on iOS. On an iPhone, the simplest accessibility solution may be Apple’s built-in Auto-Answer Calls feature, which can automatically answer calls after a user-defined delay.
- Open Settings.
- Go to Accessibility.
- Tap Touch.
- Select Call Audio Routing.
- Tap Auto-Answer Calls and turn ON
- Set the delay to about 3 seconds.
Code: for the puck.js
We can set the puck.js to trigger a volume up using its Bluetooth LE HID capability. The puck.js is programmed using the online Espruino web IDE
And the following code is uploaded to the device
//set volume up
var controls = require(“ble_hid_controls”);
NRF.setServices(undefined, { hid : controls.report });
function btnPressed() {
controls.volumeUp();
digitalPulse(LED2,1,100);}
// trigger btnPressed whenever the button is pressed
setWatch(btnPressed, BTN, {edge:”rising”,repeat:true,debounce:50});
For a more in-depth look at the process, see the video demonstration to see how Puck.js can be configured to answer a mobile phone call
The Good: The puck.js is a low-cost (£32) and low-powered wireless device. A battery may last up to 1 year.
The Not So Good: The switch on the puck.js is poor and requires pressing a specific area on the top surface.
The Verdict: It is highly programmable and has the potential to be used as a tool for many assistive technology solutions.
