17/04/2017

Short SOTA tour and DIRAGE ham rally (part 2)

The day after my short SOTA tour was the DIRAGE ham rally in Diest.

Not so much to tell about the rally itself, I guess you know the picture ... a hall filled with mainly middle aged to "old" men (with some exceptions) ... and row after row of tables filled with "stuff" a ham may or may not need.



After buying a couple of items I really DID need, I went to look for the SOTA booth which was on the first floor of the building. Peter ON4UP had set up a nice exhibit of SOTA related items, with a backpack, boots,equipment, pictures, videos etc..

ON7PX - ON9CBQ - ON4UP (picture by ON4UP)
This was of course also the celebration of 10 YEARS SOTA in BELGIUM, so all the flags and balloons made it a SOTA Party !

[NOTE : left in the above picture is Walter, ON7PX. Sadly enough, he went SK in 2018]

I had brought my SOTA "umbrella with integrated operating table" , and some homebrew battery packs, which drew a lot of interest from the others.

(picture by ON4UP)
And I could finally meet and see to whom  some familiar voices really belonged.
Some of the top guns were there : Karel ON4FI , Belgians number one chaser ,
ON5SWA, ON6UU, OT6V, all three also very active in activating ONFF.
And of course Peters' eternal companion in crime, and Belgians TOP ACTIVATOR ... Franz, ON9CBQ/DL3RBF was there too !
I can't name them all, but in total we were with 18 Belgian SOTA activators.

Here a group picture of some of these fine gentlemen ...

(picture by ON4UP)

After a most enjoyable day, I went back to Ostend ... and that's the end of a short SOTA weekend !
See you next time !

73,

Luc ON7DQ


Short SOTA tour and DIRAGE ham rally (part 1)

