Ledbury - www.ledbury.co.uk
| Contact | About |

Caller ID - Part 1

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 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.

Telephone Line -> DC Isolation -> Bandpass Filter -> FSK Demodulator -> RS232 Line Driver -> 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

Veroboard 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

CC-GNU GPL 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.

 

There is no charge for this software. It is licensed under the CC-GNU GPL.


Download See Also
I am happy to receive comments on this project. Due to its nature, however, I am unable to offer support if you have problems making it work.