1

I am using an Arduino Mega and an Arduino GSM shield. I am using the receive SMS example under GSM in the Arduino IDE. My GSM shield's hardware IP is set correctly.

Here is the sketch:

/*
 SMS receiver
 This sketch, for the Arduino GSM shield, waits for a SMS message
 and displays it through the Serial port.
 Circuit:
 * GSM shield attached to and Arduino
 * SIM card that can receive SMS messages
 created 25 Feb 2012
 by Javier Zorzano / TD
 This example is in the public domain.
 http://arduino.cc/en/Tutorial/GSMExamplesReceiveSMS
*/
// include the GSM library
#include <GSM.h>
// PIN Number for the SIM
#define PINNUMBER ""
// initialize the library instances
GSM gsmAccess;
GSM_SMS sms;
// Array to hold the number a SMS is retreived from
char senderNumber[20];
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 Receiver");
 // connection state
 boolean notConnected = true;
 // Start GSM connection
 while (notConnected) {
 if (gsmAccess.begin(PINNUMBER) == GSM_READY)
 notConnected = false;
 else {
 Serial.println("Not connected");
 delay(1000);
 }
 }
 Serial.println("GSM initialized");
 Serial.println("Waiting for messages");
}
void loop() {
 char c;
 // If there are any SMSs available()
 if (sms.available()) {
 Serial.println("Message received from:");
 // Get remote number
 sms.remoteNumber(senderNumber, 20);
 Serial.println(senderNumber);
 // An example of message disposal
 // Any messages starting with # should be discarded
 if (sms.peek() == '#') {
 Serial.println("Discarded SMS");
 sms.flush();
 }
 // Read message bytes and print them
 while (c = sms.read())
 Serial.print(c);
 Serial.println("\nEND OF MESSAGE");
 // Delete message from modem memory
 sms.flush();
 Serial.println("MESSAGE DELETED");
 }
 delay(1000);
}

The issue is this line:

if (gsmAccess.begin(PINNUMBER) == GSM_READY)

The serial monitor outputs everything until that line.

It just never gets past it, so I assume it cannot connect? The SIM has no pin code: I have tried it with my phone. The SIM has full signal strength when in my phone. I have tried my other SIM card also but the same thing happens.

This seem to be the same question, yet no answer: http://forum.arduino.cc/index.php?topic=270551.0

VE7JRO
2,51519 gold badges27 silver badges29 bronze badges
asked Nov 16, 2014 at 2:21
1
  • I have the same problem. Did you fix it and if yes, how did you do? It's been a few days and still didn't find a way to fix it. Commented Feb 5, 2015 at 4:47

3 Answers 3

1

You could always try setting a pin code and then retry http://arduino.cc/en/Tutorial/GSMToolsPinManagement

What version of the Arduino IDE are you using ? Also, are you sure you are suppying the board correctly ? "It is recommended that the board be powered with an external power supply that can provide between 700mA and 1000mA. Powering an Arduino and the GSM shield from a USB connection is not recommended, as USB cannot provide the required current for when the modem is in heavy use."

answered Nov 17, 2014 at 21:57
1

I Have The Same Problem. But First Of All you have to set your modem Network Band according to your cellular Network Band.

GSMBand band;
String newBand= "GSM_MODE_EGSM_DCS";// Your Band In My case That was 
 band.begin();
 Serial.println("Modem restarted.");
 String bandName = band.getBand(); // Get and print band name
 Serial.print("Current band:");
 Serial.println(bandName);
band.setBand(newBand);

Band Help:

 GSM_MODE_EGSM ---- E-GSM(900)
 GSM_MODE_DCS ---- DCS(1800)
 GSM_MODE_PCS ---- PCS(1900)
 GSM_MODE_EGSM_DCS ---- E-GSM(900)+DCS(1800) ex: Europe
 GSM_MODE_GSM850_PCS ---- GSM(850)+PCS(1900) Ex: USA, South Am.
 GSM_MODE_GSM850_EGSM_DCS_PCS ---- GSM(850)+E-GSM(900)+DCS(1800)+PCS(1900)

Then You Have To use

gsm.access.begin();
rebatoma
5593 gold badges12 silver badges22 bronze badges
answered Apr 3, 2016 at 20:39
1

I had the same problem. Then I used gsm.shutdown(); before gsm.begin(PINNUMBER). After that it goes past gsm.begin(PINNUMBER) but not always. I don't know if this is the right way to do it, but it works for me.

answered Jun 24, 2017 at 19:41

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.