1
\$\begingroup\$

Can someone tell me if it is possible to make a call from a GSM module using only the DTMF tones that a keypad puts out? If not, can someone explain how I would make the call using only the keypad, and maybe another bit of equipment?

\$\endgroup\$
  • \$\begingroup\$ Which microcontroller you are working on.? \$\endgroup\$ – Aircraft Oct 21 '15 at 4:52
  • \$\begingroup\$ there is a ATtiny converting pulses to DTMF tones, but thats it. \$\endgroup\$ – Louis Nel Oct 21 '15 at 5:37
5
\$\begingroup\$

Cell phones using GSM (and other transmission schemes) do not use DTMF for dialing. There's no dialtone. Instead of digits being sent one at a time like a landline phone, the complete number is entered first, and then it is sent out all at once.

There is always a microcontroller associated with making a call. The device that actually connects to the cell tower is called a GSM modem. The modem is connected to the microcontroller over some serial link, usually UART but it could be SPI or I²C.

The phone number is sent from the microcontroller to the UART using an AT command. AT stands for Attention, and dates way back to the dialup modes in the 1980 made by Hayes and other manufacturers.

Back then, the command ATDT was used to make a data connection over the phone network. Today 30 some years later, the same command is being used to dial voice calls with cellular modems. For example,

ATDT8005551234

would call the number (800) 555-1234

If the far end answers, the GSM modem answers: CONNECT.

So the cell modem does not send the number to the cell tower as DTMF tones. Instead it is part of a data stream. What may be confusing, is after the call is made, you can press digits on your keypad and hear the DTMF tones; this is just provided as a convenience to navigate menu trees and the like.

Enough background. You say you want to turn a rotary dial phone into a cell phone.

Well your first problem is when the user picks up the phone, you are going to want to provide local dial tone. Then you are going to have to count the pulses coming from the dial, and use those value to simulate someone pressing a key on the cell phone. Finally you will have to have some sort of timeout, a couple of seconds maybe, to determine the end of dialing.

It would be possible, but probably pretty difficult, to attach wires to the cell phone's keyboard and operate the switches using miniature relays or the like. The problem is attaching the wires; the pads for the keys are not going to be easy to solder to without disrupting the operation of the keyboard. The cable fro the keyboard to the rest of the phone will be a flexible ribbon cable, and impossible to solder to.

Another way of doing this would be to actually tap into the serial link going to the cellular modem; this will also be very difficult (and likely impossible) depending on how the PCB traces are routed, since you are going to have to break up the TX lead from the microcontroller to the modem, and substitute your own (I'm assuming a UART connection). You can't have two TX leads connected together. The RX lead probably doesn't need to be cut, just tapped into. Then you have to get the documentation for the GSM modem the phone is using, and learn how to control the modem. Unfortunately the commands are not exactly the same from one manufacturer to another. I have seen these documents running 400 pages or more.

|improve this answer|||||
\$\endgroup\$
  • \$\begingroup\$ I am trying to convert a rotary dial phone into a cell phone \$\endgroup\$ – Louis Nel Oct 21 '15 at 5:38
  • \$\begingroup\$ @LouisNel Rather than trying to connect into a cell phone, you would be much better off buying a standalone GSM module, llike this one from Sparkfun. They also converted rotary phones to cellular a while back. Although the product is no longer being sold, they have left up the page with all the documentation including the schematic.. \$\endgroup\$ – tcrosley Oct 21 '15 at 7:38
  • \$\begingroup\$ You need an input (variable potentiometer) to receive the location of the rotary dialer, processor (microcontroller) to calculate the location and transfer it to a number which is added into a AT dial command and an output (GSM module) which will make the call. \$\endgroup\$ – Paul Oct 21 '15 at 18:08
  • 1
    \$\begingroup\$ @FuaZe When you release your finger on a rotary dial (after moving the appropriate finger hole all the way clockwise to the stop), the dial generates a pulse corresponding to the number dialed -- 2 pulses for '2', 10 pulses for '0' at a controlled rate (usually 10 pulses per second, sometimes 20). Simple enough to just count them with a digital input to the microcontroller. No need to add any extra components like a potentiometer. \$\endgroup\$ – tcrosley Oct 21 '15 at 18:38
  • \$\begingroup\$ @tcrosley That is sort of my plan, can you recommend any parts, GSM module, micro controller, etc. If there is a GSM module that has a couple of GPIO pins that I can program to generate the command(preferably in python). \$\endgroup\$ – Louis Nel Oct 21 '15 at 19:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.