If you’ve scavenged some random keypads and want to reuse them in a project without the hassle of figuring out the pinouts, then [Cliff Biffle] has an interface module for you. The Keypad Go connects to the mystery keypad via an 8-pin 0.1 inch header, and talks to your own project using I2C and/or serial.
You could categorize the mechanism at work as machine learning of a sort, though it’s stretching definitions a bit, as there is no ChatGPT or GitHub Copilot wizardry going on here. But you must teach the module during an initial calibration sequence, assigning a 7-bit ASCII character to each key as you press it. Once trained, it responds to key presses by sending the pre-assigned character over the interface. Likewise, key releases send the same character but with the 8th bit set.
The heart of the board is either an STM32G030 or STM32C011/31, depending on parts availability we presume. I2C connectivity is over a four-pin STEMMA connector, and logic-level serial UART data is over a four-pin 0.1 inch pin header. [Cliff] plans to release the firmware and schematics as open source soon, after cleaning up the code a bit. The device is also for sale on Tindie, though it looks like they won’t be back in stock until later on in the month.
Longtime readers might recognize [Cliff] from his impressive m4vga project which we covered back in 2015, where he manages to generate 800×600 VGA signals at 60 Hz from an STM32F4-family microcontroller.
I kinda like the idea as an exercise, but at the same time it sorta feels like a solution looking for a problem. Determining the pinout of a keypad with either a datasheet, software trial and error, or by using a continuity tester doesn’t seem that much of a hassle, does it? You only have to do it only once per keypad type.
Fi
Figuring out a large matrix with a continuity tester is a hassle. Also to determine what are the rows and the columns.
Would this work for using a 101 keyboard on my TimexSinclair-1000?
Sure, you only have to fit your 100 keys into a 4 by 4 matrix. Maybe you can do that with 4 dimensional charlieplexing.
I once had to map out an keyboard matrix which had some 30-odd buttons, and it was a lot more work then I would have expected. Especially not knowing which were the rows and which were the columns made it a lot harder. I do like the idea of letting the microcontroller figure that out for itself, but with both such a small matrix and no source code available I quickly loose interest.
Doh!
(SMH)