Arduino Leonardo external keypad

Am I the only one finding it difficult to find the ctrl-alt-down key combination to tune to the next mult in N1MM+ logger when I am 30hrs into a contest?

This is the solution I made for it: an extra keypad that emulates these key combinations (or whatever key combination you want to program):

Arduino keypad closeup

Arduino keypad internals 1

2016-03-26 09.29.12

The core is an Arduino Leonardo with a 12 key keypad. These keypads can be salvaged out of an old phone or purchased online. Of course if you need less keys you can use pushbuttons also.

I printed the case with my Delta Rocket 3d-printer.

For the complete beginners with Arduino there is a lot to be found on the net. I found this Instructable very helpful.

This is a pretty easy project, the 2 hardest things are to figure out how the matrix of the keypad is to be wired and what keycodes you need to send to the computer.

In most helpfiles for the Arduino they say that the Leonardo sends ASCII to the computer but this is not true. In fact the Leonardo sends keycodes and they are based on the configuration of the ‘real’ keyboard that is connected and configured in Windows (or any other operating system I guess). As far as I could test the Leonardo uses the same keyboard ‘layout’ as the standard US QWERTY keyboard. So for us Belgians with our AZERTY keyboards it’s not as simple. I had to try out dozens of combinations before finding the correct ones.

For now this is the code I use (not all keys are implemented as of now):

/*
ON5MF/OQ6A Arduino Leonardo Keypad

I did not really 'invent' this myself, I only implemented stuff found on the net. Please feel free to use,
copy, enhance this code at your own will.

If you use it for commercial purposes I'd like to receive at least 50% of the gains ;-)

If you like the code or if you find some enhancements or improvements please let me know.

73 es have fun with it.

Jurgen ON5MF
www.on5mf.be
*/

/*
v001 = testing if keypad works
v002 = added ctrl-left and ctrl-right
v003 = next spot up and down
*/

/* keys and functions
 1  next spot up left radio   ! ctrl-left ctrl-up
 2  Escape                    ! esc
 3  next spot up right radio  ! ctrl-right ctrl-up
 4  next spot dwn left radio  ! ctrl-left ctrl-dwn
 5  back to CQ frequency      ! alt-Q
 6  next spot dwn right radio ! ctrl-right ctrl-dwn
 7  next mult up left radio   ! ctrl-left ctrl-alt-up
 8  turn rotator              ! alt-j
 9  next mult up right radio  ! ctrl-right ctrl-alt-up
 0  swap radios               ! alt-F5
 *  next mult dwn left radio  ! ctrl-left ctrl-alt-dwn
 #  next mult dwn right radio ! ctrl-right ctrl-alt-dwn
 */

//Libraries
#include <Keypad.h>
//----- end of libraries

//Constants
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
//----- end of constants

//Variables
//define the symbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}     //ok
};
byte rowPins[ROWS] = {4, 9, 8, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 3, 7}; //connect to the column pinouts of the keypad
char ctrlKey = KEY_LEFT_CTRL;
char leftKey = KEY_LEFT_ARROW;
char rightKey = KEY_RIGHT_ARROW;
char upKey = KEY_UP_ARROW;
char downKey = KEY_DOWN_ARROW;
//----- end of variables

//initialise Keypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
//----- end o initialise Keypad

void setup() {
  Serial.begin(9600);
  Keyboard.begin();
}

