DTMF Phone Dialer using PIC16F690

DTMF Phone Dialer.

The company I work for recently upgraded their phone system. They got a new IP phone system that can supposedly do everything – the new phones have big LCD screens with fancy menus, lots of different modes, PC connection for remote control of the phone, e-mailing voice messages, and tons of other features. All that said, there was a critical piece missing from the picture – a way to dial a stored number while already in a call. This is a feature I use often – I’m using a calling card to call home and I need to first dial the 800 number and then send my calling card pin number. Well, believe it or not, the cool new phones with all the fancy software couldn’t do this and I had to switch back to pencil and paper! “We will include this feature in release 8.0 or possibly 8.5” was the response from the phone company. Yeah right, like I’m going to wait for 8.5!DTMF Phone Dialer.

So, here is the obvious solution – a dialer box that connects to the phone and can be used to store and dial phone numbers, pins, credit card numbers and what not. The circuit uses a NTE1690 DTMF dialer chip and a PIC16F690 microcontroller.

Because this is an IP phone and I cannot just send the DTMF tones over the line, the easiest place to plug in the box is between the phone and the handset. The box has two RJ9 ports at the back – one gets connected to the headset’s port on the phone, the other to the headset itself. The dial tones are sent over the microphone line. This way, it works both on IP-phones, and on standard (old fashioned, non-IP) ones.

Here is the thing, assembled and put in an old network transceiver box:

Sure looks ugly, 🙂 A friend of mine likened it to something from Dr. Evil‘s hideout. All the better – this is the way I like it! Ugly or not, the dialer works perfectly and can dial at blazing speed – so fast that it sounds more like R2-D2 than a phone.

The headset from the phone is connected to one of the RJ9 ports under the “AUI PORT” label; the other port is connected with an extra headset cable to the phone body. The pins sticking out on the other side from the port formerly known as “10BASE-T” can be connected to Microchip‘s PICkit 2 programmer for updating the firmware without taking the box apart.

The dialer is operated this way:

  • Storing a number. The device can store up to 12 numbers, identified by a bank ID. The ID is one of the buttons 0-9, SEQ, or RST. To store a number, press ENT, followed by the bank ID button. After pressing the bank ID, the green LED will light up, showing you that the device is expecting the number. Enter the number sequence (up to 15 digits); the SEQ button corresponds to the *-key on a phone; the RST number is #. You can use the DEL or TKO buttons to insert a pause. When you finish press ENT to store the number, or ABT to discard the changes and leave the old number stored in this bank unchanged. The green LED will turn off at this point. Example: To store the number 555-1234 in bank 0, press ENT-0-5-5-5-1-2-3-4-ENT.
  • Dialing a stored number. Just press one of the 12 bank ID keys (0-9, SEQ, or RST). If there is a number stored in that bank the device will dial the number, otherwise nothing will happen. Example: To dial the 555-1234 stored number (see “Storing number” above) simply press the 0 button.

Read more: DTMF Phone Dialer using PIC16F690

Leave a Comment

Your email address will not be published. Required fields are marked *