Arduino Uno + Sim800L

Hello

I'm doing a project with arduino Uno + Sim800L and a MicroSd Card. The main objetive is to get the GPRS location ( the nearest antenna) and save the coordinates in the Micro SD. The problem is, in the breadboard i retrived the coordinates but after i mount the hardware in protoboard, it doesn't get the coordinates. I don't know if there is a problem it the delay between AT commands or something in the board. I already try to upload values to thingspeak and it worked, so the sim800L it's not broke.

There is the code

#include <SoftwareSerial.h>
#include <String.h>
#include <SPI.h>
#include <SD.h>

String responce = "";
String Longitude = "";
String Latitude = "";

String result = "";

const int chipSelect = 4;

SoftwareSerial gprsSerial(8,7);

float temp=0.0;
float hr=0.0;

void setup()
{
gprsSerial.begin(9600); // the GPRS baud rate
delay(2000);
gprsSerial.println("AT");
delay(2000);
Serial.begin(9600); // the GPRS baud rate
SD.begin(4);
delay(2000);
}

void loop()
{
delay(30000); // delay 5 min 300000 menos delay
location();

}
void ShowSerialData()
{
while(gprsSerial.available()!=0)
Serial.write(gprsSerial.read());
}

void location()

{
gprsSerial.println("AT");
delay(3000);
gprsSerial.println("AT+CGATT=1");
delay(2000);
gprsSerial.println("AT+SAPBR=3,1,"CONTYPE","GPRS"");

gprsSerial.println("AT+SAPBR=3,1,"APN","internet"");

gprsSerial.println("AT+SAPBR=1,1");
delay(1200);
gprsSerial.println("AT+SAPBR=2,1");// da erro nestas 2 linhas
delay(3000);
responce = ""; Latitude=""; Longitude=""; //initialise all string to null
gprsSerial.println("AT+CIPGSMLOC=1,1"); // returns the location of closest network antenna
//delay(5000);
///// Capture GPS coordinates ////////

while (gprsSerial.available()) //Wait for result
{
char letter = gprsSerial.read();
responce = responce + String(letter); //combine char to string to get result
}
int first_comma = responce.indexOf(','); //Find the position of 1st comma // ele vai buscar a virgula da resposta "AT+CIPGSMLOC=1,1
int second_comma = responce.indexOf(',', first_comma+1); //Find the position of 2nd comma
int third_comma = responce.indexOf(',', second_comma+1); //Find the position of 3rd comm
int fourth_comma = responce.indexOf(',', third_comma+1); //Find the position of 4rd comm adicionada agora

for(int i=first_comma+1; i<second_comma; i++)
{
horas = horas + responce.charAt(i);
}
for(int i=second_comma+1; i<third_comma; i++) //Values form 2nd comma to 3rd comma is Latitude o

{
Latitude = Latitude + responce.charAt(i);
}

for(int i=third_comma+1; i<fourth_comma; i++) //Values form 2nd comma to 3rd comma is Latitude
{
Longitude = Longitude + responce.charAt(i);
}

///////////////////////////////////////////////////////////////////
delay(2000);
gprsSerial.println("AT+CIPSHUT");
delay(1000);
savefile();
}

void savefile()
{
String dataString ="\t"+String(horas)+"\t"+String(Longitude)+"\t"+String(Latitude)+"\n"+"ola";

File dataFile = SD.open("prunus.txt", FILE_WRITE);
dataFile.println(dataString);
dataFile.close();

}