A simple Caller ID project to display the name and number of incoming telephone calls in a popup window on your PC.
Some hardware construction is required. This project is suitable for UK Caller ID and compatible telephone systems only.
This project was originally devised in 2003. It remains here for reference, as the principles behind it are still valid, but the SM8220 chip which it uses
is no longer available. It may be possible to modify this project to use the
CMX602B but I have no further information on this, nor do I have any supply of any
parts for this project.
Caller ID, or Caller Display - being able to see who is calling you before you answer the phone - is pretty much taken
for granted on mobile phones. It is less common on home or office telephone lines, however, BT now provide Caller Display for
free as part of their
BT Privacy at Home initiative, and it is available from other
telecoms providers for typically a pound or so per month.
Despite being able to pop down to your local BT shop and buy a caller display unit, there is a lack of caller ID
devices that interface to a PC. This seems to be a commercial and not a practical consideration, as once the caller ID
data is extracted from the phone line for displaying on a caller ID display, the data itself is simply 1200 baud serial
data that can easily be read and processed by a PC at virtually no extra cost.
This project utilises one of the lower cost caller ID IC's, the SM8220, which, although no longer manufactured, is present
in some cheap caller ID display boxes (eg Fanstel).
For a custom caller ID interface, the addition of a ceramic resonator, an RS232 line driver (eg a MAX202) and a few capacitors
and resistors from your junk box, and you can construct a caller ID interface for your PC for well under a fiver.
Receiving the Data
BT's document
SIN227 describes the caller ID service
and gives a lot of un-necessary technical detail. Essentially the caller ID data is standard 1200 baud serial data that
is relatively easy to decode.
To receive the data, we need to do some minimal signal conditioning (DC isolate the line and pass the signal through a
band pass filter), demodulate the FSK data, apply the appropriate RS232 voltage level translation and feed the resulting
1200 baud serial data into the serial port on the PC.
The SM8220 does the hard part in the middle - the Bandpass Filter and FSK Demodulator. We are left with simply DC isolating
the line with a couple of capacitors, and generating the RS232 voltage levels required.
Circuit Description
The telephone line connection is made to the TIP and RING pins of the SM8220. It doesn't matter which way round these pins are
connected, as the DC component of the line voltage (generally around 50vdc) is isolated through C1 and C2.
The SM8220 first passes the telephone line signal through an internal band pass filter. The output of this is on the FOUT pin.
This is capacitively coupled to DMIN, the input of the FSK demodulator, via C4. DOUT, the final data from the demodulator is
TTL-level serial data suitable for direct connection to the MAX202 line driver for RS232 voltage level conversion.
In addition, OSCIN and OSCOUT are connected to a ceramic resonator, PDWN is grounded to enable the device, and RDIN and
RDRC should be grounded to keep the supply current down.
Construction

The connections to the ceramic resonator should be kept as short as possible. Nothing else in the circuit is particularly
critical, and the circuit is straight forward enough to lash together on a bit of veroboard if desired (as shown).
A telephone line will typically have 50vdc on it so take care that the line is not connected to the circuit during
construction.
Power for the circuit is derived from a 5v PSU. Alternatively, there may be just about enough power in the DTR and RTS
handshaking lines of the RS232 to feed them through a couple of diodes and a 5v LDO regulator. Check the voltages carefully
if you wish to try this, however, as on some PC's the power capability of the handshaking lines may be insufficient.
Software

If you don't want to write your own software to process the caller ID data then you can download the
example
CallerID application (including VB6 source code).
This software is licensed under the
CC-GNU GPL.
Use, modification and redistribution of this software is free of charge, however some rights are reserved
and license conditions apply.
There's More...
If you wish to process the caller ID data yourself, or modify the software, you may wish to read
Part Two of this article for the data format specification.
Part Three of this article details an enhancement that allows unwanted calls to be silenced and killed.