Quite possibly the best keyer ever.

Over the years, the quest for a good morse code keyer has been on the mind of many Hams. I remember the first keyer I ever saw at a friends shack while I was still in high school. It was the latest thing with “Iambic” or squeeze keying. He demonstrated using his Brown Brothers paddles how it would alternate making dits and dahs when both paddles were held. It was homebuilt using RTL logic.

Over the years improvements came along. Memories that could store canned messages. Weight and beacon settings. Serial numbers that auto-incremented for contesting. Back before computer logging took over, a good contest keyer was a necessity.

MFJ Grandmaster “contest” keyer

Then contest logging software took over the CW sending and the keyer was on the back shelf for use in casual QSOs or when the logging computer crashed. But eventually, computers got too complicated and too fast and busy doing other things to send decent CW without it getting choppy. Of course, we were demanding more out of the logging computer – controlling two radios, sending/receiving spots over the network, etc.

So along comes K1EL and his Winkeyer. It took all the timing issues away from the main computer and let a little PIC chip handle them. It worked like a charm and became the standard for most contesters. And you could plug a paddle into it and use it as a simple keyer too! I have one and love it.

K1EL WinKeyer

But Hams being Hams, never sit still and other choices came along. Of course, not everyone cared about contesting or they needed a keyer that had other features. A number of people published keyers that used small microcontrollers. The Microchip PIC chips were popular and a number of Hams created keyers using them. The Embedded Research Tick keyers brought them down to a single chip you could embed into your homebrew rig or build into a case. I built one the size of a keyfob for your car.

But eventually, people discovered the Arduino and how easy they were to program. I’m sure many programs were out there and I’ve played with a couple, but the one that has come to the forefront was written by Goody, K3NG. I’m not sure when it was first released, but by now it is quite mature and has an extensive feature list, including incorporating the K1EL Winkeyer2 functionality. It continues to be updated on a regular basis today. You can read about it at https://blog.radioartisan.com/arduino-cw-keyer/

I don’t even remember where I first heard about it, but I know I had played around putting the code into an Uno and making all the connections on a breadboard. But I really got into it when I saw the DJ0MY kit that lets you put it on an Arduino Nano. The Nano is a small Arduino board about the size of a large postage stamp. I had been using Nanos and Minis for some other projects, so I knew what it could do. I ordered the kit from Germany and when it came, I built it. The program gave many options and I had a blast changing things and trying them out.

DJ0MY NanoKeyer

So, it makes a fantastic keyer. I can’t list all the things it can do here because it is too long of a list. Read the link above if you want. But the problem was, there was so many features that they can’t all fit in the limited space in the Nano’s memory. The way Goody wrote the code allows you to turn on or off sections of the code when it gets compiled. You pick and choose the features that you really want and if they fit, you’re golden. If it doesn’t, you have to give something up.

But the code will run on any Arduino. What if there was one that had more program space and could accommodate more features? Well, there is. The Arduino family tree is pretty big, even just the official branches. One stood out as perfect for making the ultimate version of the K3NG keyer. It was the Arduino Mega 2560. It offered more than eight times the program space as well as double the number of I/O pins. The only drawback was it was twice the size of the Uno and completely dwarfs the Nano.

Nonetheless, people started talking about making a PC board, or shield, to make the Mega into a keyer. It was a great idea and some people homebrewed them.

Then someone said “What about these Mega 2560 Mini boards we see on EBay?”

Mega 2560 Pro Mini

Arduino Mega 2560 Pro Mini

Someone had taken the same chip as used in the Arduino Mega 2560 and put it on a much smaller board. All the I/O pins were there, and since it is the same chip, the memory size is the same. It just no longer fits the shield layout that the Uno and Mega share. It ends up being wider than the Nano but not much longer. It’s not official Arduino, but is comaptible with the software. Since the whole Arduino project is open source, they encourage others to develop them. Official, full sized MEGA 2560s are in the $35 range, with imported clones being about $15. The Mega 2560 Pro Mini is under $10 direct from the manufacturer. There are also other similar Mega 2560 reduced size boards out there, but the layout differs slightly.

It was such a good idea, that two groups are developing projects around it simultaneously. K5BCG on the Radioartisan groups.io boards are making a board available. This is the support group for the K3NG keyer code.

At the same time, the CalQRP group (also on groups.io) is making and selling very similar boards. There are differences between the two projects, mostly in displays and interfaces. But both run the K3NG Keyer code and should allow a much more complete set of features to be incorporated at once.

Both projects have published the PCB CAD files, schematics, and full BOMs to make it easy to reproduce.

I was considering picking up a proto shield for the Mega2560 (full size) and building the keyer circuits on it. It would be a feasible project. I have a couple of the Mega boards on hand. But I heard about the Mega-Mini sized boards and decided to wait. I’m glad I did. I’ll end up building one of the above projects for sure.

USB SOUND CARD RADIO INTERFACE PROJECT

A project using off-the shelf modules to build an all-in-one Ham Radio interface for digital modes and contesting.

This article is a work in progress. I will continue to update this while it progresses. Photos will be added eventually.?

