Matrix Keypad Tester
Matrix Keypad Tester verifies every switch in an N×M keypad matrix with a 500 Hz scan rate, live visual feedback, automatic stuck-key detection, and microsecond-precision event logging. The original system requires a known matrix configuration. A customer needed something different — a system that figures out the pinout automatically with zero prior knowledge. We delivered it in 2.5 hours.
12.5 hours
from concept to production
The problem
Every keypad, membrane switch, and button matrix that rolls off a production line needs to be tested — and the industry standard is still "press every key and hope the operator doesn't miss one." That's slow, inconsistent, and leaves stuck or intermittent switches undetected until they reach the customer. Off-the-shelf test equipment either doesn't exist for arbitrary matrix sizes or costs thousands of dollars per station.

Original system: configured matrix testing with live grid visualization, timestamped event log, and CSV export.

Original system: single key press detected instantly — green indicates active, red indicates idle.
Original system: configured testing
An ESP32-S3 microcontroller scans the switch matrix at 500 Hz, detecting press and release events with microsecond timestamps. Events stream over USB serial to a desktop application that renders a live N×M grid — green for active, red for idle, amber for stuck. Configure the matrix dimensions and pin assignments in the app, push the config to the device, and start testing. The entire workflow takes seconds.
Core capabilities
Most matrix testers are single-key-at-a-time tools. Matrix Keypad Tester detects every simultaneous key combination — press five keys at once and all five light up in real time. Automatic stuck-key detection flags switches that fail to release within a configurable threshold and names the offending key by row and column. The 500 Hz scan rate and sub-5 ms end-to-end latency mean no event goes unrecorded, no matter how fast the operator works.

Original system: simultaneous multi-key detection — three keys held at once, all correctly identified in real time.

Original system: rapid sequential testing — microsecond timestamps capture every event regardless of operator speed.
Custom modification: auto-learning version (2.5 hours)
A customer had a different problem — dozens of unmarked keypads with unknown pinouts. Manual testing would require reverse-engineering each wiring configuration. They needed a system that could learn the matrix topology automatically just by connecting wires and pressing keys. We modified the firmware and UI to enable zero-knowledge learning mode. Connect all wires, press each key once in sequence, and the system maps the entire matrix pinout automatically. No documentation, no trial and error, no reverse engineering. Total implementation time: 2.5 hours. This is the speed advantage of AI-assisted development — requirements change, and we adapt in hours instead of weeks.

Custom modification: zero-knowledge learning mode startup — connect all matrix wires and begin discovery.

Custom modification: learning in progress — as each key is pressed, the system automatically maps row and column connections.

Custom modification: matrix fully learned — pinout automatically discovered and mapped, ready for production testing.

Custom modification: automatic stuck-key detection works in both modes — amber highlight flags switches that fail to release.
What this demonstrates
The original system took 10 hours to build from scratch — hardware interfacing, real-time scanning firmware, desktop application, and serial protocol. A fundamental feature change that would traditionally require days of re-engineering work was delivered in a single afternoon. This project showcases both what we build and how fast we adapt. Your requirements will change — spec drift, customer requests, field feedback. When they do, you need a development partner that moves at your pace, not theirs.
Technical stack
ESP32-S3 firmware written in C with ESP-IDF and FreeRTOS — scan tasks, debounce logic, and USB serial streaming run on dedicated cores. Desktop application built with Python and PySide6 (Qt 6) for a native, responsive UI. Serial communication protocol designed for minimal overhead and maximum throughput. Packaged as a standalone Windows executable with PyInstaller. Auto-learning modification required firmware state machine updates and new UI visualizations for the learning process.
Interested in what we can build for you?
Every project we ship meets the highest quality standards with dramatically reduced turnaround. Let's talk about yours.
Get a free estimate