GPRS Shield

From GOF_Wiki
Jump to: navigation, search

Contents

Firmware Update

Now we have firmware update for GPRS Shield, please refer to GPRS Shield(SIM900) Firmware Update.

You can use AT Command "AT+GSV" to check the current version of the Firmware.

Introduction

The GPRS Shield is based on SIM900 module from SIMCOM and compatible with Arduino and its clones. The GPRS Shield provides you a way to communicate using the GSM cell phone network. The shield allows you to achieve SMS, MMS, GPRS and Audio via UART by sending AT commands (GSM 07.07 ,07.05 and SIMCOM enhanced AT Commands). The shield also has the 12 GPIOs, 2 PWMs and an ADC of the SIM900 module(They are all 2V8 logic) present onboard.

Module: M2011120701

Wifi.jpg

Features

Specifications

Mechanic Dimension 68.7mm X53.5mm X 19.6mm
Communication Protocol UART
LED Indicators PWR(Green), Staus(Blue), Netlight(Red)
Power supply 5V from Arduino board
Vbat 4.1V (for SIM900)
Current Consumption 2A(max)
Baud rate(default) 19200bps
RoHS Yes

Application Ideas

Cautions

  • Make sure your SIM card is unlocked.
  • The product is provided as is without an insulating enclosure. Please observe ESD precautions specially in dry (low humidity) weather.
  • The factory default setting for the GPRS Shield UART is 19200 bps 8-N-1. (Can be changed using AT commands).
  • NewSoftLibrary library only support baudrate under 38400bps, it may lose data while communicate over 38400bps.
  • The standard NewSoftSerial library doesn't have support for receive on the Mega. Bhagman has written a new version of NewSoftSerial that has this support:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1287382108

http://code.google.com/p/rogue-code/downloads/detail?name=NewSoftSerial10c-withMegaAndStream.zip

He've tried this new library. One limitation is that it only works on pins that support interrupts(Pin11,12), so on the Mega it only works on Hardware UART.

  • The default Buffer of Rx in NewSoftSerial.h is 32, you may experience some data lose while the returns of SIM900 are many(Receiving SMS/TCPIP), you can try to change the Buffer of Rx in NewSoftSerial.h into
   #define _NewSS_MAX_RX_BUFF 128 // RX buffer size
  • In some case, a transmitting burst may cause current consumption of Sim900 to tyoical peaks of 2A; And the USB cable only provide 0.5A max current, so better using external power jack rather than USB cable to power the Arduino for stand alone use of GPRS Shield.

Hardware Diagram

Interface Picture Instructions.jpg

Getting Started

GPRSP.jpg
Easy steps to get your GPRS Shield started

AT Command syntax

AT Command is simple textual commands communicated with GPRS Shield over its serial interface (UART). The "AT" or "at" prefix must be set at the beginning of each Command line. To terminate a Command line enter <CR>. Commands are usually followed by a response that includes. "<CR><LF><response><CR><LF>" Throughout this document, only the responses are presented, <CR><LF> are omitted intentionally.

Note: A HEX string such as "00 49 49 49 49 FF FF FF FF" will be sent out through serial port at the baud rate of 115200 immediately after SIM900 is powered on. The string shall be ignored since it is used for synchronization with PC tool. Only enter AT Command through serial port after SIM900 is powered on and Unsolicited Result Code "RDY" is received from serial port. If auto-bauding is enabled, the Unsolicited Result Codes "RDY" and so on are not indicated when you start up the shield, and the "AT" prefix, not "at" prefix must be set at the beginning of each command line.

For more information please refer to AT Commands Manual v1.03.

Power Up and Power Dowm the GPRS Shield

Power Up the GPRS Shield

The GPRS Shield can be turned on by two ways:

ONs.jpg
Figure of Timing of turning on GPRS Shield using Hardware Triger
Pwrs.jpg
Figure of Timing of turning on GPRS Shield using Software Triger

The following code is power up subroutine for Arduino if using software triger:

void powerUp()
{
  pinMode(9, OUTPUT); 
  digitalWrite(9,LOW);
  delay(1000);
  digitalWrite(9,HIGH);
  delay(2000);
  digitalWrite(9,LOW);
  delay(3000);
}

When power on procedure completes, the SIM900 will send out following result code to indicate the GPRS shield is ready to operate; When set as fixed baud rate, the SIM900 will send out result code: RDY This result code does not appear when auto baud rate is active.

Power Down the GPRS Shield

