Error en proyecto al configurar GPS NEO 6M

Hola! Vengo aca con el objetivo de que me puedan ayudar a resolver mi problema. Quiero crear un programa que, mandando un sms a un modulo SIM, este me devuelva un mensaje junto con la ubicacion ademas de prender un LED. El problema aparece cuando nombro y configuro la velocidad al modulo gps, ya que por asi decirlo, el programa no detecta la configuracion sobre el modo de mensajes. Si no inicio el GPS, detecta el modo texto, detecta los mensajes ademas de devolverlo, prende el LED, pero no me manda la ubicacion deseada del GPS porque no lo configure

Uso Arduino Uno, Sim 900 y GPS Ublox Neo 6M.

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

SoftwareSerial SIM900(7, 8); // Configura el puerto serie para el SIM900
static const int RXPin = 5, TXPin = 4;
TinyGPSPlus gps;
SoftwareSerial serialVirtual(RXPin, TXPin);
char incoming_char = 0; //Variable que guarda los caracteres que envia el SIM900
String mensaje = "";
int LED = 13 ;

void setup()
{
pinMode( LED, OUTPUT) ; // LED como salida
inicializaSIM900();
}

void loop()
{
  if (SIM900.available() > 0)
  {
    incoming_char = SIM900.read(); //Guardamos el carácter del GPRS
    Serial.print(incoming_char); //Mostramos el carácter en el monitor serie
    mensaje = mensaje + incoming_char ; // Añadimos el carácter leído al mensaje
  }
    while (serialVirtual.available() > 0)    //Verificamos si el GPS está enviando los datos
    if (gps.encode(serialVirtual.read()))
    {
      Serial.println(gps.location.lat(),6);
      Serial.println(gps.location.lng(),6);
    }
  identifica_SMS();
}


void inicializaSIM900()
{
  //digitalWrite(9, HIGH);   // Descomentar para activar la alimentación de la tarjeta por Software
  //delay(1000);             
  //digitalWrite(9, LOW);
  delay (500);
  SIM900.begin(19200); //Configura velocidad del puerto serie para el SIM900
  Serial.begin(19200); //Configura velocidad del puerto serie del Arduino
  serialVirtual.begin(9600);    //Velocidad del módulo GPS en 9600
  Serial.println("OK");
  delay (100);
  SIM900.println("AT + CPIN = \"XXXX\""); //Comando AT para introducir el PIN de la tarjeta
  delay(200); //Tiempo para que encuentre una RED
  Serial.println("PIN OK");
  SIM900.print("AT+CLIP=1\r"); // Activa la identificación de llamada
  delay(100);
  SIM900.print("AT+CMGF=1\r"); //Configura el modo texto para enviar o recibir mensajes
  delay(100);
  SIM900.print("AT+CNMI=2,2,0,0,0\r"); // Saca el contenido del SMS por el puerto serie del GPRS
  delay(100);
  
}

void identifica_SMS()
{
  int led_on = mensaje.indexOf("Encender LED");
  int led_off = mensaje.indexOf("Apagar LED");
  if (led_on >= 0)
  {
        digitalWrite( LED, HIGH) ;
        SIM900.println("AT+CMGS=\"1122334455\"");
        delay(100);
        SIM900.print("Hola, estoy en https://maps.google.com/maps?q=");
        SIM900.print(gps.location.lat(),6);
        SIM900.print("+");
        SIM900.print(gps.location.lng(),6);
        delay(100);
        SIM900.println((char)26);    //El código ASCII del ctrl + z es 26
        delay(100);
        SIM900.println();
        delay(5000);
        Serial.println("\nLED ENCENDIDO");
        Serial.println("Mensaje enviado");
        mensaje = "" ; //Bórralo para la próxima vez
  }
  if (led_off >= 0)
  {
        digitalWrite( LED, LOW) ;
        Serial.println("\nLED APAGADO");
        mensaje = "" ; //Bórralo para la próxima vez
  }
}

Dejo aca el mismo codigo pero sin configurar el GPS.

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

SoftwareSerial SIM900(7, 8); // Configura el puerto serie para el SIM900
static const int RXPin = 5, TXPin = 4;
TinyGPSPlus gps;
SoftwareSerial serialVirtual(RXPin, TXPin);
char incoming_char = 0; //Variable que guarda los caracteres que envia el SIM900
String mensaje = "";
int LED = 13 ;

void setup()
{
pinMode( LED, OUTPUT) ; // LED como salida
inicializaSIM900();
}

void loop()
{
  if (SIM900.available() > 0)
  {
    incoming_char = SIM900.read(); //Guardamos el carácter del GPRS
    Serial.print(incoming_char); //Mostramos el carácter en el monitor serie
    mensaje = mensaje + incoming_char ; // Añadimos el carácter leído al mensaje
  }
    while (serialVirtual.available() > 0)    //Verificamos si el GPS está enviando los datos
    if (gps.encode(serialVirtual.read()))
    {
      Serial.println(gps.location.lat(),6);
      Serial.println(gps.location.lng(),6);
    }
  identifica_SMS();
}


void inicializaSIM900()
{
  //digitalWrite(9, HIGH);   // Descomentar para activar la alimentación de la tarjeta por Software
  //delay(1000);             
  //digitalWrite(9, LOW);
  delay (500);
  SIM900.begin(19200); //Configura velocidad del puerto serie para el SIM900
  Serial.begin(19200); //Configura velocidad del puerto serie del Arduino

  Serial.println("OK");
  delay (100);
  SIM900.println("AT + CPIN = \"XXXX\""); //Comando AT para introducir el PIN de la tarjeta
  delay(200); //Tiempo para que encuentre una RED
  Serial.println("PIN OK");
  SIM900.print("AT+CLIP=1\r"); // Activa la identificación de llamada
  delay(100);
  SIM900.print("AT+CMGF=1\r"); //Configura el modo texto para enviar o recibir mensajes
  delay(100);
  SIM900.print("AT+CNMI=2,2,0,0,0\r"); // Saca el contenido del SMS por el puerto serie del GPRS
  delay(100);
  
}

void identifica_SMS()
{
  int led_on = mensaje.indexOf("Encender LED");
  int led_off = mensaje.indexOf("Apagar LED");
  if (led_on >= 0)
  {
        digitalWrite( LED, HIGH) ;
        SIM900.println("AT+CMGS=\"1122334455\"");
        delay(100);
        SIM900.print("Hola, estoy en https://maps.google.com/maps?q=");
        SIM900.print(gps.location.lat(),6);
        SIM900.print("+");
        SIM900.print(gps.location.lng(),6);
        delay(100);
        SIM900.println((char)26);    //El código ASCII del ctrl + z es 26
        delay(100);
        SIM900.println();
        delay(5000);
        Serial.println("\nLED ENCENDIDO");
        Serial.println("Mensaje enviado");
        mensaje = "" ; //Bórralo para la próxima vez
  }
  if (led_off >= 0)
  {
        digitalWrite( LED, LOW) ;
        Serial.println("\nLED APAGADO");
        mensaje = "" ; //Bórralo para la próxima vez
  }
}

Espero que puedan ayudarme, gracias.