I wanted to attend the DIRAGE in Diest, some 170 km from my home.
This ham rally is one of the larger ones in Belgium, hosted by the UBA section DST (see info here https://dirage.be/).

At the rally , Peter ON4UP had promised to organize a meeting for Belgian SOTA activators. So this was the chance to meet in person some of the people I had never seen in my life, but may had worked in a S2S qso, or chased from home.
Peter was also setting up a booth about SOTA, to "spread the word ...".

I combined this visit with a couple of SOTA summits of course.

I was also lucky to visit one of my ex-students, Bart ON4DGT, who lives in the area, and meet his lovely family. They even let me stay the night there, saving me the price for a hotel or BnB.

So it was a "three-in-one" trip , hi.

ON/ON-029 St Barde et Tonne

This summit needs some walking, I did ascend it in 10 minutes, and in 7 minutes I was back at the car.
I parked in the Rue Sergent Merx , at position 50.658570, 5.560859



The entrance to the wooded track is somewhat difficult to find, but it is where the Rue Sergent Merx meets the Rue Naniot. There was a track on OSM, but the first part is overgrown, and people have made a shortcut which you better use. See map below.



There is a good track by G4OBK on the SMP site.

At the summit, there are plenty of places to set up. I was there early morning, and while setting up,  a fox came looking what I was doing there ... unfortunately I was too late to take a picture of it.
So I used a lttle bit of trickery ... can you notice that I'm no good at PhotoShop ?



Apparently, I was better at luring that fox out of its hole, than luring the chasers ... I started calling CQ at 06:35 UTC .. and only got my first chaser at 07:00 ... Mariusz SP9AMH came in with 529 on 40m CW.
In total I could only catch 7 chasers in 40 minutes of endless cq'ing ... so I packed up and went to the next summit ...

PA/PA-003 (Observant (Sint Pietersberg))

This is one of my favorite summits in the area, and since it is now the only remaining summit in the South of The Netherlands, I just had to pay it another visit.
If you drive carefully, you can get to this parking spot : 50.812408, 5.682566

UPDATE 2020/06/28: it is still possible to drive to this parking spot, I have seen several cars doing it. But it is not allowed any more!
My suggestion is to drive to, and park at this position : 50.806349, 5.679418

The road starts in the village of Kanne (in Belgium): follow the Bovenstraat south, it turns into a 2 stripes of  concrete called the Castertweg, drive this slowly to the end, and park to the right, just before the prohibition sign.

Now you will have to walk the gravel road, the first part is still called Castertweg, then at the junction, continue straight ahead, now it's called the Silexweg. Keep following it according to the map below, until you reach the old parking spot. It will take only about 10 minutes more than before, a good exercise, hi.



From there it is a short but rather steep walk to the summit, I did it in 11 minutes, and 7 minutes back to the old parking spot. The summit is at 50.813548, 5.688856.
I have posted a new track on the SMP.

If you don't like doing the last steep part with the stairs, you can make a detour around the summit and reach it on a gentler slope. Just watch out for the mountainbikers who use this summit a lot, especially on weekends.


Here some views along the track.

The three way junction where you have to take the middle one ... the steepest of course !



And here comes the Stairway to "SOTA" Heaven ... at the end you're on the summit.



Enjoy the views in 5 directions ... (here the castle Chateau Neercanne)



There is plenty of space to set up, I used a nice bench near the trig point.
I fixed my fishing pole with link dipole to the back of the bench with bungee cords, and set up the KX3 on the bench.



This time the chasers were well awake !
I started calling at 09:00 UTC, and ended the activation 1 hour and 30 minutes later, with 40 qso's in the log, including two S2S.

Leaving the summit at 10:45 UTC , I still had one summit on my list ... but first went for some food in a nice restaurant in Kanne. I won't publish my "secret address" here, but here's a hint : they serve yummy ICE CREAM too ..  (send me a mail if you can't figure it out ;-)




ON/ON-028 (Noordelijke terril Waterschei)

This summit is best done on a weekday. Free parking is at the Luminus Arena , a football stadium.
Park here : 51.006741, 5.537109 , this is close to the start of the track.
In the weekend the parking lot will be full, maybe not free, and full of football fans, and not sure if they love SOTA ...

The first part is a nice and easy walk, but the last part is really steep, the soil is loose and mainly coal dust ( a "terril" is a slag heap, there are links with info in the SOTA Database).
If you have a walking stick (or 2) , it will be handy to take it with you.
I went up in 25 minutes, and back at the car in 20 minutes.



There is not much room at the summit, but the 360° view is very nice.

First I tried some 2m FM with a roll-up Slim Jim that slides over the fishing pole.
Using only 5W from my FT1D resulted in only one qso, so I quickly switched to HF.


Slim Jim on 6m pole

Setting up a link dipole is a bit tricky, I had to descend the summit a little both sides, to reach a tree where I could tie the end ropes. A vertical or endfed that needs only one fixing point would be easier on this summit.

Link Dipole on 6m pole
Also my ground anchor didn't go deep into the ground, so had to use some bungee cords again.



HF gave me 16 more qso's , all on 40m CW.

And that was the end of day one of my short trip ... continue reading in part 2 here 






03/04/2017

My KX3 TicTacMic !


KX3 Microphone with frequency display 

This project came about in the spring of 2016, but I never got to post it here.
At the time there was a discussion going on in the KX3 Yahoo group. about using a KX3 or KX2 for “HF Packing” (pedestrian mobile).

Wayne, N6KR, one of the owners of the Elecraft company, said it was a pity that you couldn’t see the display if you keep the rig in your backpack … so could an external microphone with a display be made ?

Was he serious or not, I don’t know, but it got me thinking … this should be easy with an Arduino !
So I picked some stuff : an Arduino Nano, a small OLED display, a miniature electret microphone, some pushbuttons, resistors, … and started experimenting.

Of course I also needed a small and light box to put it all in, and saw a box of TicTac’s  in my favourite colour … ORANGE … and here we are : the KX3 “TIC TAC” Microphone was born.



The orange box turned out to be a mistake, it made the display less visible, so for anyone building this project, better look for a box with a clear display.

The HARDWARE

The circuit is very simple :



The microphone part of the circuit is wired like the standard MH3 microphone*, with an electret MIC element going straight to the MIC and analog GND (resistors and a cap are provided inside the KX3). The UP and DOWN buttons (with resistors), and a PTT button go to the PTT input and digital GND. All this is connected with one half of a cable with a right-angle 4-pin TRRS connector I found on eBay.
[* One small difference : I didn’t use a toggle switch for the PTT, in the MH3 this disconnects the UP/DN buttons in  TX, but since they are shorted out anyway, there is no practical difference]

The serial communication to the KX3 ACC1 port is very simple too.
Most circuits use a MAX232 integrated circuit, but I found a simpler (and much cheaper !) way. 
The KX3 accepts TTL signals at its input without any problem, but the signals coming out of the KX3 are around 7V, too high for an Arduino. So for this I used a voltage divider with two resistors.
At the beginning I couldn’t get this circuit to work … until I realized that a MAX232 is not only converting RS232 to TTL levels, but also INVERTING the signals !
Luckily, the Arduino SoftwareSerial constructor has an optional argument to do just that : invert the signals … problem solved ! (see Arduino code below)

The Arduino reads the 4 programmable buttons via analog input A0. The buttons are wired along a series of resistors, forming a voltage divider chain. Each button press grounds another connection, generating another voltage on A0, so that it can be determined which button was pressed.

The OLED display is wired to the I2C bus on pins A4 (SDA) and A5(SCL), plus needs 5V and GND too.


I mounted everything on a thin single-sided PCB, ground plane on the back.
Arduinos from eBay typically come with some loose pins (not soldered), so I only mounted pins in the holes that I needed, and carefully drilled the holes for those pins. The pins that connect to GND are soldered directly to the back plane. Holes for the other pins are chamfered so they don’t touch the ground plane.


All connections were then made from pin to pin, Manhattan style ... since it was only a prototype.
Also, I was in a hurry to show off this project to Wayne at the Hamradio 2016 in Friedrichshafen.

As it turned out, Wayne was not at the fair, but Eric, WA6HHQ was … so I was able to show it to him and he looked interested. 
We had a nice chat, and Eric took some pictures of my little “baby” …  hi.
Of course I had to have a “selfie” with Eric in return !



Software 
[thanks to Tony N0RUA for getting me started with some code for reading info from a KX3]

For the test , I just programmed the display to show the operating frequency, and the buttons to send the first 4 keyer memories (for VOICE only the first two would be useable).
The mode display is not implemented yet. If you know your way around the Arduino, you can program the 4 PFn buttons to operate a full Menu , with options and settings, not limited to : switching bands, modes, power level, tuning rate, … and show all that info on the display.

Here the display with a power-on message, and a few seconds later the KX3 is set to 14.062 CW 
(now that I think about it, a bit stupid if you make a "microphone" ... but of course you could also have a paddle connected to the KX in your backpack ;-) :




After pressing the DOWN button for a while, the display shows the new frequency :


See code below, most should be clear from the comments. If not, feel free to ask more info in the comments section, or mail me direct to my address on QRZ.com

I also added comments what you should change for a KX2. I haven’t investigated if I can make a detection of what rig is connected, KX3 or KX2, and make it “auto switching”. 
I’ll leave that to the “wizards” at Elecraft, hi.

Have fun if you make this project ! And of course you may always send me a picture; I’ll gladly post it here.

73 – Luc ON7DQ (KF0CR)


Arduino Sketch :
// KX3 external Display with Remote Control
// by Luc - ON7DQ/KF0CR
// Project started : 6 June 2016
// Last revision : 18 June 2016

// What you need : a KX3 (or KX2) , of course !
// Arduino Nano
// Oled Display 128x64 pixels, Blue or Yelloww/Blue
// Any number of buttons on A0 (voltage divider trick)

// Libraries needed
#include <Wire.h> // needed for I2C
#include <SPI.h>
#include <SoftwareSerial.h>  // for comms to KX3
// replaced the Graphics libs by ASCII only libs >> lots of memory saved !
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"

// KX3 Serial comms
#define BAUD_RATE 9600       // KX3 serial speed
#define LOOP_DELAY 500       // determines rate of polling the KX3

// serial connection to the KX3 :
// RX = KX3 to PC  : to pin 6 via voltage divider (3k9 in series/10k to ground)
// TX = PC to KX3  : direct to pin 7
SoftwareSerial mySerial(6, 7, true);  // (RX, TX, invert)
                                      // invert the bits because no MAX232 is used

// The Oled Display
SSD1306AsciiWire oled;

// 4 buttons + resistor divider chain go to analog pin A0
// define button names
#define btn0      0
#define btn1      1
#define btn2      2
#define btn3      3
#define btnNONE   4

String str = "", freq = "";
char   ch;
int adc_key_in  = 0;
int key         = 0;

void setup()
{
  Serial.begin(9600);
  Serial.println(F("KX3 TicTacMic by ON7DQ"));
  
  // initialize I2C and OLED display
  Wire.begin();
  oled.begin(&Adafruit128x64, 0x3C);
  oled.setFont(Arial_bold_14);
  oled.clear();
  oled.println("ON7DQ TicTacMic");
  oled.println("  for KX3   ");
  delay (2000);
  oled.clear();
  oled.print("FREQ - MODE"); // note : mode not implemented yet

  // connect to KX3
  mySerial.begin(BAUD_RATE);
  mySerial.println("AI0;"); // disable auto info on the KX3
  //  option : do other settings in KX3 (not used here)
  mySerial.println("FA00014062000;"); // set VFO A to some frequency
  mySerial.println("MD3;"); // set CW mode ...
  //  other examples :
  //  mySerial.println("MD6;"); // set DATA mode ...
  //  mySerial.println("DT3;"); // then set submode for PSK-D
  //  mySerial.println("KY VVV DE ON7DQ;"); // send a test msg
  
}

void loop()
{ showFrequencyAndMode(); // mode not implemented yet

  key = read_LCD_buttons();

  switch (key)   // depending on which button was pushed, we perform an action
  {
    case btn0:
      {
        mySerial.println("SWT11;SWT19;"); // send msg 1
        break;
      }
    case btn1:
      {
        mySerial.println("SWT11;SWT27;"); // send msg 2
        break;
      }
    case btn2:
      {
        mySerial.println("SWT11;SWT20;"); // send msg 3
        break;
      }
    case btn3:
      {
        mySerial.println("SWT11;SWT28;"); // send msg 4
                                          // change to  "SWT11;SWT16;" for KX2
        break;
      }
    case btnNONE:
      {
        // do nothing (for now)
        break;
      }
  }
  delay(LOOP_DELAY);
}


// ********** functions

// read the buttons
int read_LCD_buttons()
{
  int adc_key_in = 0;
  for (int i = 0; i < 3; i++) {
    adc_key_in += analogRead(0);      // read the value from the buttons on pin 5 = A0
    delay(2);
  }
  adc_key_in /= 3; // average from 3 reads

  // for checking actual key values :
  //Serial.print ("Key value : ");
  //Serial.println (adc_key_in); delay(100);
  
  // my buttons when read are centered at these values: 0, 131, 319, and 495
  // we add approx 50 to those values and check to see if we are close
  if (adc_key_in > 1000) return btnNONE; 
    // We make this the 1st option for speed reasons since it will be the most likely result
  if (adc_key_in < 50)   return btn3;
  if (adc_key_in < 180)  return btn2;
  if (adc_key_in < 370)  return btn1;
  if (adc_key_in < 550)  return btn0;
  return btnNONE;  // when all else fails, return this...
}

// Display frequency (mode not implemented yet)
void showFrequencyAndMode() {
  //get FREQUENCY
  mySerial.println("FA;");
  // wait for FA00000000000;
  while (mySerial.available() > 0 ) {
    ch = mySerial.read();
    if (ch != ';') str += ch;
    else {
      freq = formatFrequency(str);
      str = "";
    }
  }

  // send to display
  
  oled.setCursor(0, 2);
  oled.clearToEOL();
  oled.print(freq);
}

String formatFrequency(String vfo) {
  String freq = "";

  // e.g. convert '07' to '7'
  freq += String(vfo.substring(5, 7).toInt());

  //freq += ".";
  freq += vfo.substring(7, 10);
  freq += ".";
  freq += vfo.substring(10, 12);
  Serial.print(F("F="));
  Serial.println(freq);
  return freq;
}