I've been licensed as KA8KPN since 1980. I have sometimes told people that it was 1979, but that's my mistake. My true story about not having an ID for the general test, but having one for the amateur extra test implies that I was licensed the year I turned 16, which was 1980. That whole time, CW has been my mode. First, with a straight key, and then with a set of iambic paddles (I received a nice chrome based set of Bencher paddles for my 16th birthday.) The thing about iambic paddles is that you need a device called a keyer in order to actually use them for anything.
Now, keyers (and keys, for that matter) are kind of pricey. The MFJ "Econo-Keyer" that I've used for decades was around $50 in 1980, and a true CW afficionado uses a memory keyer. Indeed, I got to use a memory keyer at other hams' shacks and during Field Day, and it was awesome. So, I always wanted one. A few years ago, I decided to take Anthony Good, K3NG's Arduino-based keyer hardware and software and build one. I've chronicled my effort to build and program that keyer in these very pages and, in fact, I have it sitting right over there. It even works, or it would work if I hadn't replaced the software. The thing is, once I got it built with the four-line LCD and the rows of buttons and the knob and quarter-inch jacks on the side, I decided I didn't really like it very much, and I started thinking about what I was going to do next.
I had to write new software from scratch to drive the LCD properly and the Arduino is a very limited platform, so all the features I wanted wouldn't fit in the base Arduino Uno and I had to switch to a Mega and the LCD is kind of flaky and the mechanical assembly of the whole thing is not done real well (I'm not much of a machinist, I'm afraid) and the quarter-inch jacks aren't the best for this application and, besides, there are too many of them, and so I came up with some new ideas.
Basically, I'm going to split the keyer functionality between an Arduino (a Nano, this time) and a Raspberry Pi. The Arduino will do all the low-level real time keying stuff, reading the paddles and keying the radios. I also decided that it should be able to operate as a standalone keyer, a "Econo-Keyer Equivalent" if you will, if necessary, so it should have a speed control knob on it, but that I didn't need a sidetone with the associated speaker or the keyboard jack or anything like that. Instead of separate quarter-inch mono phone jacks for keying output and PTT, I will use eighth-inch (3.5 mm, I think that is) stereo jacks which will have both keying and PTT in each one. Those jacks, as well as the potentiometer for the speed control, will mount on the PC board so there won't be this tangle of wires that my current box has. The thing is, this "keyer dongle" as I'm calling it will have no memory capabilities at all. It won't know how to talk to a keyboard or drive a display. It will have a serial over USB connection (the USB connection will provide the power) for controlling it, but that's it.
The advanced functionality will be on the "host," a computer that will handle driving a graphical display. My plan is to use a Raspberry Pi with a 7-inch touchscreen LCD. Instead of rows of buttons for the memory functions, there will be logical buttons on the touchscreen. The amount of storage offered by the memory will essentially be infinite. It will offer a keyboard and network and all kinds of things that are tough to do on an Arduino, but child's play for a real computer. Even better, the Arduino software is vastly simplified. In fact, it's is essentially done right now. All the really advanced stuff can be done in Python on my laptop and copied over to the Pi. It's not done already, but it's coming along.
Currently, I'm using the old keyer hardware as my "dongle." The new dongle hasn't been designed yet. I don't yet have the touchscreen, but I'm getting to the point where I could use it, and I already have the Raspberry Pi. The Python code can run on a laptop or desktop computer every bit as well as on the RPi, and it's taking good shape.
Soon, I'll be uploading the current version to Github, while I continue to work on it. Then, you can see it, too.