Morse Code Keyer


I created a device to assist in morse code transmission, commonly called a keyer. It has nearly all the features you'd expect from a keyer, and can be built for less than $40 including project box (but not including the key or the radio of course). The source code is open and the schematics are available later in this article. All I ask is you let me know if you build one too!

All settings and memory are stored in EEPROM, so they persist even after powering down the keyer.

Controls and ports

First of all, here is a labelled picture of the front and side:

And a labelled picture of the back:


A standard dual-paddle morse code key should be used. To conserve desk space, I chose a project box that my MFJ-564 key can sit comfortably upon:


When the keyer is powered on, it will play the letter R (for "ready") over the sidetone speaker (this will not be transmitted).

If you wish to restore the keyer to its factory defaults, turn off the unit, hold down the Mem 1 and Settings buttons, and then turn the unit on (while continuing to hold these 2 buttons). The keyer will wipe all its settings/memory and play a 3-tone sound to indicate a factory reset has occurred.


In the default mode, the keyer works as a normal iambic keyer. Holding the left paddle emits a series of dits, holding the right paddle emits a series of dahs, and holding both emits alternating dits and dahs.


The keyer has 3 memories. This is mainly limited by the number of push-buttons you install. If you want more memories, it should be pretty simple to modify the code.

There is a length limit on the memories, although it is reasonably large. The limit is 600 units, where a unit is either a dit, a dah, or a space between letters. The space between letters is rounded to the nearest dit-length, and is capped at 254 dit-lengths.


The keyer is built around a Teensy 3.1/3.2 (I used a 3.1 but they are compatible).

Here is the schematic (I tried to draw it approximately how my device was laid out):

Source Code

Download the source code from my github

Please let me know if you build one yourself!