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!

Soon back on the air!

Finally my OB11-3 and new rotator made it up the tower.

For now no QSOs have been made because of course there’s still a lot of work to do like running new coax cables and the rotator control cable up to the first floor shack and putting the wires for 30-40-80 back up.

Time permitting I’ll try to be on the air in a week or 2 max. I’d like to test in the DMC Rtty contest in 2 weeks from now.

Here are some pictures:

Tower without antennas
My tower, like a virgin!
going up
Going up!
ready to turn
OB11-3 ready to turn
almost there
OB11-3 almost there
finished
Finished! On top you can also see my Fritzel UFB-12 (12 & 17m Rotatable dipole)
Finished
Ready to get some RF flowing!

I wish to thank Tom from Optibeam for the advice and help provided in choosing the ideal antenna configuration for my needs!

End of this contest…

In the last 2 weeks I have been working hard to get my band decoder up and running and to prepare for next contest: the ARRL RTTY Roundup (in which I placed first in M/S LP non W/VE in 2013).

Yesterday I made some QSOs and everything worked all right.

This morning I click on a dxspot on 12m and have my logging program turn the rotator… a few seconds later: no more signal on the receiver.

Something has gone wrong on the Big Boy Rotator and, of course, before I noticed it had overturned and broken the coax cables for my WARC rotary dipole.

The 10-15-20 beam is working OK and the rotator seems to turn but with no correct indication of the direction. I guess this contest has already ended for me this time.

Next big RTTY contest on my list is WPX in a months time…

So, todo:
– find someone to climb the 15m tower twice
– fix the rotator or find a new one
– fix the broken coax

Anyone some money to spare to help me buy a SteppIR DB-18E so I can replace the good old FB-33 while we’re climbing the tower anyhow?

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

SO2V RTTY FSK

Ever tried to work SO2V using this trick? You’ll no doubt have run into the problem that windows doesn’t want you to share a serial port between 2 programs.

So, when working SO2V with N1MM and 2 instances of MMTTY it is not possible to connect the 2 MMTTYs to the same FSK interface through software.

The solution: this interface as shown on the K8UT website.

All you need is 2 com ports (one for each MMTTY instance) and 4 diodes.

Don’t forget to work me in next RTTY contest!

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?