← Back to projects

Accessible Design & Embedded Systems

Accessible Macro Pad

A three-button controller that turns physical key presses into useful phone actions.

Completed accessible macro pad with three large white keycaps in a blue enclosure
RoleProject coordinator & sole hardware designer
ContextFive-person engineering design team
SystemESP32 + Bluetooth LE + Android
Outcome6 actions working end to end

A simpler way to reach important phone actions

Our engineering design class asked each team to build around a client interview. Mark explained that limited dexterity made precise touchscreen interactions difficult. Our five-person team responded with a separate controller: three large buttons connected to a configurable Android app.

The final prototype could sound an alarm, call a trusted contact, share location, send an SOS message, open medical information, or place an emergency call. It was a working proof of concept rather than a finished assistive product.

Accessible macro pad beside a tablet running its companion application
The finished controller connected to its companion Android app.

What I worked on

I coordinated meetings and divided tasks, but my main technical responsibility was the complete physical prototype. I designed the enclosure and keycaps, developed and built the circuit, soldered the connections, and handled hardware integration and debugging.

I also contributed to the ESP32 firmware, React Native app, and testing the full path from a button press to its assigned mobile action.

Freshly 3D-printed blue macro pad enclosure held in front of a 3D printer
The enclosure after printing, before the switches and electronics were installed.

The first direction

We initially explored a reaction-wheel ball that could help Mark play with his dog, Rosie. Sketching the mechanism made the idea easier to evaluate, but it also exposed the amount of mechanical and control risk involved.

We returned to Mark’s interview and compared what would be useful with what we could build and test well. That led us to the macro pad, a different challenge that combined accessible hardware, embedded firmware, Bluetooth, and a mobile app.

Early handwritten sketch of a remote-controlled dog ball using two reaction wheels
The early reaction-wheel ball concept.

Designing the physical controller

The controller used three widely spaced mechanical switches with custom 30 mm keycaps. Their tactile bump and audible click made activation easy to confirm. I designed the enclosure around the switches, ESP32, circuit, cable access, and mounting points.

Cherry MX Blue switches are not ideal for every user because they still require noticeable actuation force. A future version should compare softer switches through user testing instead of assuming one switch works for everyone.

CAD model of the macro pad enclosure with internal mounting posts
Enclosure CAD showing the internal space and mounting points.

From a key press to a phone action

System diagram from three buttons through an ADC and ESP32 Bluetooth connection to mobile actions
The complete path from the physical controls to the assigned mobile action.
  1. ReadThe ESP32 averages ADC samples and identifies the pressed key from its voltage range.
  2. FilterCalibrated dead zones and a 150 ms debounce window reject noisy readings.
  3. SendThe ESP32 reports press and release events over Bluetooth Low Energy.
  4. RunThe app decodes the event and launches the action assigned to that key.

Three switches through one input

A resistor ladder produced a different voltage for each switch, about 0.825 V, 1.650 V, and 2.475 V. This let the ESP32 distinguish all three buttons using a single ADC pin.

Serial readings helped us calibrate the ranges around each voltage. We later widened those ranges and averaged multiple samples to make detection more reliable.

Resistor-ladder circuit diagram showing three switches connected to one ESP32 ADC input
The resistor-ladder circuit used to identify all three switches.

The first build did not hold up

My first free-form circuit looked compact, but several solder joints failed and the tightly packed connections made faults difficult to isolate. I had to practise my soldering, rebuild the connections, and change how I approached the prototype.

Early free-form resistor-ladder wiring with exposed solder joints
Attempt 01: compact, fragile, and difficult to debug.

Rebuilding for easier testing

Moving the circuit to a breadboard made every connection easier to inspect, probe, and change. Serial ADC readings exposed noise near the original thresholds, so we added sample averaging, wider voltage ranges, and longer debouncing.

The revised layout took up more space, but it made debugging much faster. By the final demonstration, every button consistently produced the correct event.

Three switches and an ESP32 connected through a breadboard during testing
Attempt 02: larger, but much easier to probe, change, and verify.

The final demonstration

All three inputs were recognized correctly, BLE events reached the Android app, all six configured actions worked, and button assignments persisted after the app was closed and reopened.

We demonstrated the system on a Samsung Galaxy Tab S10 FE. We did not run a long-term usability trial with Mark, so the result should be understood as a complete proof of concept rather than a validated assistive product.

My biggest hardware lesson was simple: compact is not the same as reliable. A circuit that is easy to inspect and change is often the faster path to a working design.

Completed blue accessible macro pad with three large white keycaps and a fitted lid
The completed prototype with its custom enclosure, keycaps, ESP32, and input circuit.

A next version should replace the breadboard with a custom PCB, improve internal wire management, use a tougher enclosure, run from a battery, and test softer switches and mounting options with users over time.