This is an open source Arduino based CW (Morse Code) keyer with a lot of features and flexibility, rivaling commercial keyers which often cost significantly more. The code can be used with a full blown Arduino board or an AVR microcontroller chip can be programmed and used directly in a circuit. This keyer is suitable as a standalone keyer or for use permanently installed inside a rig, especially homebrew QRP rigs. It’s open source code so you can fully customize it to fit your needs and also perhaps learn from it or find coding ideas for other projects. A circuit board and parts kits called the nanoKeyer is available from DJ0MY, Hamshop offers a kit called Open CW Keyer , RemoteQTH offers the Open Interface , and The Mortty all run this software. Please do not directly email the software author for support. Consult this page for code support information.
Various tutorials, demonstrations, and development news updates can be found on the Radio Artisan YouTube channel.
- CW speed adjustable from 1 to 999 WPM
- Up to six selectable transmitter keying lines
- Programming and interfacing via USB port
- USB or PS2 Keyboard Interface for CW keyboard operation without a computer
- Logging and Contest Program Interfacing via K1EL Winkey 1.0 and 2.0 interface protocol emulation
- Command Line Interface
- Optional PTT outputs with configurable lead, tail, and hang times
- Optional LCD Display (Classic 4 bit LCDs and I2C displays supported)
- Up to 12 memories with macros
- Serial numbers
- CW keyboard (via a terminal server program like Putty or the Arduino Serial program, or a USB / PS2 keyboard)
- Speed potentiometer (optional – speed also adjustable with commands)
- QRSS and HSCW
- Beacon / Fox mode
- Iambic A and B
- Straight key support
- Single Paddle
- Ultimatic mode
- Bug mode
- CMOS Super Keyer Iambic B Timing
- Paddle reverse
- Hellschreiber mode (keyboard sending, memory macro, beacon)
- Farnsworth Timing
- Adjustable frequency sidetone
- Sidetone disable / sidetone high/low output for keying outboard audio oscillator
- Command mode for using the paddle to change settings, program memories, etc.
- Keying Compensation
- Dah to Dit Ratio adjustment
- Memory stacking
- “Dead Operator Watchdog”
- Wordspace Adjustment
- Pre-configured and Custom Prosigns
- Non-volatile storage of most settings
- Modular code design allowing selection of features and easy code modification
- Non-English Character Support
- CW Receive Decoder
- Rotary Encoder Speed Control
- Sleep Mode
- USB Mouse Support
- QLF / “Messy” Straight Key Emulation
- USB Keyboard HID (Human Interface Device) Interface (Keyer = keyboard for your computer)
- Keypad Support
- Web Interface
- Linking of keyers over an IP network
- Mill Mode
- TX/RX Sequencer
- Training Module and Various Practice Modes
- American Morse Mode
Some videos featuring the keyer:
Basic Schematic (Click to Enlarge)
Note: Ignore the numbers on the outside of the Arduino symbol and refer to the numbers within the box for pin connections (i.e. D2, D3, A0, etc.) All capacitor values are in microfarads (uF), unless otherwise stated. No values are super critical and typical tolerance components may be used. 1K ohm resistors are better suited than the 100 ohm transistor base resistors shown in the schematic. Use 1k resistors; I am in the process of updating the schematic.
KF4BZT Article – Good information for new builders!
Jeff, AC0C, wrote of his efforts to find a CW keyer with an “Old School Feel”.
Barry, ZS2EZ, published a web page on his K3NG CW Keyer build, including a schematic and PC board artwork.
Authoritative documentation is located in the Github Wiki.
Numerous helpful videos can be found on YouTube.
Source code is located on GitHub . Click the Download Zip button on the lower right to get all the code in a ZIP file.)
Older code versions can be found here. Click the commit you’re interested in, click Browse Files and you will find a Download ZIP button that you can use to download that particular git commit / version.
Code contributions and help testing features are welcome!