user595: I have a problem. I bought a SIM900 board, but I can not connect there with the Arduino. To send AT commands on the serial the SIM900 doesn't respond, but the LED indicating that the network is on. I've tried to change the baud rate of 9600 to 19200 in the firmware of the Arduino, but it still fails. I think I'm having a problem with the connections of the SIM900, since this board strikes me as obscure (could not find the schematic on the Internet)
The board I have is identical to this:

I'm 90% sure that I am connecting to the wrong pins. But I tried to reverse the jumpers and even some soldered pins on UART.

user595: I'll tell you what worked for me, because I didn't find the schematics of this board. But your board may work differently, so it is always good to check the datasheet and the schematic (if you have one).
Power
Be sure to use an external 5V source that can supply up to 2A without dipping significantly. 
Code
#include <SoftwareSerial.h>

SoftwareSerial GPRS(7, 8);         //7 = TX, 8 = RX
unsigned char buffer[64]; port
int count=0;     
int i = 1;                         //if i = 0, send SMS.
void setup(){
  //delay(10000);
  GPRS.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);             // the Serial port of Arduino baud rate.
  Serial.print("I'm ready");
  Serial.print("Hello?"); 
}

void loop(){
  if (GPRS.available()){         // if date is comming from softwareserial port ==> data is comming from gprs shield

    while(GPRS.available()){          // reading data into char array 
      buffer[count++]=GPRS.read();     // writing data into array
      if(count == 64)break;
    }
  Serial.write(buffer,count);            // if no data transmission ends, write buffer to hardware serial port
  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
  GPRS.write(Serial.read());       // write it to the GPRS shield
  if(i == 0){
    GPRS.print("AT+CMGF=1\r"); //sending SMS in text mode
    Serial.println("AT+CMGF=1\r"); 
    delay(1000);
    GPRS.print("AT+CMGS=\"+554988063979\"\r"); // phone number
    Serial.println("AT+CMGS=\"+554988063979\"\r"); 
    delay(1000);
    GPRS.print("Test\r"); // message
    Serial.println("Test\r"); 
    delay(1000);
    GPRS.write(0x1A); //send a Ctrl+Z(end of the message)
    delay(1000);
    Serial.println("SMS sent successfully");
    i++;
  }   
}

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

Connection

Testing...
Open the serial monitor Arduino, set the baud rate in 19200 in "Both NL & CR". If not work, set to "Carriage Return". Type "AT" and wait for an OK.

Help
If you need help, these links were useful to me:

http://www.seeedstudio.com/wiki/GPRS_Shield_V1.0
http://www.seeedstudio.com/wiki/GPRS_Shield_V2.0
http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield


595: <p>I have a problem. I bought a SIM900 board, but I can not connect there with the Arduino. To send AT commands on the serial the SIM900 doesn't respond, but the LED indicating that the network is on. I've tried to change the baud rate of 9600 to 19200 in the firmware of the Arduino, but it still fails. I think I'm having a problem with the connections of the SIM900, since this board strikes me as obscure (could not find the schematic on the Internet)</p>

<p>The board I have is identical to this:
<img src="https://i.stack.imgur.com/IwIem.jpg" alt="enter image description here"></p>

<p>I'm 90% sure that I am connecting to the wrong pins. But I tried to reverse the jumpers and even some soldered pins on UART.</p>
 595: <p>I'll tell you what worked for me, because I didn't find the schematics of this board. But your board may work differently, so it is always good to check the datasheet and the schematic (if you have one).</p>

<h2><strong>Power</strong></h2>

<p>Be sure to use an external 5V source that can supply up to 2A without dipping significantly. </p>

<h2><strong>Code</strong></h2>

<pre><code>#include &lt;SoftwareSerial.h&gt;

SoftwareSerial GPRS(7, 8);         //7 = TX, 8 = RX
unsigned char buffer[64]; port
int count=0;     
int i = 1;                         //if i = 0, send SMS.
void setup(){
  //delay(10000);
  GPRS.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);             // the Serial port of Arduino baud rate.
  Serial.print("I'm ready");
  Serial.print("Hello?"); 
}

void loop(){
  if (GPRS.available()){         // if date is comming from softwareserial port ==&gt; data is comming from gprs shield

    while(GPRS.available()){          // reading data into char array 
      buffer[count++]=GPRS.read();     // writing data into array
      if(count == 64)break;
    }
  Serial.write(buffer,count);            // if no data transmission ends, write buffer to hardware serial port
  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 ==&gt; data is comming from PC or notebook
  GPRS.write(Serial.read());       // write it to the GPRS shield
  if(i == 0){
    GPRS.print("AT+CMGF=1\r"); //sending SMS in text mode
    Serial.println("AT+CMGF=1\r"); 
    delay(1000);
    GPRS.print("AT+CMGS=\"+554988063979\"\r"); // phone number
    Serial.println("AT+CMGS=\"+554988063979\"\r"); 
    delay(1000);
    GPRS.print("Test\r"); // message
    Serial.println("Test\r"); 
    delay(1000);
    GPRS.write(0x1A); //send a Ctrl+Z(end of the message)
    delay(1000);
    Serial.println("SMS sent successfully");
    i++;
  }   
}

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

<h2><strong>Connection</strong></h2>

<p><img src="https://i.stack.imgur.com/PfIu8.jpg" alt="enter image description here"></p>

<h2><strong>Testing...</strong></h2>

<p>Open the serial monitor Arduino, set the baud rate in 19200 in "Both NL &amp; CR". If not work, set to "Carriage Return". Type "AT" and wait for an OK.</p>

<p><img src="https://i.stack.imgur.com/YaamU.png" alt="enter image description here"></p>

<h2><strong>Help</strong></h2>

<p>If you need help, these links were useful to me:</p>

<ol>
<li><a href="http://www.seeedstudio.com/wiki/GPRS_Shield_V1.0" rel="nofollow noreferrer">http://www.seeedstudio.com/wiki/GPRS_Shield_V1.0</a></li>
<li><a href="http://www.seeedstudio.com/wiki/GPRS_Shield_V2.0" rel="nofollow noreferrer">http://www.seeedstudio.com/wiki/GPRS_Shield_V2.0</a></li>
<li><a href="http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield" rel="nofollow noreferrer">http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield</a></li>
</ol>