The GPRS Shield can be turned off by following ways:

The power down scenarios illustrates as following figure:

ONd.jpg
Figure of Timing of turning off GPRS Shield using Hardware Triger
Pwrd.jpg
Figure of Timing of turning off GPRS Shield using Software Triger

The following code is power down subroutine for Arduino if using software triger:

void powerDown()
{
  pinMode(9, OUTPUT); 
  digitalWrite(9,LOW);
  delay(1000);
  digitalWrite(9,HIGH);
  delay(2000);
  digitalWrite(9,LOW);
  delay(3000);
}


When GPRS Shield power dowm in Normal power down procedure, the procedure lets the SIM900 log off from the network and allows the software to enter into a secure state and save data before completely disconnecting the power supply. Before the completion of the power down procedure the SIM900 will send out result code:

NORMAL POWER DOWN

①If the voltage ≤ 3.3V, the following URC will be presented:

UNDER-VOLTAGE WARNNING

②If the voltage ≥ 4.7V, the following URC will be presented:

OVER-VOLTAGE WARNNING

③The uncritical voltage range is 3.2V to 4.8V. If the voltage > 4.8V or < 3.2V, SIM900 will be automatic power down soon. If the voltage < 3.2V, the following URC will be presented:

UNDER-VOLTAGE POWER DOWN

④If the voltage > 4.8V, the following URC will be presented:

OVER-VOLTAGE POWER DOWN

①If the temperature > 80℃, the following URC will be presented:

+CMTE:1

②If the temperature < -30℃, the following URC will be presented:

+CMTE:-1

③The uncritical temperature range is -40℃ to +85℃. If the temperature > +85℃ or < -40℃, the module will be automatic power down soon. If the temperature > +85℃, the following URC will be presented:

+CMTE:2

④If the temperature < -40℃, the following URC will be presented:

+CMTE:-2

When the GPRS Shield encounters POWER DOWN scenario, the AT commands can not be executed. The SIM900 logs off from network and enters the POWER DOWN mode, only the RTC is still active. POWER DOWN can also be indicated by STATUS LED(Blue), which is off in this mode.

Note:

  • To monitor the temperature, users can use the “AT+CMTE” command to read the temperature when GPRS Shield is powered on.
  • To monitor the supply voltage, users can use the “AT+CBC” command which includes a parameter: voltage value(in mV) when GPRS Shield is powered on.

Serial Port(UART) Communication

The GPRS Shield is used UART protocol to communicate with an Arduino/Arduino clone; Users can use jumpers to connect (RX,TX) of the shield to either Software Serial(D8,D7) or Hardware Serial(D1,D0) of the Arduino.Detailed information is showed as the following picture:

Coms.jpg
Selectalbe GPRS Shield Communication Port

Note:

  • Users can use “AT+IPR=?” command to see supported baudrate, it will response a list of supported baudrate.
  • Users can use “AT+IPR=x”(x is value of supported baudrate) to set a fixed baud rate and save the configuration to non-volatile flash memory.
  • When users select Software Serial to communicate, NewSoftLibrary library should be install in arduino‘s libraries.
  • NewSoftLibrary library only support baudrate under 38400bps.

Indicator LEDs

There are three indicator LEDs(PWR(Green), Staus(Blue), Netlight(Red)) on the GPRS Shield, users can know about the working state of the shield based on the three indicator LEDs. Detailed information please refer to the following table:

LEDs(color) Status Description
PWR(Green) ON Power of the GPRS Shield is on
OFF Power of the GPRS Shield is off
Staus(Blue) ON SIM900 is on
OFF SIM900 is off
Netlight(Red) 64ms On/800ms Off SIM900 has not registered to a network
64ms On/3000ms Off SIM900 has registered to a network
64ms On/300ms Off GPRS communication
OFF SIM900 is not running


SIM Card Installation

An unlocked SIM card should be inserted in SIM Card Holder on the bottom side of the shield. Both 1.8 volts and 3.0 volts SIM Cards are supported by SIM900 and the SIM card voltage type is automatically detected by SIM900.

Note: Make sure your SIM Card is unlocked; If you not sure, you can check with your provider.

Antenna Interface

The shield comes with a GSM qurd-band antenna; Make sure the antenna is assembled and antenna pad is buckled properly.

Audio Interface

The GPRS Shield has 3.5mm Microphone interface and Speaker Interface, If you want to make voice calls, you would also require a headset with microphone.

Upload Sketch to Arduino

