I have been using this cellular shield:https://www.sparkfun.com/products/9607

And so far, mostly so good. However, I have been having one large problem that has been driving me crazy. Thus far I have had no luck trying to solve it.

Basically, when I call the module from my cell phone, the phone module rings about two times and then crashes. Of course, to complicate matters, this problem only happens about 75% of the time. Sometimes it works perfectly fine, which continues to baffle me further.

When it crashes, the phone module both stops audibly ringing through a speaker I attached and printing the "ring!" alert to the serial terminal. And then, the terminal freezes and the whole thing needs to be rebooted.

To confuse matters even further, it happens with two different sets of code. One is the example code from Sparkfun which echos the feedback from the module back through the serial terminal. The other buffers the incoming serial data and prints out responses based on the incoming data.

Description: This sketch is written to interface an Arduino Duemillanove to a Cellular Shield from SparkFun Electronics.The cellular shield can be purchased here: http://www.sparkfun.com/commerce/product_info.php?products_id=9607In this sketch serial commands are passed from a terminal program to the SM5100B cellular module; and responses from the cellularmodule are posted in the terminal. More information is found in the sketch comments.

An activated SIM card must be inserted into the SIM card holder on the board in order to use the device!

This sketch utilizes the NewSoftSerial library written by Mikal Hart of Arduiniana. The library can be downloaded at this URL:http://arduiniana.org/libraries/NewSoftSerial/

This code is provided under the Creative Commons Attribution License. More information can be found here:http://creativecommons.org/licenses/by/3.0/

void loop() { //If a character comes in from the cellular module... if(cell.available() >0) { incoming_char=cell.read(); //Get the character from the cellular serial port. Serial.print(incoming_char); //Print the incoming character to the terminal. } //If a character is coming from the terminal to the Arduino...if( Serial.available( ) > 0){incoming_char = Serial.read( ); // Get the character coming from the terminalif(incoming_char == '~') // If it's a tilde…

incoming_char = 0x0D; // ...convert to a carriage return

else if( incoming_char == '^') // If it's an up caret…

incoming_char = 0x1A; // ...convert to ctrl-Z

cell.print( incoming_char ); // Send the character to the cellular module.Serial.print( incoming_char ); // Echo it back to the terminal}

I'm beginning to suspect that maybe the module is sending junk data back to the Arduino when it gets the ring command. This then confuses and crashes the code... perhaps? However, I have yet to discover any real evidence of this.

I'm at about my wits end on this one. If anyone has any ideas as to what may be going on, it would be appreciated.

That'll be the problem. Have a read here: https://tronixstuff.wordpress.com/tag/sm5100b/

Quote

The GSM shield can often require up to 2A of current in short bursts - especially when turned on, reset, or initiating a call.

I have successfully sent and received SMS messages when powered only via USB, but I mainly try to power the Arduino with a large 7.5V AC supply when I am messing with the SM5100. The page I referenced calls for an external 5V regulator to spare the Arduino one.

Okay... Gave the shield some more power (regulated 5V / 2A). Still the same error. Back to the drawing board.

I am pretty sure it has something to do with the module returning some sort of strange value when it receives a "ring" message from the telecom company. Everything else seems to work fine (more power or not).

I have the same SM5100B shield + software using SoftwareSerial class.I noticed when module receives a SMS, it stops working in case the ambient temperature drops under 2 Celsius.At the normal temperature (23 Celsius) it works OK. I think the problem is the power supply (it is under-dimensionated). I read somewhere that SM5100B takes 3A at full peaks. In my opinion the power supply must be above 2 Amp. Try one with 2.5A or 3A.