Arduino GSM - sim card locked

Hello.I am programming with Arduino GSM shield.I was trying to send a SMS with my own sim card but this stay locked using the code below.I am not sure what i was wrong:
/*
SMS sender

This sketch, for the Arduino GSM shield,sends an SMS message
you enter in the serial monitor. Connect your Arduino with the
GSM shield and SIM card, open the serial monitor, and wait for
the “READY” message to appear in the monitor. Next, type a
message to send and press “return”. Make sure the serial
monitor is set to send a newline when you press return.

Circuit:

  • GSM shield
  • SIM card that can send SMS

created 25 Feb 2012
by Tom Igoe

This example is in the public domain.

*/

// Include the GSM library
#include <GSM.h>

#define PINNUMBER “1234”

// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

void setup()
{
// initialize serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}

Serial.println(“SMS Messages Sender”);

// connection state
boolean notConnected = true;

// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while(notConnected)
{
if(gsmAccess.begin(“1234”)==GSM_READY)
notConnected = false;
else
{
Serial.println(“Not connected”);
delay(1000);
}
}

Serial.println(“GSM initialized”);
}

void loop()
{

Serial.print("Enter a mobile number: ");
char remoteNum[20]; // telephone number to send sms
readSerial(remoteNum);
Serial.println(remoteNum);

// sms text
Serial.print("Now, enter SMS content: ");
char txtMsg[200];
readSerial(txtMsg);
Serial.println(“SENDING”);
Serial.println();
Serial.println(“Message:”);
Serial.println(txtMsg);

// send the message
sms.beginSMS(remoteNum);
sms.print(txtMsg);
sms.endSMS();
Serial.println("\nCOMPLETE!\n");
}

/*
Read input serial
*/
int readSerial(char result)
{
int i = 0;
while(1)
{
while (Serial.available() > 0)
{
char inChar = Serial.read();
if (inChar == ‘\n’)
{
result = ‘\0’;

  • Serial.flush();*
  • return 0;*
  • }*
  • if(inChar!=’\r’)*
  • {*
    _ result = inChar;_
    * i++;*
    * }*
    * }*
    * }*
    }
    Thank you very much.
Serial.flush();

Why are you blocking waiting for all pending serial data to be sent, in a function that doesn’t send any data?

Hi.So,

define PINNUMBER "1234"...if(gsmAccess.begin("1234")==GSM_READY).... it is ok?,i was thinking that the problem was passing the pin number due in console screen not print "GSM_READY" and after this "GSM initialized".

¿I must follow the code from the Arduino software /Examples/GSM/Tools/TestGPRS before running SEND SMS?

Thanks for your quick response.

Hi, I have the same problem. The code seems stuck at gsmAccess.begin(PINNUMBER) becouse I don't read "Connected". Is there a solution? After that my SIM card is blocked.

Many thanks

Hello.I changed three things to avoid this problem: 1 In the code from Arduino Examples,i changed: GSM gsmAccess; for GSM gsmAccess(true); to see the outputs. 2 From a mobile desactivate the pin number. 3 Perhaps the more important changes is to supply with a battery(9v) and the pc connection together.

It isn´t necesary to change line:' if(gsmAccess.begin(PINNUMBER)==GSM_READY)'.

I hope help you.

Hi, thank you . I'll try your three recommendations. Did you wait minutes or seconds to obtain the connection?

Thanks for your quick response.

About 20 seconds

Many thank. Now it works properly. I think that 3rd point it's very important.