Keypad:GO!
Keypads: cool but tedious. Let me fix that.
There’s nothing quite like the feel of a chunky physical keypad, like on an old phone or ATM. It adds a certain feel, a certain groundedness, to a project’s user interface.
Interfacing with a keypad isn’t hard, but it can be tedious and requires a bunch of pins. Once you get the keypad in your hands, you’ve still got to
- Figure out how it’s wired, because they usually don’t come with a datasheet,
- Wire up seven or eight or twelve pins to a microcontroller – pins you now can’t use for anything else,
- Write code to scan the key matrix often enough to not lose keys, and
- Write code to clean up the input signals, filter out ghost keys, and debounce the (often cheap) switches.
If you were trying to build something that includes a keypad, all this work on the keypad itself can seem like a lot. If your project needs to run some code on that microcontroller…well, having to also scan a keypad can add a lot of complexity.
I got tired of all that, so I built this widget. It’s called Keypad Go, because that’s what it do: make keypad go.
Keypad Go does the tedious stuff so you don’t have to
Keypad Go is a tiny backpack you slap on the back of a typical keypad (or wire up to a more elaborate system of your choice). You provide a USB-to-serial cable (or old-school serial port), and Keypad Go will have you up and running within two minutes, even if you don’t know anything about the keypad.
Seriously. Keypad Go will:
- Figure out how the keypad is wired for you. You’ll have to help by pressing keys, but it’ll do the rest.
- Determine an efficient configuration for scanning the keypad at a high rate. (And show it to you, in case you’re curious.)
- Save the results so it survives power loss.
- Turn keypresses into serial data at 19,200 baud – easy to feed to anything from an Arduino on up.
If you ever need to change the settings – or move it to a different keypad – there’s a SETUP button that will restart the process. Easy. No software required beyond your usual way of talking to a serial port.
Tech specs
- Voltage inclusive: Keypad Go loves 5 volt and 3 volt circuits equally.
- It’s just asynchronous serial: Keypad Go works with any device with a (TTL-level) serial port or UART. The interface is so simple you don’t even need a library to talk to it. Really.
- Bonus I2C interface: Keypad Go also happens to have an I2C port, compatible with cables for the Seed Studio Grove and Adafruit Stemma systems. It’s also 5V tolerant and can be used to power the whole keypad. I2C is harder to get working (and less reliable) than async serial, but lets you string many devices together on the same pins.
- Firmware upgrade options: Keypad Go has a pogo pin SWD connector for all you embedded hackers out there, but it’s also happy to receive firmware updates over the same serial connection it uses for everything else.
Documentation and Support
There are two versions of Keypad:GO! in the wild: version 1 (green board) and version 2/3 (black board).
Both versions use the same open source Rust code.
Version 1:
Version 2/3: