1

I'm trying to set up an Arduino Cellular Shield SM5100B to send SMS.

My setup is:

  • Arduino UNO R2
  • SM5100B
  • "Movistar" SIM Card (Chile)

I've uploaded a code similar to the one described here, but when communication is supposed to star it cannot find a network. I suspect the problem is I haven't setup correctly the GSM band. But when I issue the command (AT+SBAND=7, same as in the US), it doesn't respond. How can I check in what band I'm on? And change the band?

Anonymous Penguin
6,36510 gold badges34 silver badges62 bronze badges
asked Apr 28, 2014 at 18:44
1
  • How are you issuing the command to it? Do you have a new line after the command? Maybe it needs CR+LF. You can tweak those options in your serial terminal program. Commented Apr 28, 2014 at 20:44

1 Answer 1

1
/*
 Band Management
 This sketch, for the Arduino GSM shield, checks the band
 currently configured in the modem and allows you to change 
 it.
 Please check http://www.worldtimezone.com/gsm.html
 Usual configurations:
 Europe, Africa, Middle East: E-GSM(900)+DCS(1800)
 USA, Canada, South America: GSM(850)+PCS(1900)
 Mexico: PCS(1900)
 Brazil: GSM(850)+E-GSM(900)+DCS(1800)+PCS(1900)
 Circuit:
 * GSM shield 
 created 12 June 2012
 by Javier Zorzano, Scott Fitzgerald
 This example is in the public domain.
 */
 // libraries
 #include <GSM.h>
 // initialize the library instance
 GSMBand band;
 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
 }
 // Beginning the band manager restarts the modem
 Serial.println("Restarting modem...");
 band.begin();
 Serial.println("Modem restarted.");
 };
 void loop()
 {
 // Get current band 
 String bandName = band.getBand(); // Get and print band name
 Serial.print("Current band:");
 Serial.println(bandName);
 Serial.println("Want to change the band you’re on?");
 String newBandName;
 newBandName = askUser();
 // Tell the user what we are about to do...
 Serial.print("\nConfiguring band "); 
 Serial.println(newBandName); 
 // Change the band 
 boolean operationSuccess; 
 operationSuccess = band.setBand(newBandName); 
 // Tell the user if the operation was OK 
 if(operationSuccess)
 { 
 Serial.println("Success");
 } 
 else
 { 
 Serial.println("Error while changing band");
 } 
 if(operationSuccess)
 { 
 while(true); 
 } 
 }
 // This function offers the user different options
 // through the Serial interface
 // The user selects one
 String askUser()
 {
 String newBand; 
 Serial.println("Select band:"); 
 // Print the different options 
 Serial.println("1 : E-GSM(900)"); 
 Serial.println("2 : DCS(1800)"); 
 Serial.println("3 : PCS(1900)"); 
 Serial.println("4 : E-GSM(900)+DCS(1800) ex: Europe"); 
 Serial.println("5 : GSM(850)+PCS(1900) Ex: USA, South Am."); 
 Serial.println("6 : GSM(850)+E-GSM(900)+DCS(1800)+PCS(1900)"); 
 // Empty the incoming buffer 
 while(Serial.available()) 
 Serial.read(); 
 // Wait for an answer, just look at the first character 
 while(!Serial.available()); 
 char c= Serial.read(); 
 if(c=='1')
 newBand=GSM_MODE_EGSM; 
 else if(c=='2')
 newBand=GSM_MODE_DCS; 
 else if(c=='3')
 newBand=GSM_MODE_PCS; 
 else if(c=='4')
 newBand=GSM_MODE_EGSM_DCS; 
 else if(c=='5')
 newBand=GSM_MODE_GSM850_PCS; 
 else if(c=='6')
 newBand=GSM_MODE_GSM850_EGSM_DCS_PCS; 
 else
 newBand="GSM_MODE_UNDEFINED";
 return newBand;
 }
answered May 6, 2014 at 8:12

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.