Grpsaurduinouart.jpg
Data Stream among Computer, Arduino and GPRS Shield

The following sketch configures Arduino/Arduino clone as serial link between PC and the GPRS Shield(Jumpers on SWserial side). PC would need a serial terminal software to communicate with it - Window's built-in HyperTerminal, Arduino IDE's Serial Monitor, Serial Terminals(sscom32) or Bray++ Terminal.

After uploading the sketch to the Arduino board, press the ON/OFF button on the GPRS Shield to turn it on; Now you can see what you get on the serial terminal and the status of the three indicator LEDs, then communicate with your Shield.

//Serial Relay - Arduino will patch a 
//serial link between the computer and the GPRS Shield
//at 19200 bps 8-N-1
//Computer is connected to Hardware UART
//GPRS Shield is connected to the Software UART 
 
#include <SoftwareSerial.h>
 
SoftwareSerial GSMSerial(7, 8);
 
void setup()
{
  GSMSerial.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);                 // the GPRS baud rate   
}
 
void loop()
{
    if(Serial.available())
    {
       GSMSerial.print((char)Serial.read());
     }  
    else  if(GSMSerial.available())
    {
       Serial.print((char)GSMSerial.read());
     }   
 
}

Note:

  • The "AT" or "at" prefix must be set at the beginning of each Command line. To terminate a Command line enter <CR>.

Examples

A library(GoGprs) for GPRS Shield from MChobby: https://github.com/mchobby/GoGprs

  • The default Buffer of Rx in SoftwareSerial.h is 32/64, you may experience some data lose while the returns of SIM900 are many(Receiving SMS/TCPIP), you can try to change the Buffer of Rx in SoftwareSerial.h into
   #define _SS_MAX_RX_BUFF 128 // RX buffer size

Sending SMS: using Software UART

#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(7, 8);
 
void setup()
{
  mySerial.begin(19200);  //Default serial port setting for the GPRS modem is 19200bps 8-N-1
  mySerial.print("\r");
  delay(1000);                    //Wait for a second while the modem sends an "OK"
  mySerial.print("AT+CMGF=1\r");    //Because we want to send the SMS in text mode
  delay(1000);
 
  //mySerial.print("AT+CSCA=\"+919032055002\"\r");  //Setting for the SMS Message center number,  
  //delay(1000);                                  //uncomment only if required and replace with
                                                  //the message center number obtained from
                                                  //your GSM service provider.
                                                  //Note that when specifying a tring of characters
                                                  // " is entered as \"
 
  mySerial.print("AT+CMGS=\"+9184460xxxx\"\r");    //Start accepting the text for the message
                                                  //to be sent to the number specified.
                                                  //Replace this number with the target mobile number.
  delay(1000);
  mySerial.print("Hi from Geekonfire!\r");   //The text for the message
  delay(1000);
  mySerial.write(0x1A);  //Equivalent to sending Ctrl+Z 
}
 
void loop()
{
      //We just want to send the SMS only once, so there is nothing in this loop.
      //If we put the code for SMS here, it will be sent again and again and cost us a lot.
}

Making a call: using Software UART

#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(7, 8);
 
void setup()
{
  mySerial.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);               // the GPRS baud rate   
  delay(2000);
  mySerial.println("ATDxxxxxxxxx;"); // xxxxxxxxx is the number you want to dial.  
 
  if(mySerial.available())
  {
    Serial.print((unsigned char)mySerial.read());
  }  
 
  delay(10000); 
  delay(10000); 
 
  mySerial.println("ATH"); //End the call.
  if(mySerial.available())
  {
    Serial.print((unsigned char)mySerial.read());
  }    
}
 
void loop()
{
  //Do nothing
}

Using AT Commands to Control GPIO and PWM pins

Note: GPIOs,PWMs and ADC of the SIM900 module are all 2V8 logic.

#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(7, 8);
 
void setup()
{
  mySerial.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);               // the GPRS baud rate   
  delay(2000);
}
 
void loop()
{
  mySerial.println("AT+SPWM=1,63,100");// set PWM 1 PIN
  mySerial.println("AT+SPWM=2,63,50");// set PWM 2 PIN
 
  mySerial.println("AT+SGPIO=0,1,1,1");// set GPIO 1 PIN to 1
  mySerial.println("AT+SGPIO=0,12,1,1");
  delay(1000);  
 
  mySerial.println("AT+SGPIO=0,1,1,0");// set GPIO 1 PIN to 0
  mySerial.println("AT+SGPIO=0,12,1,0");
  delay(1000);    
}

