I continue to experiment with the CAT control of the Si5351 with the simple DC receiver. I wanted to document the use of Omni-rig that I mentioned in the last post. After Omni-Rig is installed, HDSDR will be able to access the Omni-Rig setup screen below. You just select the rig type, the COM port the Arduino is on, and the baud rate (e.g. we are using 4800, but it can be changed in the code).
The best way to run it is to Sync the LO frequency and then check the sync to/from Omni-Rig as seen below. The you just click on the frequency and type in the frequency you want and press enter. Then you will see the span of frequencies based on your bandwidth setting. To tune around at this point, change the LO not the TUNE frequency. Your offsite will remain fixed based on the setting below. This works well for me at this point. I am able to use 192K sample rate which gives me more than 80 Khz (this is half of the 192 since this is not a true SDR which would center you and give you 80 below and 80 above)
There is a setting that positions the SDR cursor when you tune it. The default is 10000 hz or 10Khz, but you may want to adjust it to the best part of the pass-band. I find that 40khz is the lowest noise part of my pass-band for my setup. I have also been investigating noise issues that are caused by the PC's USB port. I will need to devise some filtering next. In the mean time I have found that placing an "un-powered" USB power block across the DC buss cuts most of the noise. I just use a USB cable that has the power pins broken out to pins plugged into the breadboard and plugged into the power block.
Here is the offsite screen with the default 10khz setting.
Saturday, March 14, 2015
Sunday, March 8, 2015
Prototype Radio IV - CAT Control
I mentioned to my friend Gary N6SER how cool it would be to write some code for the Arduino to control the Si5351 via the standard Computer Aided Transceiver (CAT) control. He used Ham Radio Deluxe HRD as his standard platform for testing and picked the Elecraft K2 to model. Here is the programming guide --> HERE. He got a basic sketch running that controlled frequency and Mode (e.g. CW, LSB, USB, etc). I then took his sketch and incorporated the Si5351 library to control the clock module. The idea is to build the simplest radio system and use the Arduino serial port to control it with already existing software that uses the CAT interface. No display is needed, no knobs, switches, etc. the software provides the front panel. The sketch has now been tested on my Prototype Radio with HRD version 5.x, FLRig, Commander, and most exciting - OmniRig with HDSDR. The choice of using the K2 was brilliant because it has one of the simplest command structures. There is more work to be done but it does work. One issue is that the Arduino connected to the computer couples a lot of noise sources into the prototype radio's simple direct conversion receiver. I had no problem tuning around with HDSDR and it controlling the local oscillator (LO) of the Si5351. The OmniRig integration with HDSDR worked great. Below is what the code looks like so far. I do have a simple LCD display on it for debugging purposes only.
1: #include <Wire.h>
2: //#include <Encoder.h>
3: #include "si5351.h"
4: #include <LiquidCrystal_I2C.h> // F Malpartida's NewLiquidCrystal library
5: #define I2C_ADDR 0x20 // Define I2C Address where the PCF8574A is
6: #define BACKLIGHT_PIN 7
7: #define En_pin 4
8: #define Rw_pin 5
9: #define Rs_pin 6
10: #define D4_pin 0
11: #define D5_pin 1
12: #define D6_pin 2
13: #define D7_pin 3
14: LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
15: Si5351 clockgen;
16: long int freq = 7040000; // In Hz
17: long int frequency = freq;
18: int mode = 1; //(1=LSB, 2=USB, 3=CW, 6=RTTY, 7=CW-REV, 9=RTTY-REV)
19: String received;
20: String command;
21: String parameter;
22: String sent;
23: const int ledPin = 11;
24: void setup()
25: {
26: // Setup for Ham Radio Deluxe 5.24.0.38
27: // Elecraft K2
28: Serial.begin(4800);
29: lcd.begin (8,2); // initialize the lcd
30: lcd.home();
31: lcd.print("CAT-RMT");
32: lcd.setCursor(0, 1);
33: lcd.print("v1.35");
34: delay(4000);
35: lcd.clear();
36: pinMode(ledPin, OUTPUT);
37: clockgen.init(SI5351_CRYSTAL_LOAD_8PF);
38: // Set CLK0 to output current value with a fixed PLL frequency
39: clockgen.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);
40: clockgen.set_freq(frequency, SI5351_PLL_FIXED, SI5351_CLK0);
41: }
42: void loop()
43: {
44: if(Serial.available() > 0)
45: {
46: received = Serial.readStringUntil(';');
47: received.toUpperCase();
48: received.replace("\n","");
49: command = received.substring(0,2);
50: parameter = received.substring(2,received.length());
51: if (command == "FA")
52: {
53: if (parameter != "")
54: {
55: freq = parameter.toInt();
56: frequency = freq;
57: clockgen.set_freq(frequency, SI5351_PLL_FIXED, SI5351_CLK0);
58: lcd.setCursor(0, 0);
59: lcd.print(frequency);
60: lcd.setCursor(0, 0);
61: }
62: sent = "FA" // Return 11 digit frequency in Hz.
63: + String("00000000000").substring(0,11-(String(freq).length()))
64: + String(freq) + ";";
65: }
66: else if (command == "IF")
67: {
68: sent = "IF" // Return 11 digit frequency in Hz.
69: + String("00000000000").substring(0,11-(String(freq).length()))
70: + String(freq) + String(" ") + "+" + "0000" + "0" + "0" + String(" ") + "00" + "0" + String(mode) + "0" + "0" + "0" + "0" + "01" + String(" ") + ";";
71: }
72: else if (command == "MD")
73: {
74: if (parameter != "")
75: {
76: mode = parameter.toInt();
77: //PrintToTft(String(mode),9);
78: lcd.setCursor(0, 1);
79: lcd.print(String(mode));
80: lcd.setCursor(0, 1);
81: }
82: sent = "MD"
83: + String(mode) + ";";
84: }
85: else if (command == "ID")
86: {
87: sent = "ID"
88: + String("017") + ";";
89: }
90: else if (command == "TX")
91: {
92: digitalWrite(ledPin, HIGH);
93: sent = command
94: + String(parameter) + ";";
95: }
96: else if (command == "RX")
97: {
98: digitalWrite(ledPin, LOW);
99: sent = command
100: + String(parameter) + ";";
101: }
102: else if (command == "SM")
103: {
104: sent = command
105: + String(parameter) + "0010" + ";";
106: }
107: else
108: {
109: sent = command
110: + String(parameter) + ";";
111: }
112: Serial.println(sent);
113: //PrintToTft(sent,5);
114: sent = String("");
115: }
116: }
Saturday, February 28, 2015
PFR-3A Field Tests
Using VMEPT and a Hellschreiber WAV file I set up a beacon to transmit every two minutes with my Yeasu FT-817. Then using a half-wave piece of wire (end-fed) and a counter poise wire, I used the PFR-3A as a receiver with the internal antenna tuner to test NVIS propagation around my QTH in a 10 mile radius.
I was able to successfully decode Hellschreiber in the field using my iPhone app HERE. I also connected a small amplified speaker and recorded the audio and used that with FLDIGI to produce the screen shot above. I had hoped to use the PFR-3A to decode FSQCall but the software is centered on 1000 hz verses the 600 hz center of the PFR-3A CW crystal filter.
Saturday, February 21, 2015
Prototype Radio III - WSPR RX
Using the prototype radio from THIS post I added a simple one stage 2N2222 audio amp and after working out the frequency offset of the Si5351 clock module I was able to get successful WSPR decodes. I am driving the audio from the amp directly into the mic input of the PC and using the WSPR v2.12 software. This new version has a I-Q mode that I am taking advantage of to bring the receiver pass band up in frequency a bit. This is normally used with a SDR like a softrock but it will also work with this simple direct conversion (DC) receiver. I am currently using a Fiq in the software of 3000hz (3Khz). This is to get the pass band out of the lower noise region of the DC receiver (sort of a low IF). I will try higher Fiq settings later to see if there is a difference (default is 12Khz).
This is the circuit I am using. Not shown is the Si5351 clock module and the 10db 50 ohm pad used to feed the VFO input. This circuit with my simple dipole antenna and the WSPR software has achieved decodes of station from 600 to over 3000 km on 30 meters today.
This is the circuit I am using. Not shown is the Si5351 clock module and the 10db 50 ohm pad used to feed the VFO input. This circuit with my simple dipole antenna and the WSPR software has achieved decodes of station from 600 to over 3000 km on 30 meters today.
This is my current Si5351 LO frequency shown below. I have not performed a calibration on my Si5351 yet which would allow the corrected frequency to be displayed (looks like it about 100hz low). This LO of 10.135.500 hz plus the 3khz I-Q mode IF of the WSPR software places me at the equivalent dial frequency of 10.138.700 hz and the WSPR tones begin 1500 hz above that with a frequency of 10.140.100 to 10.140.300 (a 200 hz wide bandwidth).
I continue to be impressed with the Si5351 clock module and this experiment validates its stability. I want to continue to work on this receiver to see how minimal I can make it. This receiver currently has no filtering to speak of outside of the antenna tuner I use to couple to my dipole. I plan to try plug-in band-pass filters and expand it in to a minimal transmitter as well.
Sunday, February 15, 2015
FSQ - Fast Simple QSO (chat) mode for HF and VHF
There is a new chat digital mode that is really slick that I have been testing. It's called FSQ for Fast Simple QSO. You can read all the details on FSQ <--HERE on ZL1BPU/ZL2AFP's web link. This mode has four speeds 6, 4.5, 3 and 2 baud. Sensitivity is believed to be about -13 dB SNR at 6 baud, and -16 dB SNR at 3 baud. That's about 10dB better and several times faster than 12 WPM Morse. The speed setting only effects the transmit speed of the app and when monitoring it will capture any for the four speeds on receive (auto-speed adjust).
The coolest feature is SELCAL. You can have it monitoring on a frequency and it will not print anything unless the message is addressed to your call sign. There are many other features with SELCAL as well including the ability to query another station to get your signal strength, their location, etc. For being a Beta version it works pretty well. I have just been testing "Acoustically Coupled" between two PC across the room so the next step is to try it on the air. It will be interesting to see if this is usable as a QRP NVIS mode. I plan to test it on receive with a 600 Hz CW filter.
The coolest feature is SELCAL. You can have it monitoring on a frequency and it will not print anything unless the message is addressed to your call sign. There are many other features with SELCAL as well including the ability to query another station to get your signal strength, their location, etc. For being a Beta version it works pretty well. I have just been testing "Acoustically Coupled" between two PC across the room so the next step is to try it on the air. It will be interesting to see if this is usable as a QRP NVIS mode. I plan to test it on receive with a 600 Hz CW filter.
Sunday, February 8, 2015
Balloon RDF Transmitter Package
My club W6SCE is planning a balloon launch and I am providing a backup tracking solution. The solution is a Squawkbox 2 packaged in a foamcore box with a dipole antenna made from music wire and a Lithium 9 volt battery. The transmitter draws 60 mA when on so with a 600 mAh battery, thats a good 10 hours since it will be transmitting every 10 secs for 5 seconds.
The completed package weighs just 5 ounces.Here it is hanging in the operating position. The antenna is horizontally polarized which should be fine since we will be using DF antennas.
The completed package weighs just 5 ounces.Here it is hanging in the operating position. The antenna is horizontally polarized which should be fine since we will be using DF antennas.
Tuesday, February 3, 2015
Prototype Radio II
I continued on the proto-board radio modules and constructed the first version of a direct conversion receiver. In the picture item #1 is the LCD I2C display, #2 is the rotary encoder, #3 is the Teensy 2.0, #4 is the SA612 mixer, and #5 is a 10 db attenuator pad for the Si5351 clock module to the right of the teensy. I drove a amplified speaker right from the output of the mixer. This does work and I copied strong CW and SSB signals.
A audio buffer amp is needed and tests will be done with SDR software next weekend.
A audio buffer amp is needed and tests will be done with SDR software next weekend.
Subscribe to:
Comments (Atom)







