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
-
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.user7154– user71542015年02月05日 04:47:13 +00:00Commented Feb 5, 2015 at 4:47
3 Answers 3
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."
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();
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.