void loop() {
  char customKey = customKeypad.getKey();
  if (customKey == '1') {
    Keyboard.press(ctrlKey);
    Keyboard.press(leftKey);
    delay(100);
    Keyboard.releaseAll();
    delay(100);
    Keyboard.press(ctrlKey);
    Keyboard.press(upKey);
    delay(100);
    Keyboard.releaseAll();
  }
  if (customKey == '4') {
    Keyboard.press(ctrlKey);
    Keyboard.press(leftKey);
    delay(100);
    Keyboard.releaseAll();
    delay(100);
    Keyboard.press(ctrlKey);
    Keyboard.press(downKey);
    delay(100);
    Keyboard.releaseAll();
  }
  if (customKey == '7') {
    Keyboard.press(ctrlKey);
    Keyboard.press(leftKey);
    delay(100);
    Keyboard.releaseAll();
  }
  if (customKey == '*') {
    Keyboard.press(ctrlKey);
    Keyboard.press(leftKey);
    delay(100);
    Keyboard.releaseAll();
  }
  if (customKey == '3') {
    Keyboard.press(ctrlKey);
    Keyboard.press(rightKey);
    delay(100);
    Keyboard.releaseAll();
    delay(100);
    Keyboard.press(ctrlKey);
    Keyboard.press(upKey);
    delay(100);
    Keyboard.releaseAll();
  }
  if (customKey == '6') {
    Keyboard.press(ctrlKey);
    Keyboard.press(rightKey);
    delay(100);
    Keyboard.releaseAll();
    delay(100);
    Keyboard.press(ctrlKey);
    Keyboard.press(downKey);
    delay(100);
    Keyboard.releaseAll();
  }
  if (customKey == '9') {
    Keyboard.press(ctrlKey);
    Keyboard.press(rightKey);
    delay(100);
    Keyboard.releaseAll();
  }
  if (customKey == '#') {
    Keyboard.press(ctrlKey);
    Keyboard.press(rightKey);
    delay(100);
    Keyboard.releaseAll();
  }
}

SSB Fieldday 2014

I wanted to prove to myself I could do a full fieldday (set up the station, operate 24 hours and tear down the station) without any help from anyone else. A few days ago I received the plaque for my first place in the QRP class. Thanks UBA!

Fieldday 2014

I wrote an article for CQ-QSO about my experiences in the fieldday but I haven’t found any time to translate it to English yet. Members of the UBA can read it on the UBA website in dutch or french.

I’m looking forward to work you all in the next UBA SSB fieldday first weekend of september!

Inrad HF Triplexer more news…

The news is… there is no news. 🙁

On august 30. I received an e-mail from Appellofunk (the dealer where I bought the triplexer) stating: “if you like please open the TriPlexer to see what happend.”

So that’s what I did and that same day I sent them pictures of the inside of the triplexer showing at least 2 burned (probably more) SMD capacitors.

Since then, no more news.

E-mail between Germany (Apellofunk) and the US (Inrad) must be going by boat I guess…

Pretty frustrating!

 

Inrad HF Triplexer

My new contest secret weapon worked very well… for exactly 1 QSO.

For the moment I have only these (permanent) antennas for contesting: a Fritzel FB33 3-element tribander at 16m and homemade inverted V dipoles for 40 and 80m at 15m.

So for SO2R I have always used an extra Fritzel GPA404 vertical for 10-15-20-40m. But to avoid the hassle of installing this antenna before the contest and taking it down after the contest I recently decided to purchase an Inrad HF Triplexer so I could use the FB33 on 2 bands simultaneously.

Last week I had the specs of the Triplexer tested by Luc ON7KZ and all seemed to match the specs as in the Inrad web page.

I installed the triplexer between my Sixpak and the FB33 the day before the contest but I didn’t have enough time to thoroughly test it. (I did check all connections twice though!)

