Tuesday, July 19, 2016

Amateur Contact Log, HDSDR & The RSP SDR

Amateur Contact Log is my logger of choice since March of 2016. I did try LOG4OM & Ham Radio Deluxe along with a few other package. Since I'm only a General class ham and I primarily chase DX... Amateur Contact Log had one important DX cluster feature that I could not find in any of the other packages "Only show DX spots that are in the General portion of the USA band allocation". Basically that is my fail-safe that I don't go outside of my frequency band-plan when using the built in DX Cluster viewer. It will only show DX spots for frequencies that are within the General class privileges.

Now that the first issue was solved I had another big one. Amateur Contact Log does not support Omni-Rig. Without Omni-Rig I can't synch my SDR frontend (HDSDR) to my logger and visa versa.

Coming from a heavy SDR background I felt a little limited with all the SDR equipment I own. Amateur Contact Log only supports direct serial control of the rig and locks the port.

I Finally got everything working. Big thank you to my good friend Paul (NN4F) for the heads up about Virtual Serial Ports Emulator.

Below is a complete walk-threw/how-to for setting up Amateur Contact Log & HDSDR with full rig control with complete bi-directional communication You can apply this how-to with any logger that does not support Omni-Rig and uses direct serial rig control.

First I will start with the links to all the needed apps. This has only been tested on Windows-7 64bit. I'm not sure if  Virtual Serial Ports Emulator will work with anything above Windows 7.

Amateur Contact Log $25.00 (Ham radio logging software and rig control within the logger)
Virtual Serial Ports Emulator 32bit Free 64bit $25.00 (Virtual com port/com port sharing)
HDSDR Free (SDR front end app)
Omni-Rig Free (Rig control to and from HDSDR)

I will assume a few things before we start.

1: You have a SDR and a RF Sense switch that is properly configured to put your SDR'S input to ground when you key up your rig. I don't want you to fry your SDR'S front end. This will also work with a rig that has the IF tapped.

2: You have HDSDR installed and configured. You can read the guide I did for SDRplay using the RSP in HDSDR by clicking here.

3: You know the real com port your computer is using for rig control. In my case its COM 7 for control. Check your device manager.

Step A: Install Virtual Serial Ports Emulator. Some issues have been posted when making a virtual com port above COM 9. I would suggest you make your VCP COM 9 or lower. In this setup I also used COM 9.

1-Launch Virtual Serial Ports Emulator.
Click the button labeled: Create new device

Select Splitter & Next

Under Data source select your real com port that has rig control. Assign it a virtual com port below COM 10 if possible. Select settings and match the speed of the real com port to the virtual com port. My rig and real com port are set for 38400. Check your rigs manual for com port speed. 

You should now see the settings we just configured with the lower box showing Initialization OK (1).

Save your settings to the desktop. I named my setup as "Radio"

Move the settings file we just saved to the desktop (Radio) and move it to the startup folder. This will save us from having to remember to launch the VCP every time we want to use our rig along with HDSDR and the logger.

Step B: Install Amateur Contact Log
1
Configure ACL'S Rig Control. This is under settings and rig control.
Remember we are using the VCP com port which is now COM 9.

Step C: Install Omni-Rig.
1: Configure Omni-Rig. Launch Omni-Rig and Edit Rig 1.
Remember we are using the VCP com port which is now COM 9.

Step D: Install HDSDR
1: Configure HDSDR to use OMNI-RIG
Select options (F7) CAT to Radio (Omni-Rig).

Select options again (F7) select TX checking off the above two options. We now have a new button on the main HDSDR screen labeled TX. This button will trigger the radios PTT circuit (microphone). This gives me lot's of options with a wireless customer controller :)

Harmony...




If you found this step by step useful throw a buck in the jar.
Click the button below. It's a fixed amount of $1.00
 

Thursday, July 14, 2016

$5.00 tuning knob for SDRuno


Here it is. The complete plans and parts to make your very own tuning knob for SDRuno. You can edit the code to make it work with other frontends but since I do a lot of testing and work for SDRplay I will only release SDRuno devices from now own. The parts are very inexpensive. The video below was taken on my cell phone only to show the proof of concept. You can make use of the rotary encoder button but I decide to keep in very basic. I deleted 2 byte codes in the source code. I would like you to explore and learn about how these micro controllers work. It's really not that hard. Have fun. The 2 byte codes needed are at the bottom. remove the // and enter the needed codes in the FIND ME section (source code lines 97 & 102). Have fun.


1a Digispark ATTINY85 $1.59
2a Keyes-040 Rotary Encoder $1.59

If you would like more background information about the 2 boards here are 2 links with really good information.
Rotary Encoder
Digispark

The connections are as follows.
Keyes-040 Gnd to ATTINY85 Gnd
Keyes-040 + to ATTINY8 5v
Keyes-040 SW=No Connection
Keyes-040 DT to ATTINY8 Pin 0
Keyes-040 CLK to ATTINY8 Pin 2

You will need 4 pieces of software

1a The ATTINY85 Drivers
2a The Arduino IDE
3a The Adafruit Trinket Drivers
4a My source code (posted below)



1a Before you plug in the ATTINY85 you will need to install the drivers.If your on a 64bit flavor of windows double click DPinst64.exe If your on a 32bit system double click DPinst.exe. After the drivers install. Reboot and plug in the Digispark.

2a Install the Arduino IDE from the link above. Follow the directions in this link to add the Digispark boards to the Arduino IDE. Make sure after you finish all 4 steps and your ready to upload the code you need to select Digispark default-16.5Mhz under tools/board when uploading my sketch in the Arduino IDE.

