In manual control mode, the modified receiver operates very much as the original. When the RX-2 is switched on, it will emit a 1 second beep, during which all the display segments are turned ('lamp test'). This allows time for the signal detector circuit to settle. After the settling period, it will start scanning from channel 1, stopping only when it finds a signal. When a signal is found, the RX-2 emits a longer beep and stops scanning, until 15 seconds after the signal is lost. It then emits a short beep and re-starts scanning.
A short button press at any time will jump to the next channel and stop scanning, accompanied by a very short beep. A longer press will re-start scanning, with a longer beep.
At the same time, any characters which arrive at the serial port are checked for valid commands. There are two valid commands: 's' (or 'S' - case is not important) and 'F'. The 'F' command, followed immediately by a channel number 0 to 9, will change to that channel, and stop scanning, if a scan was in progress. 'S' will re-start scanning. No carriage return or line feed is required after the command. Any incomprehensible or extra characters are quietly ignored.
In manual operation, the modified RX-2 uses the same 5 channels as the
original. However, there are 5 additional channels available to the 'F' command. The
frequencies as supplied are shown below, but are very easily changed.
| Channel Number | Frequency (MHz) | Satellite |
| 0 | 137.200 | --- |
| 1 | 137.300 | Meteor |
| 2 | 137.400 | Okean |
| 3 | 137.500 | NOAA |
| 4 | 137.620 | NOAA |
| 5 | 137.850 | Resurs |
| 6 | 137.600 | --- |
| 7 | 137.700 | --- |
| 8 | 137.800 | --- |
| 9 | 137.900 | --- |
A button push, or an 'S' command, when the receiver is tuned to one of the 'extra' channels, will re-start scanning from channel 1.
The serial interface is designed to make the minimum demands on the computer driving it. It does not use any flow control: it operates at a fixed 1200 baud, and can handle continuous characters at this speed. There are no 'handshaking' signals. It cannot even send any data to the computer!
The source code for the modified PIC program is available here. This requires Microchip MPLAB/MPASM to assemble, and a suitable device programmer for the PIC16C84. I am currently trying to arrange for a supply of ready programmed devices, via RIG. Until then you will need to program your own. For convenience, here is the Intel HEX format ready for the programmer.
The software operation is based on the idea that when a person presses the button, it stays 'down' for a long time - at least a long time compared to the duration of a serial character. The serial input and push button use the same pin. The program waits for a 'low' logic level on this pin. This could either be the start of a serial character or the start of a button push. The software first attempts to decode the signal as a character. If the input is still low at the end of the character period, when it ought to be high, the software decides that it has a button push. Two separate tasks handle the button pushes and decode the received characters. For those who are interested, there is a more detailed explanation available.
The hardware modifications have been kept as simple as possible. The serial interface uses the same PIC input pin currently used by the push-button, and can be operated in conjunction with the button. It requires no extra power supply, drawing what power it needs from the PC and through the pull-up resistor on the push-button input.
Here is the complete circuit diagram:
In the RS-232 'idle' state, DB-9 pin 2 will sit at a voltage of -5V to -12V. The
opto-coupler LED will be off, and so will be the transistor. Pin 4 will be pulled up to
+5V by the push-button pull-up resistor on the RX-2 circuit board. A button push will take
this point low to GND, unaffected by the presence of the serial interface.
When an RS-232 character comes along, the start bit will take DB-9 pin 2 to between +5V
and +12V, turning on the opto-coupler LED and transistor. The push-button input will go
low, to be detected by the software.
The push button input goes to pin 9 of SK1 on the RX-2: GND is found on pin 8 of the same connector. DB-9 connector pin 5 is ground, pin 2 is Rx-data. You will need to use a 'null modem' cable with these connections. Alternatively, wire the resistor to pin 3 and use a 'straight through' cable.
You can also use a 4N25 or similar opto-isolator, the exact device is not critical. For the 4N25, GND goes to pin 4 and the push-button input to pin 5. Pins 3 and 6 are no-connect. Using an opto-isolator helps to keep electrical noise from the computer out of the receiver.
Construction technique is not critical. I built the prototype hardware on a very small piece of Veroboard which I fixed to the back of the DB-9 socket. The output is best wired straight to the push-button, using stranded hook-up wire. Take care when desoldering the existing wiring from the push-button, as the supplied parts tend to melt rather easily. If you are at all in doubt of your skills, order a replacement push-button along with the other parts! No serious harm will be caused if you get the two wires to the button crossed, but probably neither the button nor the serial input will work until you correct the situation.