GSM Shield (SIM900) as answering machine

Hello,

I am Nagesh, newbie in Arduino world. You can say more of hobbiest person.

I am from India. I bought the UNO comptiable board and GSM shield (SIM900) from Entesla (http://entesla.com/microcontroller-development-boards/arduino).

I am using GSM shield now and able to make/receive calls and also send/receive SMS. So far the kit is working perfectly fine.

I need some help to do:

  1. I want to make use of the same kit (UNO board + GSM shield) as answering machine. I mean, when someone calls, GSM Shield should pick up the call after certain rings/time, and play some predefined audio like "Welcome to House of Arduino. Press 1 to switch on lights. Press 2 to switch of lights. Press 3 for status."

  2. Detect whether call has pressed button "1", "2" or "3" etc. so that i can take action accordingly.

On some of forum post I read that, you can convert audio file to numeric array and play it, but not sure how to do that. I would appriciate if you send me sample code or direct me to location. I googled a lot for above need but no succss so far.

THanks in advance.

Regards,
Nagesh

  1. I want to make use of the same kit (UNO board + GSM shield) as answering machine. I mean, when someone calls, GSM Shield should pick up the call after certain rings/time, and play some predefined audio like "Welcome to House of Arduino. Press 1 to switch on lights. Press 2 to switch of lights. Press 3 for status."

"Predefined" how? Where?

  1. Detect whether call has pressed button "1", "2" or "3" etc. so that i can take action accordingly.

During a voice call? I don't know that that is even possible.

I googled a lot for above need but no succss so far.

Then, perhaps you meant to post in Project Guidance.

That sounds like an ambitious project. I suggest you tackle it one step at a time. In other words:

Make it answer an incoming call after a number of rings. (Perhaps you've already done that.)
Figure out how to send an audio stream over the connected voice channel. (This may turn out to be very hard - you would need to look at the spec for your modem to see whether/how it supported voice calls. It may involve connecting an external audio source to the modem. There are Arduino shields which can generate audio output which might be useful for this.)
Figure out how a button press is communicated during the call. Perhaps it will be presented as a DTMF signal over the audio channel - I don't know. If it is DTMF then figure out how to receive an audio stream over the connected voice channel (again, may turn out to be hard and involve extra hardware) and figure out how to do DTMF detection on the received audio stream. It may be possible to do this on the Arduino itself (once you have figured out how to get the audio stream to it) but it may be necessary to use an external DTMF detector. Some modems provide DTMF detection for you so there is an outside chance this is done for you. Alternatively the button presses may be handled within the GSM process and might be accessible via the serial data channel. It would be up to you to figure that out.

All this would constitute a complex project IMO. If you're doing it for fun, you should plan for it to take a long time and divide the overall work into small steps so that you can make tangible progress and not just bash your head against it for years.

So Nagesh,

Greetings from Brazil! Your project is very interesting, and as a matter of fact there's a brazilian dude who managed to do exactly what you're trying to. I tried to reach him out to get some wisdom on this subject unfortunately he never returned my e-mails.

It's been a while since you posted this, but I'm wondering if, perhaps, you got something going on with this project. I'm a Arduino newbie too, my project relates to yours in this aspect.

I'll be glad hearing from you.

Best,

Lucas.