R2ZX 137MHz weather satellite receiver

R2ZX weather satellite receiver

The R2ZX
I initially used my Yaesu FT817ND to receive pictures from the NOAA weather satellites but results were rather poor due to the limited IF bandwidth. The R2ZX is a dedicated receiver for APT satellites with sufficient IF bandwidth to accomodate the full signal and additional IF filtering over the R2FX intended to reduce interference from pagers which operate in the same band in the UK. Compensation for doppler shift from the fast moving satellites is achieved by AFC.

The radio is tiny and is capable of operating from the 5v available from USB sockets so could be run portable with just an antenna and laptop. To run on 5v an internal jumper setting is needed which bridges out the inverse voltage protection diode. A polarity error when set like that could be costly as it may well destroy the radio - the instructions specifically warn against this and say the radio will be damaged.

Channel control is achieved by a small pushbutton on the front of the radio. Holding it in will start it scanning. Control is also possible via an RS232 connector and this is how I have mine set up so that the WXtoIMG software can switch to the correct channel for each pass.

One novel feature is the ability to run with two antennae (diversity) and the radio selects the strongest at any given time (it seems to check which to use at the end of each scanline). This is controlled by means of a supplied utility which uses the RS232 port or manually using telnet. The same mechanism is used to set the frequencies for each channel, signal level to halt scan, and audio output level - max 500mv which is fine for driving the line in on most computer soundcards.

Problems encountered
I found that using a vertical with the turnstile can produce poor results - it seems that although the vertical has a higher signal strength at low elevations there is a lot of interference too. When I tried to turn off diversity the utility failed and I had to use a telnet client to do this. I reported the problem and the author was aware of it already and promised a fix sometime.

The other problem is also associated with control via the RS232 port and is more annoying. Occasionally the radio fails to get swapped to the correct channel for the satellite pass. After investigating this using a port monitor it is obvious that WXtoIMG is generating the commands too fast for the rudimentary serial port on the R2ZX to handle. This has been reported as a program bug and I'm waiting on a fix. As well as producing a useless image this error also spoils earlier composites. I have now modified the options so that the 2.4KHz pilot tone is required before recording starts.

Missed pass and destroyed composite

The only reason there is anything resembling a picture of the earth is the false colour routines in WXtoIMG applying different colours to presumed land and sea areas from knowledge of what the satellite should have recorded during the pass.

Just noise because frequency wasn't set             Composite built mostly from failed recording

With no sign of a program fix I have produced what I hope is a permanent workround. In theory it should be possible to just echo to COM1: from a bat file but that didn't work. Nor did Qbasic. I have found that Python does work. To talk to a COM port on Windows I found I had to download Python and pySerial which requiried Python windows extensions. Having installed that lot a simple little wxctl.bat file was written and put in the WXtoIMG directory to run the appropriate script (options/recording is used to specify this instead of the radio type).

wxctl.bat Just runs my script passing on the parameter which specifies the satellite to record.

c:\Python25\python.exe c:\Python25\wxctl.py %1

wxctl.py I have set my R2ZX to have channels 1,2, and 3 as the current satellite frequencies.

import sys
channel = '0'

if sys.argv[1] == "NOAA 18":
   channel = '1'
if sys.argv[1] == "NOAA 15":
   channel = '2'
if sys.argv[1] == "NOAA 17":
   channel = '3'

if channel > 0:
   import serial
   ser = serial.Serial()
   ser.port     = 'COM1'
   ser.baudrate = 1200
   ser.bytesize = 8
   ser.parity   = 'N'
   ser.stopbits = 1
   ser.xonxoff  = 0
   ser.rtscts   = 0
   ser.timeout  = 1

   ser.open()
   ser.write('S')
   ser.readline()
   ser.write(channel)
   ser.readline()
   ser.close()

This doesn't overload the R2ZX port with data which the WXtoIMG program does sometimes and so far it has worked perfectly. It is very disappointing that the developer has put so much effort into the program yet is unable or unwilling to correct what appears to be the simple coding error of pushing data to the R2ZX faster than it can handle.

Installing Python
There are plenty of sites dedicated to the Python scripting language so I'll only include very brief notes on this.

Download and install Python for Windows - www.python.org

Download and install Python Extensions for Windows - PyWin32 Project

To make life easier now is the time to add paths for the python executables and scripts to your path environment variable. Typically you'll need to right click "My Computer" select properties then click advanced to find the environment variables. The current default you'll need to add to the end of the path is ;C:\Python25;C:\Python25\Scripts;

Download and install EasyInstall for Python - Easy Install for Python

Use EasyInstall to download and install the pyserial package - open a command prompt (with run as administrator in Vista) and just type easy_install pyserial


© Copyright www.DigitalHam.co.uk 2005 - 2008