page shows how to build a simple, very low cost two-tone paging
encoder. To make this work you’ll need to be able to program PIC
microcontrollers. There are a ton of resources on the web to get you
started in PIC programming.
About Two Tone Paging
paging is a signaling format commonly used on VHF and UHF analog radio
systems. The paging radio sends out audio tones that the pagers or
receivers listen for. When a pager receives the correct tone sequence,
it will alert. Normally, two audio tones with a specific timing
sequence are used, hence the name “two-tone” paging. Different radio
vendors have traditionally used different tones and timing sequences.
Modern radios can usually be programmed to work with any tone or timing
sequence. To learn more about the different paging formats and
associated tones, see the following pages.
Info on multiple formats:
Motorola QuickCall II format info:
What is a Paging Encoder?
paging encoder is nothing more than a fancy audio tone generator. It
generates the audio tones with the correct timing and sends them to the
transmitting radio. It also keys up the radio via the push to talk
(PTT) line. Commercial paging encoders (such as those made by Zetron)
are very flexible. They can encode multiple formats (Motorola, GE,
etc.), and some can be programmed from a computer. They have many
features that make them great for dispatch and communication centers.
though, all we want to be able to do is send a single paging tone.
While a commercial encoder could certainly do this, it’s kind of
overkill because we wouldn’t use 90% of the features that the encoder
offers. This page explains two different ways to make a simple paging
encoder/terminal using a PIC microcontroller. Since the PIC chips are
getting incredibly inexpensive, you can make a simple paging encoder
for well under $20. It won’t have the features of a commercial
encoder, but if you have a simple system this might be all you need.
Method 1 - Radio Generates Tones
two-way radios can be programmed to send out paging tones without the
need for an external encoder. The Motorola GM300 is one example.
However, to send the tones, you must be trained in how to use the radio
to send them. It takes a few button pushes in the right order to make
it work. If only a few people ever use the radio that’s not a big
deal, but if you have a lot of people that might need to send the tones
and they’re not all trained, you might want a simpler method of sending
This is the situation I was faced with. I needed to
make sending tones as simple as possible. Since there were four
possible tone sequences that needed to be sent, I decided that having
four buttons (one for each tone sequence) would be the easiest possible
way to make sure that anyone could send the tones. All they would have
to do is press the correct button.
Another feature that the
Motorola GM300 has is called channel steering. There is an accessory
connector on the back of the radio with some programmable I/O ports.
These ports can be set up to change the channel of the radio remotely,
without using the front panel buttons. One of these pins can also be
set up to send an alert (a page) when it is activated.
does this have to do with paging? Well here’s what I decided to do. I
programmed five channels into the radio (Motorola calls them “modes”).
All five modes are on the same frequency. Channels two through five,
however, are each set up to transmit a different two-tone page. The
radio is programmed so that the page is sent with the “external alert”
pin is activated.
The radio is normally on channel 1. When
one of buttons is pushed, however, the PIC microcontroller “steers” the
radio to the correct channel (2 through 5) and activates the external
alert pin, which causes the radio to send the page. The PIC waits
until the page is done sending, and then returns to channel 1. A
schematic of my circuit is below, and the assembly code for the
PIC16F684 can be found here. (open it in a text editor to view the code)
method requires some tricky radio programming, but it allows me to send
pages without interfacing with the radio audio circuit. This was an
advantage for me because the radio in question was part of a cross-band
repeater system, so tying into the audio circuit would have been a
little more complicated than normal. Since this circuit doesn’t
actually generate audio tones, it’s not a true paging encoder. It’s
more of a radio remote control circuit. To see how to use the PIC to
directly generate the paging tones and make a true encoder, read on!
Method 2 - PIC Generates Tones
you have a radio that isn’t capable of generating paging tones by
itself, don’t worry! You can use the PIC microcontroller to generate
audio tones. There are several ways to do this, and I’ll try to
explain a couple of them. How you do it is up to you.
easiest and quickest way to generate audio tones with a PIC is to
simply turn a digital output on and off at the frequency of the tone
you want to generate. This results in a 5 volt square wave. We would
then run this signal through a capacitor to remove the DC offset, and
send that signal to the radio’s audio input line. See the example
an example, if we wanted to generate a 600 Hz tone, we would first
calculate the period of the tone. 1/600 = .0016667. Since we want the
square wave to be “on” for half of the period, we would turn the output
“on” for 833us, and then “off” for 833us. We would repeat this for as
long as we want the tone to be generated. Some code for generating
tones using this method on a PIC16F684 can be found here. (open it in a text editor to view the code)
the generated signal is a square wave, it is made up of signals at the
frequency of interest (600 Hz, for example) plus its odd harmonics
(600*3 = 1800, etc.). This results in a “dirty” signal, since we’re
generating signals other than the one we really want. However, I’ve
found that it is “good enough” to activate Motorola Minitor III
pagers. A simple RC filter at the audio output would go a long ways towards cleaning up the signal by filtering out the higher frequency harmonics. Your mileage may very.
To generate a pure audio tone,
we’ll need to generate a true sine wave instead of a square wave. This
can be done by using what’s known as a resistor ladder. The resistor
ladder lets us use four PIC outputs to generate 16 different discrete
voltage levels. By turning on the correct outputs in the correct
order, we can generate a stepped sine wave that is much “purer” than a
square wave. A full tutorial on how this all works can be found at KE4NYV's site. An example schematic is shown below.
Building an Encoder
matter which method you use for generating the tones, building the
encoder is a fairly simple matter. Once you have the PIC software
written and the chip programmed, all you have to do is put it in a a
box, wire up some switches and power, and you should be in business.
Of course if you wanted to get really fancy you could put a serial port
on your encoder and write a computer program to change the tones
without reflashing the PIC. I didn't get that fancy...my PIC is hard
coded...if I want to make any changes I'll need to reflash the PIC.
Here are a few pictures of my encoder.
used momentary switches that have guards on them to prevent accidental
alerts. I also added a 1 second debounce in the PIC software as an
added safety measure. It would be pretty hard to accidentally set the
Inside View - DB9 Connector is for all I/O lines, including power:
The front panel was created using a technique described here.
Basically I printed out the front panel on my inkjet printer on sticker
paper, and then covered it with vinyl contact paper to keep it from
smudging. It looks pretty good, although the contact paper has some
faint lines in it.