Tuesday, September 29, 2020

CW has a new Buddy

There are quite a few basic apps out there for basic logging with rig control and CW keying, as there should be. No two ops are the same, nor should they be.

So I tried a few then realized, as usual, that I might as well make my own.

After working some with the Arduino Uno investigating the RTTY potential it became obvious that the platform should make a decent keyer, if not just for PC interface then maybe even with a paddle hooked into it.

This is nothing new of course, I believe an ARRL book has a recipe for an Arduino keyer and I'm sure there are plenty of them on the air these days.

On the PC side, the idea is to just have a small interface for doing CQ runs for a contest (or just for fun) and have a versatile scheme to configure the exchange and TU/73 at the end of the QSO. Oh, and of course, logging. Since I generally use a spreadsheet for this all I need is to write to a CSV file upon completing a QSO.

So the Arduino has two jobs,

  • Accept input from the host PC
  • Accept input from a key paddle

And then key the rig through the key jack.

Once again we turn to the Qt platform for a desktop kit app. The parameter names are all ADIF standard (MYCALL, STX, etc) and are tagged by [brackets] whereas any literal strings are, well, literal. So the hailing call can go in as TEST [MYCALL] [MYCALL] or such, the exchange as [CALL] [RST_SENT] [STX] or such, etc. 

One thing to note, the STX field can be set as a static literal (IA, GTA, NLI, etc) or an incremented serial number, just need to set a config file flag. The config file is generated with default values when first run using the Qt QSettings class.

CW Speed is set with the slider and will be remembered in the config file. The speed is sent to the Arduino each time a transmission is sent.

Hit Clear and CQ to send the hail, HALT, as expected, will stop after the next sent character in case you hear some QSK. The ? buttons will send any text in the corresponding box with the ?, or else a bare ? if blank.

The expected workflow is to hit Enter after entering the heard call and that will send the exchange. Once the SRX is recorded hit Enter in that field to write to a log and send the TU line.

 

 The Arduino wiring is pretty basic. For the Uno I used pins 7, 8, and 13 but this can be switched around as needed for different boards. This program is so light it doesn't need anything bigger than the Uno but any of the boards should work, even if a little massaging is required.


Source is available here.