Skip to main content

GPRS Shield V3.0

This is version 3.0 of GPRS Shield. Hook your Arduino up to GSM/GPRS cell phone network with GPRS shield! You can use your Arduino/Seeeduino or other main boards to dial a phone number or send a text to your friend via easy to use AT commands now. GPRS Shield features a quad-band low power consumption GSM/GPRS module SIM900 as well as a compact PCB antenna.Meanwhile, improvements on interfaces and basic circuit have been taken to make it more concise and reliable. And there’re two choices for you to communicate GPRS shield with the main board -- UART or SoftwareSerial.


v0.9bInitial public release (beta)Mar 3, 2011
v1.2Added software port to power on/off of SIM90Dec 2, 2011
v1.4Re-design the power source circuit, re-lay the PCB layoutAug 30, 2012
v2.0Quad band support and re-design PCB antennaFeb 3, 2013
v3.0Change arduino socket to the latest Arduino Uno standardMar 20, 2015

What's the difference between V3.0 and previous version?

  • Change the arduino socket to the latest Arduino Uno standard. Except this, all the features are same with the previous version.


  • Make sure your SIM card is activated.
  • GPRS Shield doesn't come with ESD precautions. Take special care when handling it in dry weather.

Hardware Overview

Please link to the documentation of GPRS Shield V2.0 for specifications and application guide.


Q1: How to modify Code for leonardo?

A1: Here is the code.

#include <SoftwareSerial.h>

unsigned char buffer[64]; // buffer array for data recieve over serial port
int count = 0; // counter for buffer array

void setup()
Serial1.begin(19200); // the GPRS baud rate
Serial.begin(19200); // the Serial port of Arduino baud rate.

void loop()
if (Serial1.available()) // if date is comming from softwareserial port ==> data is comming from gprs shield
while (Serial1.available()) // reading data into char array
buffer[count++] =; // writing data into array
if (count == 64)

for ( int j=0;j<count;j++)
clearBufferArray(); // call clearBufferArray function to clear the storaged data from the array
count = 0; // set counter of while loop to zero
if (Serial.available()) // if data is available on hardwareserial port ==> data is comming from PC or notebook
Serial1.write(; // write it to the GPRS shield

void clearBufferArray() // function to clear buffer array
for (int i=0; i < count; i++)
buffer[i] = NULL;
} // clear all index of array with command NULL

Q2: How Update the firmware of SIM900?

Q2: Please download the firmware "SIM_900_AGPS_instructions" from Resource module on the wiki,if you have any problem of software or hardware.And this latest one can support HTTPS ,etc.More information please refer to the introduction within.

Q3: What about RTC of GPRS shield?

Q3: The specification of SIM900 says it has a RTC backup,but we have not used it so far. Maybe you can refer to the manual and make a demo yourself or we would make it in the future.

Q4: I can't send or receive any SMS with this GPRS shield.

A4: Please follow below instructions.

  • Please make sure that the SIM card is well inserted
  • Check the card on the phone whether it works.
  • Try to upload the test code from our wiki and send AT commands to see whether any good returns.
  • Try to change the "#define _SS_MAX_RX_BUFF 64 // RX buffer size" in "libraries\SoftwareSerial\SoftwareSeriall.h" to "#define_SS_MAX_RX_BUFF 128 // RX buffer size

Q5: Two alternative ways to help to wake up the GPRS shield

A5: Here are the 2 ways.

  • Pull DTR pin low : The serial port will be active after DTR is pulled to low for 20ms
  • RTC alarm expires

Q6: Which type of SIM cards work with GPRS Shield?

A6: SIM900 used in GPRS Shield supports 850/900/1800/1900MHz GSM bands.

Schematic Online Viewer


Tech Support & Product Discussion

Thank you for choosing our products! We are here to provide you with different support to ensure that your experience with our products is as smooth as possible. We offer several communication channels to cater to different preferences and needs.

Loading Comments...