Arwic logo

Arwic

HomeWhat We BuildContactGet a Quote
Contact
Production-grade keypad testing — and a lesson in rapid customization.

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.

Matrix Keypad Tester desktop application showing a 4×3 keypad grid with all keys idle (red), event log with timestamped press/release data, and serial communication log

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

Matrix Keypad Tester showing one key actively pressed (green) at row 0, column 0 with remaining keys idle (red)

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.

Matrix Keypad Tester detecting three simultaneous key presses across row 2 with all three cells highlighted green

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

Matrix Keypad Tester mid-test with active key press at row 1 column 1 and event log showing rapid sequential press events

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.

Auto-learning Matrix Tester startup screen showing connection instructions and learning mode setup

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

Auto-learning Matrix Tester during the learning process showing partial matrix discovery with detected key mappings

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

Auto-learning Matrix Tester with fully learned matrix showing complete pinout mapping and ready for testing

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

Auto-learning Matrix Tester showing stuck key detection with amber warning highlighting faulty switch

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