Once the SCC Rtty championship started I made a S&P QSO on 20m and during the QSO I saw the SWR on 20m going up to alarming levels :-(.

Continue reading Inrad HF Triplexer

I doubled, even nearly tripled the number of CW QSOs in my log…

Some 18 years after I passed the Belgian 12 wpm morse exam I decided to dust of my 1995 Schurr Profi 2 and start making some CW QSO’s again. So last weekend I worked 42 stations during the IARU HF contest.

With only 33 qso in the log until last friday this more than doubled my qso number in CW 🙂

I guess it’ll take me some years before I will be contesting at the speeds I heard this weekend though… Some of those stations seemed to be working at some 3000 wpm. One station used some trick to slow down about 1 CQ-call out of 3. Probably some clever usage of the macros in N1MM?

Anyhow, I had a lot of fun and I’ll keep practicing to get my speed and accuracy up!

I can expect some more wallpaper…

Even if I prefer playing in the SO2R category, I entered the 2013 ARRL RTTY Roundup in the MSLP category because I wanted to test the pretty new RTTY Skimmers. And even if I didn’t expect it this is what is written in the ‘2013 ARRL RTTY Roundup Results – extended‘:

The Multi-Single, Low Power category in Europe had nine out of ten stations on the Top Ten list. Some winners were team efforts and some were operators using spotting or CW Skimmer assistance. Jo, ON5MF won for Europe using contest call OQ6A, although he normally doesn’t participate in the Multi-Single category. Using the relatively new RTTY skimmer spots, Jo ran stations on his main VFO and jumped from one spot to another with his second VFO, no doubt mostly in-band to comply with the band change rules.

Guess my ‘nice heavy paper weight‘ isn’t that bad, is it Franki?

Yes contesting sucks…

but I still have a lot of fun doing it!

Franki ON5ZO recently wrote a blog ‘Why contesting sucks’. And I can’t deny I sometimes have the same feelings during or after the contests.

http://disney.wikia.com/wiki/Grumpy

For example, the reason why our clubstation lost one of the last fielddays probably was because our biggest competitor probably used his home station with huge beam antennas via remote control. Okay, it’s only a suspicion and we can’t prove it but… At least since this year the rules for our national fieldday have changed and now all internet and dx-cluster use is forbidden.

And no, I probably can’t win any big contest from my average station (when speaking about contest stations).

But hey you’ll ask, why do you keep doing it? Continue reading Yes contesting sucks…

First 2 contests with the FT5K / FT990 combo

As you already know from a previous post I purchased a Yaesu FT DX 5000 MP last december. Since then I operated in both the ARRL RTTY Roundup and in the CQ WW WPX RTTY. Time to write down my experiences:

The combo FT5K/FT990 is of course a great enhancement over the former combo FT990/TS50S :-). Even with the 500Hz filters the TS50S has a poor receiver for contesting, don’t misunderstand, the TS50S is a great transceiver for travelling but filtering in rough contest conditions is pretty poor. Moreover I was persuaded the FT990 had a great receiver but that’s because I never operated anything better… The receiver of the FT5 seems pretty unbeatable to me when compared to the FT990.

With the FT5K, narrow means NARROW! Using the the 500 Hz filter on FT990 you can see a pretty wide band in the MMTTy scope, using the with 600 Hz filter of the FT5k only a fraction of that band is left, when the need arises it can even be made narrower when using the ‘Narrow’ knob and/or when changing the settings of the RX. Sometimes I had the feeling the receiver is even too good 😉 because you get into very narrow holes on busy band to try and start a run. But it isn’t because I have a good RX that the other stations have one that is as good!

Being used to operate the FT990 it was not that hard for me to learn the basic functions of the FT5k, operation seems pretty straightforward to me.

Since I have the FT5k I made 2 RS232 interfaces so I can run both transceivers in FSK instead of AFSK, this avoids me the need to retune the level of the AFSK tx audio at every band change.

The only negative point I see in the MP version is the band scope which is pretty slow and with low resolution. The speakers that come with it are great but the scope isn’t. Guess I’ll have to go look for an SDR solution on the IF output of the FT5K.

I was pretty happy with the results in both contests! In both my claimed score beat the belgian record!

In search of a new contest transceiver, the decision

In my previous post about this topic I started with a list of available HF-transceivers here in Belgium and afterwards I had narrowed it down to 6:

  • Yaesu FT-2000 €2500
  • Icom IC-7600 €3600
  • Ten Tec Orion II €4300
  • Elecraft K3 €5300
  • Yaesu FT-DX5000MP €5700
  • Icom IC-7700 €6000

Prices are merely an estimation for comparison, they’re based on information found on the internet a few months ago.  Some may have changed by a few hundreds of euros by the time you read this!

I did’nt have the time (or rather did’nt make time) to write more about this in the last few weeks but in the mean time I ordered (and received) an FT-DX5000MP.

The decision was a little less scientific than it started in my previous post however. Let’s say it has been partly emotional also.

These are the reasons why I bought the FT5k: (not necessarily ordered by importance) Continue reading In search of a new contest transceiver, the decision