14 April 2013

Arduino as a ReverseBeaconNetwork Client

I got a new book "HamRadio for the Arduino and Picaxe" edited by Leigh L. Klotz but I could not get to try the various projects for there are some parts missing. (I will write more about this book later on.) But the Arduino was on my table and the K2 was running and of course I had the Reverse Beacon Net  (RBN) switched on.

I don't like the computer when I am making contacts, so I decided to  give it a try:

At first I had to find the server of the RBN. This was not difficult to find. It is a telnet server and the Arduino is capable to connect with it. All you need is an Arduino  and an Ethernet shield. The libraries for the Telnet Client are part of the demos of the Arduino environment.

After the first contact I nearly gave up. Messages were running like made over my terminal screen:

DX de NY3A-#:      14021.5  G100RSGB     CW    16 dB  24 WPM  CQ       1210Z
DX de DL2CC-#:     14003.1  EM7KAA/P     CW    19 dB  29 WPM  CQ       1210Z JN48
DX de VE2WU-#:     14003.1  M7KAA/P      CW    06 dB  28 WPM  CQ       1210Z FN35
DX de S50ARX-#:    14003.1  EM7KAA/P     CW    30 dB  29 WPM  CQ       1210Z
DX de ON5KQ-#:     14003.1  EM7KAA/P     CW    25 dB  28 WPM  CQ       1210Z JO10
DX de S52AW-#:     14020.0  IT9BUA       CW    07 dB  20 WPM  CQ       1210Z
DX de RA3CO-#:     14020.0  IT9BUA       CW    07 dB  20 WPM  CQ       1210Z
DX de DF7GB-#:     14020.0  IT9BUA       CW    25 dB  20 WPM  CQ       1210Z
DX de DK9IP-#:     14062.5  M0KLO/P      CW    04 dB  21 WPM  CQ       1210Z JN48
DX de GW8IZR-#:    14035.0  TM28UFT      CW    27 dB  21 WPM  CQ       1210Z IO73
DX de VE2WU-#:     14021.5  G100RSGB     CW    12 dB  24 WPM  CQ       1210Z FN35
DX de LA5EKA-#:    14003.1  EM7KAA/P     CW    20 dB  28 WPM  CQ       1210Z JO59
DX de HA1VHF-#:    14062.5  M0KLO/P      CW    12 dB  21 WPM  CQ       1210Z
So there was some filtering to be done. You can do that directly on the server and in case you don't know how to: No problem! There is an excellent  Filter Primer for the DXSpider DXCluster program.

The first thing I did: DELETE (sorry reject all skimmers who are outside of Europe. For I never will hear what they collect with their skimmers:

reject/spots 0 by_zone 1,2,3,4,5,6,7,8,9,10,11,12,13,22,23,24,25,26,27,28,29,30

Now the stream of incoming data slowed down. But it was still too much. I am consistent. I don't like frequency hopping and I have an antenna which is somewhat limited. So came my next filter:

accept/spots 0 on 20m/cw
Now, when there is no contest, the stream is somewhat readable.

But still: I have a RGB-shield with a 2x16 character display and the data string is about 80 characters long. And I do not like the order of the info. I had to arrange it new:

1. Line: DX-Station call sign  and frequency
2. Line: Skimmer call sign (just the first three chars), the reception strength, Wpm and time.

The display is full, no scrolling allowed.

And I must admit that I never made use of the colours of the RGB-shield. So I made my own  DX-Group-Colours depending on the first letter of the DX-Call sign. I know, it's a hack but it was finished in a timely manner.    

And here is what I got:

Of course not everything works right in the moment:

  • When logging into the Telnet server, you have to provide your call sign and I do it with the serial terminal. I was not able to trigger the button function of the RGB-shield within the read-loop. I wanted to send my call by pushing one of the buttons, so the client.write(data) did not work.
  • Same goes with changing the filters on the server side.
  • The code is no beautiful C-code. It looks more like trial and error. But it was like that for the adjustment of the data on this little screen was a kind of adventure. You can find the source code here
But the Arduino works well and is running all day long and I can use my laptop for other things.

Stay Tuned!