circuitcellar.com
Magazine Support   Digital Library   Products & Services   Suppliers Directory 
 
 





 

May 2006, Issue 190

ARM-Based Modern Answering Machine
Philips ARM Design Contest 2005 First Prize


MODES OF OPERATION

I customized the TAM-TAM system shown in Photo 1 for the Smith family. Featuring only four main modes of operation, the system was fairly easy to develop.

In Idle mode, the system waits for a phone call. The ring detection routine is sophisticated enough to reject short rings and rings of the wrong frequency. All of these parameters are extracted from the core software. Magic numbers are avoided throughout the software.

When the first ring burst is detected, the system enters Smart Answering Machine mode (see Figure 1). First, the caller ID detection routine is activated. An interrupt service routine (ISR) handles the demodulation of the signal, software UART, and checksum calculation. The background task waits for the detection to be completed. A timeout allows the operation to be aborted if the detection is missed or if the checksum is wrong. After a preprogrammed number of rings, the system goes off the hook. Another key step (sometimes mishandled) involves correctly counting the rings. A ring burst on Monday followed by another ring burst on Tuesday isn’t counted as two rings!

(Click here to enlarge)

Figure 1—It’s important to understand the different phases of the answering machine mode and the DSP functions that are required in each phase.

After going off hook, the machine plays the first WAV file: “Hi, this is the Smith family. Please press 1 for Jim, 2 for Julie, 3 for the kids, or 0 for a general message.” This statement invites the caller to send a DTMF key to direct the message to the correct virtual answering machine. If a DTMF digit isn’t detected, a generic message is played after a programmable timeout. Otherwise, a more specific message can be played. If the caller presses the 2 button, the system plays Julie’s recording: “Hi, this is Julie. I am currently visiting my mother. Please leave me a message.”

General messages and the ones recorded after a digit timeout are stored in mailbox 0. Messages are recorded until one of three things happens: the maximum message duration, which is programmable, is reached (in which case a short tone will inform the caller that the system is about to hang up); someone picks up the local handset (thus aborting the message); or a remote hang-up is detected (when a short interruption of the line current is sensed or when a dial tone is detected). After a message is recorded, the recipient is notified by e-mail and his or her assigned green LED (0, 1, 2, or 3) blinks slowly. This indicates that at least one message is pending.

A user like Julie can retrieve her messages when the system is in Local Retrieval mode. The front panel is easy to use. She can press her button and retrieve her messages one after the other. After a message, a short tone sounds. She now has a 3-s window of time to save or erase the message. If she presses a key and holds it for 1 s, the most recently played message will be erased from the queue.

I think Internet Message Retrieval mode is the most interesting. By just typing the IP address of the home network to which the TAM-TAM is connected, Julie can retrieve her messages. This retrieval procedure has an inherent problem because ISPs don’t want users without a professional account to run web servers on their network. This is why ISPs often rotate the IP address assigned to such networks and block incoming connection to port 80. I designed the TAM-TAM with the web server running on port 8000 to bypass this restriction.

In addition, I subscribed to a service that enables me to name my web server and access it on its own port for free. The TAM-TAM’s own web server running on port 8000 can be accessed from anywhere by typing tamtam.hostredirect.com (hostredirect.com is just an example here). The IP address is maintained current in the DNS servers thanks to a small utility running on my PC. The company that offers this service details how this utility can be implemented on another platform, so theoretically it could be ported to the TAM-TAM.