A SW Keyer for remote operations

News: 2021-01-25

I am happy to point you out the Remote SDR project – 2020 by Dale, VK5DC.
Dale designed and developed a full remote control system for his Anan 100D SDR based station. In addition to all the other components, he is using the SW Keyer you can find here.
Please give a look at Dale web site for additional informations and more complete instructions: he added some additional and very useful informations about RPI requirements and configuration you can't find here.

Give also a look at his very nice travel page :)

Best 73'
Enzo

 

Project Description

 

This is a simple tool based on the "Morse Code Iambic and Semi-Automatic Keyer" from the Morse-Code-Tools projects.

You can use your key, bug or Iambic Paddle stright connected to your personal computer without a hardware morse keyer. I modified the code to send commands over the network to a remote actuator connected to the Key Line of your rig. The actuator can be a Arduino board (like in my previous project Remote Morse Key) or, if you already own a Raspberry PI 2/3, you can install a simple shell script (see below).

In addition, if you are a FlexRadio 6000 user, you can solve the issue of the Missing CW Tone when you use the radio in Remote Mode. (see the video below).

WARNING! Some users noticed bad tone generation using the standard drivers of their soundcard. If you have the same problem, just install and use a ASIO driver for your soundcard. If you have a obsolete or non specific soundcard (like me) just download ASIO4ALL drivers. This is enought to solve any latency or bad tone generation issue.

 

List of the simple hardware you need:

  • n 1- USB to 232 adapter (with full DB9 lines);
  • n 2- 6800 Ohm resistors;
  • n 2- 100 nF ceramic capacitors;
  • n 1 - your cw key, bug or paddle
  • n 1 - 220 Ohm resistor
  • n 1 - 4n35 opto-coupler
  • n 1 - Raspberry PI 2/3
  • n 1 - Software tool you can download from below

 

LOCAL SIDE

 

On the local side you have a pc connected to your rig (in my case it is SSDR and Flex 6300). Then connect your key/paddle to the serial port of your pc using a USB to RS232 adapter. You need a DB9 adapter for debouncing. See the pictures below.

 

Next start the program I modified that can read the signals from the com port and sends 0/1 commands via TCP protocol. The software, and its remote actuator, implements a Step Function. While it is a very simple solution  it seems very reliable as well. 

Before enable the program, configure the TCP channel and set the com port of your key. That's all.

Download - Just uncompress all the files in a directory and run the .exe program.

 

REMOTE SIDE

 

On the remote side I use a Raspberry PI2 connected to the same network of the FlexRig. A script, you can copy from this page, can be used to key the rig.

The script simply start a TCP socket on the RPI and key it upon receipt of the command. See the picture below.

In the picture below you can see my Pi RemoteQth server. It has enough resources to execute the script and activate the key line of the Flex 6300 rig. You can do the same with your own RPI2/3.

NOTE 1: Please, give a look at Dale, VK5DC, page for RPI requirements and configuration. It saves you a lot of time and pain (HI)

 

NOTE 2: I was noticed about some issues using RASPBIAN BUSTER. In such a case you may prefer a modified version of my script by Didier, F5NPV. You can find all the informations on his web page

 

SCRITP FOR RASPBERRY PI (JESSIE)

 

#!/bin/bash

#be sure you have already installed nmap on your PI


PORT=11005
CW_PIN=25
echo "Start listening on port $PORT ..."
while read line
do

    #echo $line
    #echo $line | od -An -t uC

    cmd=${line:0:1}
   
    #echo $cmd
    #echo $cmd | od -An -t uC

case "$cmd" in
       
    0) #echo "000"
       gpio write $CW_PIN 0
       ;;

    1) #echo "111"
       gpio write $CW_PIN 1
       ;;

    3) echo "Going to stop listener ..."
       break
       ;;

    *) #echo "unknown cmd"
       ;;

esac

done < <((echo "Welcome. Please give me one of the following commands: 0 | 1 | 3") | ncat -k -l $PORT)
echo "... listener stopped."
exit 0