Using Sms to Control an LED Status

This example is controbuted by MChobby, for more information please visit: http://mchobby.be/wiki/index.php?title=SmsCommand

Send a SMS message "on" or "off" from your cellphone to the GPRS Shield to control the Digital Pin 13(LED) Status.

  • The default Buffer of Rx in SoftwareSerial.h is 32/64, you may experience some data lose while the returns of SIM900 are many(Receiving SMS/TCPIP), you can try to change the Buffer of Rx in SoftwareSerial.h into
   #define _SS_MAX_RX_BUFF 128 // RX buffer size

// EN: 
//   SmsCommand - Active Pin 13 On/OFF depending on the received SMS message (on/off).
//                This soft also send the PIN code to SIM card when appropriate.
//   Based on Serial Relay. Arduino will still patch a  serial link between the 
//             computer and the GPRS Shield at 19200 bps 8-N-1.
//
//   *** Configure Serial Monitor to Carriage Return, 19200 bauds ***
//
//   *** VERY IMPORTANT!!!                                  ***
//   *** FOR READING SMS, DO NOT FORGET TO CHANGE           ***
//   *** THE BUFFER SIZE OF NewSoftSerial to 128 bytes      ***
//   ***   see line _NewSS_MAX_RX_BUFF in NewSoftSerial.h   ***
//
// FR: 
//   SmsCommand - Active la pin 13 allumer/éteindre en fonction du message (on/off) 
//             reçu par SMS. Ce logiciel envoie également le code PIN si la carte SIM
//             en demande un.
//   Basé Serial Relay. Arduino maintient également une liaison série entre l'ordinateur  
//             et le shield GPRS a 19200 bps 8-N-1.
//
//   *** Configurer le Moniteur Serie sur Carriage Return, 19200 bauds ***
//
//   *** TRES IMPORTANT!!!  
//   *** POUR LA LECTURE DES SMS, NE PAS OUBLIER DE MODIFIER              ***                
//   ***  LA TAILLE DU BUFFER DE RECEPTION DE NewSoftSerial SUR 128 bytes ***
//   ***   voir la ligne _NewSS_MAX_RX_BUFF dans NewSoftSerial.h          ***
//  
//  Pour plus d'information voir 
//      http://mchobby.be/wiki/index.php?title=GeekOnFire_GSM/GPRS_Shield
//
//  Licence - Share-Alike - CC-BY-SA
//
//  Toutes toute référence, mention ou extrait de ce contenu doit être explicitement 
//  accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » 
//  et ce quelque soit le média utilisé.  
//
//  BONNE AMUSEMENT :-)
//
#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(7, 8);
 
// EN: String buffer for the GPRS shield message
// FR: Mémoire tampon de type string pour les messages du shield GPRS 
String msg = String("");
// EN: Set to 1 when the next GPRS shield message will contains the SMS message
// FR: Est mis à 1 quand le prochain message du shield GPRS contiendra le contenu du SMS
int SmsContentFlag = 0;
 
// EN: Pin of the LED to turn ON and OFF depending on the received message
// FR: Pin de la LED a allumer/éteindre en fonction du message reçu
int ledPin = 13;
 
// EN: Code PIN of the SIM card (if applied)
// FR: Code PIN de la carte SIM (si applicable)
String SIM_PIN_CODE = String( "XXXX" );
 
void setup()
{
  mySerial.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);                 // the GPRS baud rate
 
  // Initialize la PIN
  pinMode( ledPin, OUTPUT ); 
  digitalWrite( ledPin, LOW ); 
}
 
void loop()
{
    char SerialInByte;
 
    if(Serial.available())
    {
       mySerial.print((unsigned char)Serial.read());
     }  
    else  if(mySerial.available())
    {
        char SerialInByte;
        SerialInByte = (unsigned char)mySerial.read();
 
        // EN: Relay to Arduino IDE Monitor
        // FR: Relayer l'information vers le moniteur Serie Arduino
        Serial.print( SerialInByte );
 
        // -------------------------------------------------------------------
        // EN: Program also listen to the GPRS shield message.
        // FR: Le programme écoute également les messages issus du GPRS Shield.
        // -------------------------------------------------------------------
 
        // EN: If the message ends with <CR> then process the message
        // FR: Si le message se termine par un <CR> alors traiter le message 
        if( SerialInByte == 13 ){
          // EN: Store the char into the message buffer
          // FR: Stocké le caractère dans le buffer de message
          ProcessGprsMsg();
         }
         if( SerialInByte == 10 ){
            // EN: Skip Line feed
            // FR: Ignorer les Line Feed 
         }
         else {
           // EN: store the current character in the message string buffer
           // FR: stocker le caractère dans la mémoire tampon réservé au message
           msg += String(SerialInByte);
         }
     }   
}
 
