It seems to me the way things are, the ways to run digital soundcard-based modes involves either a new rig and a new (enough) computer with a USB port. Or, you need an old computer with a serial port to trigger the push-to-talk (PTT).
My problem is that I have a MacBook Pro (no serial port) and an HTX-100 (no computer connectivity whatsoever and no VOX). While I can easily connect the mic and speaker to the computer, switching the PTT requires something to get a signal via USB (that something can read) and activate the PTT.
I did this via an Arduino Uno and a transistor and a rig.xml file. It was actually pretty simple, although I did have a little bit of trial-and-error with the rig.xml file.
In fldigi
The first thing to do is setup fldigi to communicate with the rig. This is done by putting the rig.xml file (Arduino.xml) in a good location, such as ~/.fldigi. The XML should look like below:
<!-- Rig definition file for use with fldigi --> <RIGDEF> <RIG>Arduino</RIG> <PROGRAMMER> Andrew Rohne AC8JO Tested by: AC8JO </PROGRAMMER> <STATUS> Tested Version: 1.00 Date: 1 Sept 2011 </STATUS> <TITLE>RigCAT - Arduino</TITLE> <!-- default settings for initial setup --> <TIMEOUT>0</TIMEOUT> <RETRIES>2</RETRIES> <WRITE_DELAY>0</WRITE_DELAY> <BAUDRATE>19200</BAUDRATE> <STOPBITS>1</STOPBITS> <DTRPLUS>false</DTRPLUS> <RTSPLUS>false</RTSPLUS> <DTRPTT>false</DTRPTT> <RTSPTT>false</RTSPTT> <RTSCTS>false</RTSCTS> <ECHO>false</ECHO> <CMDPTT>true</CMDPTT> <COMMAND> <SYMBOL>PTTON</SYMBOL> <SIZE>8</SIZE> <BYTES>FE</BYTES> </COMMAND> <COMMAND> <SYMBOL>PTTOFF</SYMBOL> <SIZE>8</SIZE> <BYTES>FD</BYTES> </COMMAND> </RIGDEF>
In fldigi, the setup in Configure – Rig control should be like below, but make sure the device is the correct address for the Arduino Uno. It will be the same address you use to upload the program to the Arduino.
Then, program the Arduino. The sketch is really simple as all it does is respond to the correct string from the serial input and turn on the LED and send some voltage to the transistor base. That allows current to go through the transistor and complete the circuit for the PTT switch. Basically, the transistor acts as a solid-state relay.
The Arduino sketch:
/* Arduino PTT Rig Interface Andrew Rohne, AC8JO 1Sep2011 */ int LedPort=2; int pttPort=3; void setup(){ Serial.begin(19200); pinMode(LedPort,OUTPUT); pinMode(pttPort,OUTPUT); digitalWrite(LedPort,HIGH); delay(100); digitalWrite(LedPort,LOW); delay(100); digitalWrite(LedPort,HIGH); delay(100); digitalWrite(LedPort,LOW); delay(500); digitalWrite(LedPort,HIGH); delay(100); digitalWrite(LedPort,LOW); delay(100); digitalWrite(LedPort,HIGH); delay(100); digitalWrite(LedPort,LOW); delay(500); } void loop(){ String tmp=Serial.read(); if(tmp=="254"){ digitalWrite(LedPort,HIGH); digitalWrite(pttPort,HIGH); }else if(tmp=="253"){ digitalWrite(LedPort,LOW); digitalWrite(pttPort,LOW); } }
As you can see from the sketch, most of the lines are to blink the LED (and this could be done with much fewer lines with two for loops).
The connection diagram is below. Obviously, I had to make a custom cable to go from the 8-pin round connector on my rig to the computer’s mic and phone jacks and the Arduino breadboard (well, breadboard for now).
The above works for me. I will be using it a lot and improving on it, but of you have any improvements, feel free to drop them in the comments.
UPDATE
The new version of Arduino (1.0) doesn’t wants line 33 of the sketch to be the following:
String tmp=(char*)Serial.read();
-73-