ArduinoVox Box
Having used a Serial Sound Card Interface between the computer
and radio for many years I was looking for something better. The first
option was to buy a Signalink Interface. Current price $129.95
(R1719.34) without postal and import taxes. This was not an option at
all. I decided to search the Internet and found several units that
work with transistors. I was looking for something that would
incorporate an Arduino Nano unit. Well I found a complete write-up by
an Old Techie. I am not going to go into detail here other than to post
images of the project with a reference and acknowledgement at the end
of the post.
Code:
/*
DuinoVOX. Ver.3.1.1 Arduino based PTT control for radio interfaces.
Written Aug. 2016 by Kevin Loughin. Originally for use
in a clone of the Tigertronics Signalink design idea.
*/
// Naming the pins I'm using for clarity.
const int audioInPin = A1; // Audio sense
const int tailsetInPin = A3; // delay time adjustment POT
const int sensitivity = A5; // threshold set POT
const int PTToutPin = 13; // output to keying transistor
// declaring variables that we'll use
int delayvalue = 0; // amount of time in hundreths of a second before dropping PTT
int threshold = 0; // audio trigger level initial value
int ptt = 0; // variable for holding current PTT delay countdown
int audio = 0; // variable that will hold audio sense
int PTT_ON; // Flag to indicate current PTT status
void setup() {
// Turn off PTT right away so we're not keying on startup
pinMode (PTToutPin, OUTPUT);
digitalWrite(PTToutPin, LOW);
PTT_ON = 0;
}
void loop()
{
// Here we go. First read the pots and set variables
delayvalue = analogRead(tailsetInPin) / 5; // yields 0 to 204
delayvalue = delayvalue + 2; // adjusted to no less than 2, 1 after first pass through loop
threshold = analogRead(sensitivity) * .8; // yields 0 to 819
threshold = threshold + 70; // adjusted 70 to 889
// Check for audio. Set delay if present
audio = analogRead(audioInPin);
if ( audio > threshold ) // if audio in exceeds sesitivity threshold.
{
ptt = delayvalue; // set ptt to current delay in hundredths of a second
}
// PTT control check
if ( ptt > 0 ) // if PTT is positive (loop is counting down)
{
if ( PTT_ON == 0 ) // check that we havn't already turned it on
{
digitalWrite(PTToutPin, HIGH); // turn on PTT if it's off
PTT_ON = 1; // so we don't waste time writing on next pass
}
ptt = ptt - 1; // count down in hundredths of a second
}
else // the counter reached zero.
{
if ( PTT_ON == 1 ) // check if we already turned it off
{
digitalWrite(PTToutPin, LOW); // turn off PTT
PTT_ON = 0; // Remeber that we've turned it off
}
}
delay(10); // wait 10ms before looping again. loop 100 times/second
}
Thanks and Appreciation:
Kevin Loughin (Old Techie) KB9RLW
http://kb9rlw.blogspot.co.za/2016/08/cheap-and-easy-to-build-digital-modes.html
Code:
/*
DuinoVOX. Ver.3.1.1 Arduino based PTT control for radio interfaces.
Written Aug. 2016 by Kevin Loughin. Originally for use
in a clone of the Tigertronics Signalink design idea.
*/
// Naming the pins I'm using for clarity.
const int audioInPin = A1; // Audio sense
const int tailsetInPin = A3; // delay time adjustment POT
const int sensitivity = A5; // threshold set POT
const int PTToutPin = 13; // output to keying transistor
// declaring variables that we'll use
int delayvalue = 0; // amount of time in hundreths of a second before dropping PTT
int threshold = 0; // audio trigger level initial value
int ptt = 0; // variable for holding current PTT delay countdown
int audio = 0; // variable that will hold audio sense
int PTT_ON; // Flag to indicate current PTT status
void setup() {
// Turn off PTT right away so we're not keying on startup
pinMode (PTToutPin, OUTPUT);
digitalWrite(PTToutPin, LOW);
PTT_ON = 0;
}
void loop()
{
// Here we go. First read the pots and set variables
delayvalue = analogRead(tailsetInPin) / 5; // yields 0 to 204
delayvalue = delayvalue + 2; // adjusted to no less than 2, 1 after first pass through loop
threshold = analogRead(sensitivity) * .8; // yields 0 to 819
threshold = threshold + 70; // adjusted 70 to 889
// Check for audio. Set delay if present
audio = analogRead(audioInPin);
if ( audio > threshold ) // if audio in exceeds sesitivity threshold.
{
ptt = delayvalue; // set ptt to current delay in hundredths of a second
}
// PTT control check
if ( ptt > 0 ) // if PTT is positive (loop is counting down)
{
if ( PTT_ON == 0 ) // check that we havn't already turned it on
{
digitalWrite(PTToutPin, HIGH); // turn on PTT if it's off
PTT_ON = 1; // so we don't waste time writing on next pass
}
ptt = ptt - 1; // count down in hundredths of a second
}
else // the counter reached zero.
{
if ( PTT_ON == 1 ) // check if we already turned it off
{
digitalWrite(PTToutPin, LOW); // turn off PTT
PTT_ON = 0; // Remeber that we've turned it off
}
}
delay(10); // wait 10ms before looping again. loop 100 times/second
}
Thanks and Appreciation:
Kevin Loughin (Old Techie) KB9RLW
http://kb9rlw.blogspot.co.za/2016/08/cheap-and-easy-to-build-digital-modes.html
I found the KB9RLW DuinoVox article that you were referring to: https://kb9rlw.blogspot.com/2016/08/cheap-and-easy-to-build-digital-modes.html
ReplyDeleteThere are two more computer-radio interfaces that I find fascinating:
WolphiLink - Android phones and tablets to radios http://www.wolphi.com/interface/
DRAWS - Raspberry Pi to radios http://nwdigitalradio.com/ The Raspberry Pi runs all sorts of different applications
Repeater Builder RIM http://www.repeater-builder.com/products/usb-rim.html
--Konrad, WA4OSH Bellevue, WA USA