// EN: Make action based on the content of the SMS. 
//     Notice than SMS content is the result of the processing of several GPRS shield messages.
// FR: Execute une action sur base du contenu d'un SMS.
//     Notez que le contenu du SMS est le résultat du traitement de plusieurs messages du shield GPRS.
void ProcessSms( String sms ){
  Serial.print( "ProcessSms for [" );
  Serial.print( sms );
  Serial.println( "]" );
 
  if( sms.indexOf("on") >= 0 ){
    digitalWrite( ledPin, HIGH );
    Serial.println( "LED IS ON" );
    return;
  }
  if( sms.indexOf("off") >= 0 ){
    digitalWrite( ledPin, LOW );
    Serial.println( "LED IS OFF" );
    return;
  }
}
 
// EN: Send the SIM PIN Code to the GPRS shield
// FR: Envoyer le code PIN de la carte SIM au shield GRPS
void GprsSendPinCode(){
  if( SIM_PIN_CODE.indexOf("XXXX")>=0 ){
    Serial.println( "*** OUPS! you did not have provided a PIN CODE for your SIM CARD. ***" );
    Serial.println( "*** Please, define the SIM_PIN_CODE variable . ***" );
    return;
  }
  mySerial.print("AT+CPIN=");
  mySerial.println( SIM_PIN_CODE );
}
 
// EN: Request Text Mode for SMS messaging
// FR: Demande d'utiliser le mode Text pour la gestion des messages
void GprsTextModeSMS(){
  mySerial.println( "AT+CMGF=1" );
}
 
void GprsReadSmsStore( String SmsStorePos ){
  // Serial.print( "GprsReadSmsStore for storePos " );
  // Serial.println( SmsStorePos ); 
  mySerial.print( "AT+CMGR=" );
  mySerial.println( SmsStorePos );
}
 
// EN: Clear the GPRS shield message buffer
// FR: efface le contenu de la mémoire tampon des messages du GPRS shield.
void ClearGprsMsg(){
  msg = "";
}
 
// EN: interpret the GPRS shield message and act appropiately
// FR: interprete le message du GPRS shield et agit en conséquence
void ProcessGprsMsg() {
  Serial.println("");
  Serial.print( "GPRS Message: [" );
  Serial.print( msg );
  Serial.println( "]" );
 
  if( msg.indexOf( "+CPIN: SIM PIN" ) >= 0 ){
     Serial.println( "*** NEED FOR SIM PIN CODE ***" );
     Serial.println( "PIN CODE *** WILL BE SEND NOW" );
     GprsSendPinCode();
  }
 
  if( msg.indexOf( "Call Ready" ) >= 0 ){
     Serial.println( "*** GPRS Shield registered on Mobile Network ***" );
     GprsTextModeSMS();
  }
 
  // EN: unsolicited message received when getting a SMS message
  // FR: Message non sollicité quand un SMS arrive
  if( msg.indexOf( "+CMTI" ) >= 0 ){
     Serial.println( "*** SMS Received ***" );
     // EN: Look for the coma in the full message (+CMTI: "SM",6)
     //     In the sample, the SMS is stored at position 6
     // FR: Rechercher la position de la virgule dans le message complet (+CMTI: "SM",6) 
     //     Dans l'exemple, le SMS est stocké à la position 6
     int iPos = msg.indexOf( "," );
     String SmsStorePos = msg.substring( iPos+1 );
     Serial.print( "SMS stored at " );
     Serial.println( SmsStorePos );
 
     // EN: Ask to read the SMS store
     // FR: Demande de lecture du stockage SMS
     GprsReadSmsStore( SmsStorePos );
  }
 
  // EN: SMS store readed through UART (result of GprsReadSmsStore request)  
  // FR: Lecture du stockage SMS via l'UART (résultat de la requete GprsReadSmsStore)
  if( msg.indexOf( "+CMGR:" ) >= 0 ){
    // EN: Next message will contains the BODY of SMS
    // FR: Le prochain message contiendra le contenu du SMS
    SmsContentFlag = 1;
    // EN: Following lines are essentiel to not clear the flag!
    // FR: Les ligne suivantes sont essentielle pour ne pas effacer le flag!
    ClearGprsMsg();
    return;
  }
 
  // EN: +CMGR message just before indicate that the following GRPS Shield message 
  //     (this message) will contains the SMS body
  // FR: le message +CMGR précédent indiquait que le message suivant du Shield GPRS 
  //     (ce message) contient le corps du SMS 
  if( SmsContentFlag == 1 ){
    Serial.println( "*** SMS MESSAGE CONTENT ***" );
    Serial.println( msg );
    Serial.println( "*** END OF SMS MESSAGE ***" );
    ProcessSms( msg );
  }
 
  ClearGprsMsg();
  // EN: Always clear the flag
  // FR: Toujours mettre le flag à 0
  SmsContentFlag = 0; 
}


