A Remote VFO for Elecraft K3

During the winter 2021 holidays I spent some time playing in the various contests and sprints going on this time of year. I particularly enjoy the CWOPS and SST. These CW gatherings tend to be low power, brief, lasting only an hour or two, and load of fun!

In these contests I started to discover some areas of inefficiency and some of plain-old-discomfort that I felt I needed to address. My desk configuration is not the easiest to change, and what I felt I needed was a way to bring the tuning dial and some of the most-used rig-keys closer to my keyboard and key-paddle. I looked on-line for an Elecraft KPOD, but they are not inexpensive and the availability is currently not so good. So, I decided I would just put something together.

The Remote Control system has two parts:

1 — A Remote Controls Unit

2 — A Connector Interface to the Rig

Main Remote Control Unit
Remote Control Unit
Connector Interface
Connector Interface

The Remote Control has an encoder with a momentary switch, eight programmable function keys, and three LED indicators.

The Connector Interface goes between the control PC and the Rig using classic RS-232. The Remote Control system is not designed to support modern USB rig interfaces. A RJ12 (6P/6J) straight-through cable is used to tether the control to the Connector Interface. A USB port or power supply is used to provide 5VDC to the system via a micro-USB jack located on the Connector Interface.

About the Design Data

All the design data for this Remote Control system is located on GitHub at https://github.com/ldocull/K3-Remote-VFO.

The Mechanical packaging was designed in Fusion 360. A full step-assembly is located in the repo. The assembly can be pulled into any modern CAD package for alteration.

The construction is plastic. The case frame was FDM printed from PLA using a FlashForge. The top and bottom were laser cut from 0.08″ acrylic. The main-dial and keycaps were MSLA (resin) printed on an Elegoo Mars. The knob and case components where painted with Rust-Oleum.

KiCAD was used for the schematic and PCB design. KiCAD is free and easy to use. I used JLCPCB to manufacture the PCBs.

PCB Setup

The Software is Arduino-based and runs on a STM32F103C8 BlackPill. The project is in Visual Studio Code, and PlatformIO which are currently both free tools. The Maple bootloader was installed to make the development quick and easy and is included in the repo.

Updating Encoder and Key Definitions

Each key is assigned a text-macro which is stored in non-volatile memory on the Remote unit. The encoder-wheel is handled the same. The wheel can be pressed and therefore the operation has been divided into four “speeds” (as is indicated by the LEDs below the wheel.) In the case of the encoder, the macros are also divided into four sets up “up” and “down” movements and the text contents are transmitted on each pulse of the wheel.

The default baud rate (as defined in the firmware) is 38400 and the Remote text-macros can be updated in-situ using a terminal emulator such as RealTerm.

The following text could be uploaded to the remote. '$$$' is used to mark the beginning of the upload, and '&&&' is used to end the upload. Note that the macros are defined as <Kx> text message </K>' and <Ex> text message </E>.

(Note the messages defined below are for the Elecraft K3.)

$$$            // 3 dollar start of file

<K0>SWT11;</K>  //  A/B  menus stuff here...
<K1>SWT13;</K>  // A->B
<K2>SWT42;</K>  // SPOT

<K3>SWT29;</K>  // XFILT

<K4>SWT21;</K>  // M1-M2
<K5>SWT31;</K>  
<K6>SWT35;</K>  
<K7>SWT39;</K>  

<E0>UP4;</E>    // encoder modes here 0-3, increment/decrement
<E1>DN4;</E>    

<E2>UP8;</E>    
<E3>DN8;</E>    

<E4>UP1;</E>    
<E5>DN1;</E>    

<E6>UP0;</E>    
<E7>DN0;</E>    // end of file is ampersand

&&&

Enjoy, 73, de WR9R