This is where my time has gone since Christmas!
I agreed to look into how to make a control console for PowerSDR, so that you can control it with "knobs and switches" rather than a PC keyboard & mouse. It's always been possible for SDR to have that (just look at pihpsdr or the IC7300); but PC based SDR has always had the question of "how do you connect the controls". John Melton G0ORX described a way to do this a few years ago, but no-one had taken it further.
It's easy to connect serial ports to a PC, using USB; and Arduino microcontrollers already have that connection. Plan A: devise a suitable language to describe the control interactions (LED on or off; encoder step clockwise or anticlockwise; pushbutton pressed or not) and send messages from the Arduino. Then modify PowerSDR to read those messages. I had the Arduino part working in November.
But.... changing PowerSDR would be a huge step. I'd need new setup screens to configure all of the settings. So I decided to try John's approach, and use the existing CAT command structure that's already programmed into PowerSDR. I was keen to be able to replicate the "user interface experience" of a high end radio - for example the FT1000. I've repaired enough of them after all! I wanted something that would make my friends want to use PowerSDR for a contest, rather than their FT1000s.
The principle was sound. I looked at a number of high end radios to see what their user interfaces had - looking at the FT1000, IC7610, IC7300, FT9000 and the new Flex Radio Systems "Maestro" console. What I found was:
- A high quality tuning knob
- A clear display
- 5-20 indicators (like LEDs)
- 5-10 other rotary controls
- Quite a lot of pushbuttons
The first two were by far the most critical. An FT1000 tuning knob has around 600 VFO steps per revolution; you can turn it at 4 turns per second and it keeps up. Users expect that. I've also come to like the "dual shaft" rotary encoders where you can change the lower and upper edges of the IF filter passband using concentric knobs, like on the TS590S and IC7300.
Next step: I've approached this as a joint project with Kjell Karlsen LA2NI (developer of several of the HPSDR projects). Kjell agreed to make the PCB and design to fit an enclosure; I've done the Arduino software. We settled on a Nextion touchscreen LCD display; an optical encoder, 4 dual shaft encoders and 17 pushbutton switches (some of which are illuminated).
The "user experience" with the tuning knob was important to replicate. For the FT1000 it can generate nearly 2500 steps per second. If I use CAT commands to send that many "VFO step" commands I end up needing to send 17000 ASCII characters per second; the upper limit for normal communication, even assuming the software can keep up, is around 10000 characters per second. Instead I've opted to "batch up" the VFO steps and send a message every 10 milliseconds saying how many steps have happened. It uses far fewer characters, far lower message rate and doesn't load PowerSDR. Critically, it works - no lag - and sounds just the same when you "tune through" other signals. That meant adding new CAT commands to PowerSDR, and in the end I added several all in one batch; they've been included into the 3.4.9 release.
So here is the prototype: working fine with PowerSDR, and "feeling" like a conventional radio. Most of the commonly used controls are on the front; you can switch between VFO A and B (or have a second console, we think...). The display shows current settings including IF filter position; additional screens can be used for frequency entry, and for other less often used settings. All of the controls can be reconfigured, if you want different functions on them, using a setup screen.
The design files and software are on GitHub:
Come and see it at Friedrichshafen!