17 May 2013

Raspberry Pi as a RBN Client.

I was sitting in the dark and watching the Arduino spying on the ReverseBeacon Network, but times got hot. And the spots came running faster than my eyes could follow or my mind could read. AND: Another ham complained, that this display was not of a great help in localizing new spots.

When I read an article about connecting the Raspberry Pi to an USB-LCD, I knew the solution of my problem.

First thing I had to find that USB LCD System Info on Ebay

An easy task, when you know what to look for. Then I had to wait.... for the delivery.

The installation was at first a little bit tricky. The R-Pi is kind of slow and I wanted to develop the program on my Linux Mint machine. But things got complicated when looking for the right USB-Port. So I had to switch to the Wheazy (Debian) system.

Downloding the driver from Dan Gardener was also not a problem, but I got things mixed up. There was already a driver for USB compiled in the system, but that was not enough. You need another additional USB-Driver for Python which you will find here. But please follow the instructions. If you don't do it, like I have done in the first time, you will run into ...

AND don't forget: You may need to copy the provided 99-lcdsysinfo.rules file into/etc/udev/rules.d/ in order to grant pylcdsysinfo permission to claim the device without running as root.

So far so good. Now I had to take a deep breath: I had to write my first Python program. I installed an Python Integrated Desktop Environment. (Later I noticed that on the R-Pi there was already one installed: IDE.

And I was relieved: You can program in Python just like in any other language. There are a multitude of libraries already there so you don't have to reinvent the wheel.

What I have done:

  • Keep the filters from my old Arduino program. They are hosted in the RBN. Nothing to do.
  • Find a Telnet-Client in Python and provide the right parameters.
  • Automated the login procedure, so that it can run without manual intervention
  • Take the stream and divide it into lines.
  • Analyse the lines and keep the infos in strings
  • Write the DX-Call to a list. If it is already there there is no need to display this doublette.
  • Write these strings to the LCD
  • ...
The effect: I have a filtering for my region on the RBN-Server and I additionally filter spots which have been reported by many other spots. So the frequency of updates is much less. The hardest part was the fitting to the LCD. It is very slow in updating. So sometimes I loose a spot, when the refresh routine has some delays. But I can live with that.

You will find the code here. But please bare in mind, that it was my first Python program and I was not in the mood to optimize it e.g. learn to better code in Python.

When I find some time I will add some statistics about the traffic, so that I know when it will be worthwhile to switch on the transceiver. By the way when I am running the skimmer, my R-Pi will listen to my RBN-Aggregator. That is by far the best shortwave propagation prediction program I use customized to my location and antenna.

So the Raspberry Pi is doodeling and I am a happy ham.

Instead of music, which is here in Germany much harder to find than elsewhere, here is a video about a thing which I will never try, ever ...

Stay Tuned!