Data Monitor from the Arduino IDE's Serial Monitor orSerial Terminals(sscom32)


ÿÿÿÿÿÿÿÿ
GPRS Message: [ÿÿÿÿÿÿÿÿ A]
 
RDY
GPRS Message: [RDY]
 
GPRS Message: []
 
+CFUN: 1
GPRS Message: [+CFUN: 1]
 
GPRS Message: []
 
+CPIN: SIM PIN
GPRS Message: [+CPIN: SIM PIN]
*** NEED FOR SIM PIN CODE ***
PIN CODE *** WILL BE SEND NOW
 
AT+CPIN=--secret--
GPRS Message: [AT+CPIN=--secret--]
 
GPRS Message: []
OK
 
GPRS Message: [OK]
 
GPRS Message: []
 
Call Ready
GPRS Message: [Call Ready]
*** GPRS Shield registered on Mobile Network ***
 
AT+CMGF=1
GPRS Message: [AT+CMGF=1]
 
GPRS Message: []
 
OK
GPRS Message: [OK]
 
GPRS Message: []
 
+CMTI: "SM",20
GPRS Message: [+CMTI: "SM",20]
*** SMS Received ***
SMS stored at 20
 
AT+CMGR=20
GPRS Message: [AT+CMGR=20]
 
GPRS Message: []
 
+CMGR: "REC UNREAD","+3249--secret--","","12/04/08,14:00:15+08"
GPRS Message: [+CMGR: "REC UNREAD","+3249--secret--","","12/04/08,14:00:15+08"]
 
on
GPRS Message: [on]
*** SMS MESSAGE CONTENT ***
on
*** END OF SMS MESSAGE ***
ProcessSms for [on]
LED IS ON
 
GPRS Message: [ ]
 
OK
GPRS Message: [OK]
 
GPRS Message: []
 
+CMTI: "SM",21
GPRS Message: [+CMTI: "SM",21]
*** SMS Received ***
SMS stored at 21
AT+CMGR=21
GPRS Message: [AT+CMGR=21]
 
GPRS Message: []
 
+CMGR: "REC UNREAD","+3249--secret--","","12/04/08,14:00:39+08"
GPRS Message: [+CMGR: "REC UNREAD","+3249--secret--","","12/04/08,14:00:39+08"]
 
off
 
GPRS Message: [off]
*** SMS MESSAGE CONTENT ***
off
*** END OF SMS MESSAGE ***
ProcessSms for [off]
LED IS OFF
 
GPRS Message: []
 
OK
GPRS Message: [OK]

Schematics

GPRSshield_sch.pdf

Resources

GoGprs from MChobby -- A library for GPRS Shield

SIM900 AT Commands Manual v1.03.pdf

SIM900_hd_v1.06.pdf

SIM900_TCP/IP Application Note

Si5902BDC - Dual N-Channel 30 V (D-S) MOSFETs (used for 2.8V <> 5.0V translation for Serial Interface)

NewSoftLibrary

Serial Terminals(sscom32)

Simcom - sim900 Customer flash loader V1.01

Firmware:1137B03SIM900M64_ST_MMS

SIM900 GSM Location Application Note

SIM900 MMS AT Command Application Note

How to buy

GPRS Shield can be ordered through the GOF store. Its product page is located here

See Also

GPRS Shield(SIM900) Firmware Update

Licensing

This documentation is licensed under the Creative Commons Attribution-ShareAlike License 3.0 Source code and libraries are licensed under GPL/LGPL, see source code files for details.

Personal tools
Variants
Actions
Navigation
Support
Toolbox