This project is a CW keyer for amateur radio. The hardware connects to a PC with USB. It then appears as an audio device for radio sound output and microphone input. It is also a Midi device to signal key up/down to the PC software, and a serial device for a connection to logging or other software on the PC. It is designed for the Hermes-Lite 2.0 or other SDR software. The radio sound is sent to the keyer and the keyer generates a sidetone, mixes it with the audio and sends it to the headphones or speaker. The sidetone has zero delay and is suitable for high speed CW. The keyer can also be used with a regular analog radio by using the key and PTT outputs. This project is currently a DIY project with instructions below for those who feel comfortable with some light soldering and Arduino programming.
The hardware consists of a carrier board as shown below and a Teensy 4 microcontroller. The Teensy can be purchased from Teensy or from sparkfun, adafruit, mouser, digikey or amazon. Make sure to order the Teensy 4.
Keyer software must be loaded into the Teensy 4 microcontroller. The Teensy 4 is programmed via a usb connection to a host computer. First, download and install the Teensy loader application for your operating system as described on this page. Then start the teensy application. Press the programming button on the Teensy and the teensy app will change to show a picture of the board. Then select the ".hex" program file, select "program" and then "reboot".
There are currently two keyer programs available, the "hasak" and the "TeensyWinkeyEmulator". Click on the "firmware" link above, and click through the directories until you find the hex file you want. The file will appear as a table of numbers with a "Raw" button on the upper right side. Right click the Raw button and select "Save link as". Make sure the file name ends in ".hex". Save the hex file and use it to program the Teensy.
TBD: Basic description, download and use instructions for Ctrlr MIDI control panel.
To write your own keyer software or to contribute to software development first clone this repository. This git repository uses several submodules to collect various projects into a single repository. You must initialize submodules when intially cloning:
git clone --recurse-submodules [email protected]:softerhardware/CWKeyer.git
After that, also be sure to pull updates from submodules:
git pull --recurse-submodules
You can find more details about how to work with git submodules on the internet.
Current development is done using Arduino IDE 1.8.19 and Teensyduino 1.56. Please make sure those are installed.
Updated libraries are required for glitchless 48kHz audio with the CW keyer hardware. These libraries are provided in this git repository. An easy way to use these libraries is to add symbolic links to the new libraries from the arduino IDE install. This is described below for Linux and MacOS systems.
Be sure to select the "Teensy 4.0" board in the Tools-->Boards-->Teensiduino menu, and to select the "Serial + Midi + Audio" USB model in the Tools-->USB type menu, otherwise compilation will fail.
- cd arduino-1.8.19/hardware/teensy/avr
- rm -rf cores (This must be removed or moved outside of the arduino-1.8.19 area otherwise arduino will still pickup this code)
- ln -s /home/shaynal/CWKeyer/libraries/teensy/cores . (Substitute the path for your local git pull of the CWKeyer repository)
- cd libraries
- rm -rf Audio (See step 2 comments)
- ln -s /home/shaynal/CWKeyer/libraries/teensy/Audio . (See step 3 comments)
- ln -s /home/shaynal/CWKeyer/libraries/teensy/CWKeyerShield . (See step 3 comments)
(Added by DL1YCF. Note this is best done from the "terminal" app, then this is very similar to the linux case).
All the libraries are inside the Teensyduino "app" file bundle (which is a directory tree) /Applications/Teensyduino.app. Locate a sub-folder called "Audio", this will point you to the libraries for the Teensy. Normally this is located in
/Applications/Teensyduino.app/Contents/Java/hardware/teensy/avr/libraries
You can copy the "Audio" folder within that folder to a safe place (or just delete it), and do the same to the "cores" folder one step higher, that is, the "cores" folder within
/Applications/Teensyduino.app/Contents/Java/hardware/teensy/avr
Then proceed as in the linux case, that is, add a symbolic link named "cores" in the .../teensy/avr folder and two symbolic links called "Audio" and "CWKeyerShield" in the .../teensy/avr/libraries folder, that point to the directories "Audio", "cores" and "CWKeyerShield" where you have placed them after down-loading from this repository.