Parts:   

Item Source Price URL Notes
KF5INZ Easy Digi board (2pcs) Ebay $15.91 https://is.gd/n0cqq7 You get two for this price!  
DIY Prototyping Board PCB (5pcs) Ebay $6.99 https://is.gd/JMeO94   Many sizes available on both Amazon and EBay or elsewhere.
ELEGOO Arduino Nano V3.0 (3pcs) Amazon $13.86 https://is.gd/0JmAlJ   https://blog.radioartisan.com/arduino-cw-keyer/  
AmazonBasics 4-Port USB 2.0 Ultra-Mini Hub Amazon $6.99 https://is.gd/P4HYov    
GearMo USB to serial converter Amazon $16.88 https://is.gd/cejiNb

Win 7,8,10 compatible
CH340 chipset
USB Audio Adapter
(Sound card)
Amazon $6.69 https://is.gd/SgBDQi Any similar adapter will do.
Enclosure Ebay $7.51 https://is.gd/7cHP96 Split Body Extruded Aluminum Box 110*88*38mm

The Plan

I have been thinking about putting together an all-in-one interface box to use with a laptop and my K2 for digital sound card modes as well as some QRP contesting. Looking at the available offerings everything I saw either didn’t do something I wanted, was too expensive, or was too complex – doing many things I didn’t need. I have an old Rigblaster, but it’s not a USB version, so I’d need another USB-serial adapter to use it. Everything just added multiple wires and connections to deal with.

So I started thinking about doing it myself. Rig interface, I already had. With the K2 it’s simple. Just a USB-Serial adapter with a short cable that I built a keying interface into. But I still wanted a Winkeyer for contest CW. I have a Winkey USB, as well as a K3NG Nanokeyer which both do the job well. I had USB sound cards, but not the interface circuits between them and the radio. So I would need to build that up.

So what do I end up with? Rig interface for frequency control – 1 USB port. Contest keyer – 2 USB ports. Sound card interface – 3 USB ports and an interface box. Lots of cables. Three USB ports would nearly fill my laptop. If I use my Surface Pro, it would require a hub. Another box and wires. 

I decided some consolidation would simplify things greatly for portable operation, so the idea of combining all the above into one package was born. I could take inexpensive modules out of their packages and combine them into one complete station interface. That’s the premise of this project and this document is the beginning of it.

Some software is able to use one audio channel to put a pilot tone out that is used to control the radio PTT. Others use DTR or RTS lines. Most contest logging software uses the control lines as well. Some people are using a delay circuit to hold the PTT in. The Winkeyer handles this on its own. I am not sure how I will end up doing the PTT, I may use a combination of these.

The goal of this is to simplify the wiring needed to use digital modes between my K2 and a laptop. Ideally, I want to end up with one USB cable from the laptop to the interface, and one cable and connector from the interface to the K2. The last cable might have multiple plugs that fan out to the rig, but I want the bulk to be one cable and plug into the interface. I’m still considering whether I want to install a dedicated plug at the K2 end, or stick with existing connections. (Mic jack, key jack, speaker jack.)

Module selection and theory

KF5INZ Easy Digi board

I was looking for a design of a simple sound card to radio interface and parts list. Somewhere I came across this neat kit that made it all in one easy purchase that cost less than finding the parts individually. But, even better, you get two.

DIY Prototyping Board

This will be the “motherboard” for all the modules. It will be a common backplane for the modules as well as provide a place for discreet components and connectors, and allow making interconnections neatly. Get one of a generous size. You can always trim it later.

Enclosure

After beginning to lay out the pieces on the proto board, I began to get a feel for how big it was going to end up being. I took some rough dimensions and started to look for an enclosure. I wanted it to be RF tight and liked how my NanoKeyer turned out with an extruded aluminum box, so I looked for something similar. I found a nice box that is 110x88x38mm and ordered it. But to get the spare USB connector to meet up with the end panel, I have to rotate it’s orientation on the protoboard 90 degrees. So, I’m basically taking it all apart and rebuilding it from the start. I’m going to wait until the new USB-serial adapter comes.

Arduino Nano

I selected the Arduino Nano to be the keyer module. I’ve used them before in other projects, including a K3NG Nano Keyer which provides Winkeyer USB functionality for contesting purposes. I have used many Elegoo Arduino products before and have found them to be good quality and work perfectly with the Arduino IDE. Getting the three-pack was just as cheap as buying an individual one. I will have use for the others.

Some incidental circuitry will need to be built for the keyer. I ordered some 1/8” jacks and plugs as well as some opto isolators to complete that. I still need to come up with a speed pot and decide whether I need memory buttons, or just one for command mode. The NanoKeyer has so many features I can’t add them all. Fortunately, I don’t need many of them and I rarely use the internal memories when connected to a computer.

4-Port USB 2.0 Ultra-Mini Hub