3a Download the master.zip from github. move the folder called TrinketHidCombo from Adafruit-Trinket-USB-master to Documents\Arduino\libraries.

4a Don't forget. Lines 97 & 102 are missing byte codes. You will need to explore a little bit and find the missing codes :) I can't force you to like electronics or micro controllers but it really is a lot of fun when you can prototype any idea you might have.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
#include "TrinketHidCombo.h"
 
#define PIN_ENCODER_A 0
#define PIN_ENCODER_B 2
#define TRINKET_PINx  PINB
 
static uint8_t enc_prev_pos = 0;
static uint8_t enc_flags    = 0;
 
void setup()
{
  // set pins as input with internal pull-up resistors enabled
  pinMode(PIN_ENCODER_A, INPUT);
  pinMode(PIN_ENCODER_B, INPUT);
  digitalWrite(PIN_ENCODER_A, HIGH);
  digitalWrite(PIN_ENCODER_B, HIGH);
 
  TrinketHidCombo.begin(); // start the USB device engine and enumerate
 
  // get an initial reading on the encoder pins
  if (digitalRead(PIN_ENCODER_A) == LOW) {
    enc_prev_pos |= (1 << 0);
  }
  if (digitalRead(PIN_ENCODER_B) == LOW) {
    enc_prev_pos |= (1 << 1);
  }
}
 
void loop()
{
  int8_t enc_action = 0; // 1 or -1 if moved, sign is direction
 
  // note: for better performance, the code will now use
  // direct port access techniques
  // http://www.arduino.cc/en/Reference/PortManipulation
  uint8_t enc_cur_pos = 0;
  // read in the encoder state first
  if (bit_is_clear(TRINKET_PINx, PIN_ENCODER_A)) {
    enc_cur_pos |= (1 << 0);
  }
  if (bit_is_clear(TRINKET_PINx, PIN_ENCODER_B)) {
    enc_cur_pos |= (1 << 1);
  }
 
  // if any rotation at all
  if (enc_cur_pos != enc_prev_pos)
  {
    if (enc_prev_pos == 0x00)
    {
      // this is the first edge
      if (enc_cur_pos == 0x01) {
        enc_flags |= (1 << 0);
      }
      else if (enc_cur_pos == 0x02) {
        enc_flags |= (1 << 1);
      }
    }
 
    if (enc_cur_pos == 0x03)
    {
      // this is when the encoder is in the middle of a "step"
      enc_flags |= (1 << 4);
    }
    else if (enc_cur_pos == 0x00)
    {
      // this is the final edge
      if (enc_prev_pos == 0x02) {
        enc_flags |= (1 << 2);
      }
      else if (enc_prev_pos == 0x01) {
        enc_flags |= (1 << 3);
      }
 
      // check the first and last edge
      // or maybe one edge is missing, if missing then require the middle state
      // this will reject bounces and false movements
      if (bit_is_set(enc_flags, 0) && (bit_is_set(enc_flags, 2) || bit_is_set(enc_flags, 4))) {
        enc_action = 1;
      }
      else if (bit_is_set(enc_flags, 2) && (bit_is_set(enc_flags, 0) || bit_is_set(enc_flags, 4))) {
        enc_action = 1;
      }
      else if (bit_is_set(enc_flags, 1) && (bit_is_set(enc_flags, 3) || bit_is_set(enc_flags, 4))) {
        enc_action = -1;
      }
      else if (bit_is_set(enc_flags, 3) && (bit_is_set(enc_flags, 1) || bit_is_set(enc_flags, 4))) {
        enc_action = -1;
      }
 
      enc_flags = 0; // reset for next time
    }
  }
 
  enc_prev_pos = enc_cur_pos;
 
  if (enc_action > 0) {
     //TrinketHidCombo.pressKey(0x00,FIND ME);
    TrinketHidCombo.pressKey(0,0);
    delay(10);
  }
  else if (enc_action < 0) {
     //TrinketHidCombo.pressKey(0x00,FIND ME);
    TrinketHidCombo.pressKey(0,0);
    delay(10);
    }
  else {
    TrinketHidCombo.poll(); // do nothing, check if USB needs anything done
  }
}


If you found this step by step useful throw a buck in the jar.
Click the button below. It's a fixed amount of $1.00
 

Sunday, July 10, 2016

FT-450D Punch through the pileup v2

2 months ago I added the 5 band EQ from UR6QW. I knew the designer had a better model and eventually I wanted to upgrade. Both the 5 band and 8 band EQ allow you a tremendous amount of audio shaping control to your transmit signal. The compression alone will add's a lot of audio punch you just can't get from the 450D alone.



Before I purchased the 8 band EQ. I upgraded my stock MH-31 mic to the desktop MD-100 mic. Huge improvement from the stock 450D mic. One concern I had was that the MD-100 might be to much mic for the 8 band EQ. Not the case at all.






I have the MD-100 mic set to the following.
Thru is on/High Emphasis is on
/Low cut is set to 2

The 450D is set as the following.
Mic gain is normal/EQ is set to 0






When you chase DX and your only running 100w with conditions being a challenge every little bit helps. I'm very happy with 2nd version EQ upgrade.

The adjustable ranges are available +/- 6dB
80Hz 160Hz 250Hz 500Hz 900Hz 1500Hz 2500Hz 3200Hz

Here are the links for more information
UR6QW 5-band
UR6QW 8-band


What I personally like:
Solid all metal construction
Amazing support from the designer.
8 different frequency ranges of adjustment.
Independent mic input and output controls.
Simple setup & very easy to use
Very punchy range of adjustable compression.

What I don't like:
It's not cheap.