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\Scripts\wxctl.py %1

wxctl.py I have set my R2ZX to have channels 1,2,3 and 4 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 sys.argv[1] == "NOAA 19":
   channel = '4'

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.

WXtoImg control of the R2ZX was fixed with R2.9.3 This release was primarily for NOAA 19 support and quickly superceded by R2.9.4 also for NOAA 19 support so presumably it didn't work correctly initially.

Back to the script!! I decided to move my 24x7 operations to an EEE Box 202 which has no serial port. Having tried a number of cheap USB/RS232 cables from Hong Kong sellers on eBay none of which worked but were not worth returning I decided to invest in a £15 Lindy one from Misco when I bought the EEE Box. It worked a treat using HyperTerminal but WXtoImg screws up communicating through it. Fortunately my script works OK so I've added NOAA 19 and am running it again.

WXtoImg 2.10.8 The release notes mention further changes to the control of the R2FX/R2ZX.
I am currently trialling this. Certainly the port monitor shows clear differences between how my R2ZX responds to commands from WXtoImg and those same commands typed in through Hyperterm. Typed in the radio responds and that response can be seen. There is no response shown to WXtoImg commands but testing shows that the radio does at least change reception frequency. I am using the R2FX setting rather than R2FX (early) or R2ZX which showed a garbage response to the M command issued (through Hyperterm M shows the radio status including which frequency each channel is set to receive).

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

Versions Make sure that you get matching versions of Python, the Windows extensions, and EasyInstall. When I downloaded these to install on the EEE Box I found there was no executable for installing EasyInstall 2.6 just an egg package which I couldn't get to install for some reason so I had to uninstall everything, download version 2.5 of everything and start again.

Bookmark this page
Bookmark to: Blogmarks Bookmark to: Del.icio.us Bookmark to: Digg Bookmark to: Facebook Bookmark to: Google Bookmark to: StumbleUpon Bookmark to: Windows Live Bookmark to: Yahoo

If flying is so safe, why do they call an airport the terminal?

Get Cashback
TopCashBack really is the closest you'll get to Free Money. Read how.


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