Learning   Examples | Foundations | Hacking | Links

Examples > Band Management

Band Management

This example shows how to use the GSM Shield and Library to manage the GSM band the modem connects to.

Check http://www.worldtimezone.com/gsm.html for general GSM band information. Typical regional configurations are :

  • 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)

Hardware Required

  • Arduino board
  • Arduino + Telefonica GSM/GPRS Shield
  • SIM card

Circuit

image of the Arduino GSM Shield on top of an Arduino Uno

/*
 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
  Serial.begin(9600);

  // 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;
}

See Also:

Share