Since I am using several USB modules, I wanted to use a hub to combine them and let me use one cable to the computer. Any cheap hub would do as long as it can be removed from its case and integrated into the project. Amazon Basics supplied a generic product that fits the bill at low cost. The unit has three USB jacks on one side and one on the back corner next to the USB cable that comes in. If mechanical considerations permit, I want to have that back connector accessible when it is in a case. The three on the other edge are enough for the things I’m building into the interface and will be removed from the board and hard wired.

USB to Serial Converter

This will provide the rig interface and keying line for the digital modes.

I wanted a USB to serial adapter, and had several on hand, but most of them are made with molded plastic and looked like they were going to be hard to remove the casing. I was going to see if I could pick one up that had a plastic case I could crack open easily, but saw this which I thought should do even better.  It turned out, it only provided TTL levels and even when I tried a little level converter board, did not work with the K2.

I had a Keyspan adapter that the plastic could be opened. I thought about using it and even took it out of its case. I didn’t like the size of it and it was an oblong shape. Even if I trimmed the board after removing the connectors, it would be a kludge. So I looked for something online.

I found a different adapter with a rectangular shape and a case that looks like it will open easily. It also claims to be a FTDI chip so I already have the drivers. I’ll put the connector back on the other board and keep it. It might come in handy for something else.

USB Audio Adapter

I had one on hand, so I did not initially buy one. But the one I had didn’t seem to work. It was a cheap one that I had laying around and I couldn’t seem to get a decent audio level into it. It played back music into headphones and sounded great, but I think the mic input may have gotten fried. So, after a recommendation on e-Ham.net, I ordered the one in the list. It seems to work much better.

Unresolved Issues (So Far)

NanoKeyer. A number of discrete circuits around the Arduino Nano board need to be built. I am waiting until all other layout work is done to finalize this. To get space, I am considering either putting the Nano under the USB hub which is raised on standoffs, or else putting it on the opposite side of the proto board where it would have the whole board.

Update: The Arduino Nano is mounted on the proto board and the associated components installed. Good news is, it works! It’s a pretty bare-bones version of the K3NG keyer program with mostly just a basic keyer and the Winkeyer functions.

PTT circuit. I haven’t decided how I want to go about keying the rig for digital modes. I think this may solve itself by what works. I have choices: RTS/DTR lines from the serial port. A VOX circuit. Or a VOX circuit triggered by a tone on the right audio channel. We’ll see what works best.

USB-serial adapter. I hope the new one I ordered works. Just works.
Update: The new serial-USB adapter came. It was easy to get out of it’s case and the USB cable came off easily and was wired directly to the USB hub. The DB9 connector was not so easy. I couldn’t unsolder it. Since it was soldered to both sides of the board, I couldn’t get the terminals free. I decided to cut it free with a Dremel tool and cutting wheel. That worked, but I slipped and cut a trace. It might not be one that is needed, but I repaired it with a tiny strand of wire.

Footnotes:

An interesting interface built into the K2. https://is.gd/Vdf4GO

KIO2 Manual with cable instructions https://is.gd/bx1xzK

FTDI Support Documents https://is.gd/pSYxdV

KD2AVU Soundcard interface https://is.gd/OwVBzX

TrueHamFashion articles on the EasyDigi interface:
https://is.gd/BGEkGT
https://is.gd/r7Yxzp
https://www.youtube.com/watch?v=VGpfQuorKN0 (video)

UZ7HO Soundmodem (software TNC) https://is.gd/twOsRG

WinLink Express https://winlink.org/WinlinkExpress

DuinoVox rig interface https://is.gd/2hzpPn

W3FPR Fixed Audio Out for the K2 http://www.w3fpr.com/K2_Fixed_Audio_Output.htm

Appendix A: Nano Keyer commands

Buttons

button 0: command mode / command mode exit
button 0 + left paddle:  increase cw speed
button 0 + right paddle: decrease cw speed
button 1 – 12 hold + left paddle: repeat memory
button 1 – 6 half second hold: switch to TX # 1 – 6

  Command Mode (press button 0 to enter command mode and press again to exit)

A  Switch to Iambic A mode
B  Switch to Iambic B mode
C  Switch to Single Paddle Mode
D  Switch to Ultimatic mode
E  Announce speed
F  Adjust sidetone frequency
G  Switch to bug mode
H  Set weighting and dah to dit ratio to defaults
I  TX enable / disable
J  Dah to dit ratio adjust
K  Toggle Dit and Dah Buffers on and off (Ultimatic)
L  Adjust weighting
N  Toggle paddle reverse
O  Toggle sidetone on / off
P#(#) Program a memory
R####  Set serial number to ####
S  Alphabet code practice (FEATURE_ALPHABET_SEND_PRACTICE)
T  Tune mode
V  Toggle potentiometer active / inactive
W  Change speed
X  Exit command mode (you can also press the command button (button0) to exit)
Y#### Change memory repeat delay to #### mS
Z  Autospace On/Off
#  Play a memory without transmitting
?  Status
         1. Speed in WPM
         2. Keyer Mode (A = Iambic A, B = Iambic B, G = Bug, S = Single Paddle, U = Ultimatic)
         3. Weighting
         4. Dah to Dit Ratio

Strikeout – Does not apply to this configuration

|
Skip to toolbar