Problema en Peticiones HTTP con comandos AT (Módulo SIM808)

Buenas tardes comunidad, la verdad no se que pasaría que me tomo el código, este código ya lo tenia anteriormente y no funciono, pero ahora ya lo realiza, quizá hay que jugar con los delay() dejo el código funcional (Solo la parte de la petición, en esta ocasión lo realice por Petición GET)

void enviarPeticionGET() {
  // do {
    // respuestaPeticion = "0";

    Serial2.println("AT+CGPSOUT=1"); //Cierro el flujo de datos que recibo del GPS
    delay(1000);      
    
    Serial.println();

    Serial.println("Ejecutando comandos para enviar datos a la API...");

    Serial2.println("AT");
    delay(1000);
  
    Serial2.println("AT+HTTPTERM"); //Finalizar sesión HTTP por si hay alguna abierta antes de iniciar una sesión.
    delay(2000);
  
    Serial2.println("AT+SAPBR=0,1"); // Contexto de portador desactivado por si hay alguno activo
    delay(2000);
  
    Serial2.println("AT+CGATT=1");
    delay(2000);
  
    // Serial2.println("AT+SAPBR=3,1,\"APN\",\"internet.itelcel.com\"");
    // delay(3000);
    // mostrarDatosSerial();
    enviarAT("AT+SAPBR=3,1,\"APN\",\"internet.itelcel.com\"","OK",3000); //Establecer contexto de portador

    // Serial2.println("AT+SAPBR=1,1");
    // delay(2000);
    // mostrarDatosSerial();
    enviarAT("AT+SAPBR=1,1","OK",2000); //Contexto de portador activo

    // Serial2.println("AT+SAPBR=2,1");
    // delay(2000);
    // mostrarDatosSerial();
    while (enviarAT("AT+SAPBR=2,1","OK",1000) == 0)
      ; //Ciclar mientras Leer parámetro de portador este es MUY IMPORTANTE QUE LO RESPONDA CORRECTAMENTE
  
    Serial2.println("AT+HTTPINIT");//Se inicia el servicio HTTP
    delay(2000);
    mostrarDatosSerial();

    Serial2.println("AT+HTTPPARA=\"CID\",1"); //Para hacer la llamar a HTTP
    delay(2000);
  
    // String peticion = "AT+HTTPPARA=\"URL\",\"" + url + "\"";
    String peticion = "AT+HTTPPARA=\"URL\",\"" + url + "?" + datosEnGET + "\"";
    Serial.println(peticion);
    Serial2.println(peticion); //Parametro URL a la que se realizara la peticion.
    delay(15000);
    mostrarDatosSerial();
  
    // Serial2.println("AT+HTTPACTION=0");//
    // delay(3000);
    // mostrarDatosSerial();
    enviarAT("AT+HTTPACTION=0","OK",3000); //Realiza acciones HTTP (GET=0  |  POST=1)
  
    // Serial.print("respuestaPeticion: ");Serial.println(respuestaPeticion);
    // Serial2.println("AT+HTTPREAD");
    // delay(4000);
    // mostrarRespuesta();
    enviarAT("AT+HTTPREAD","OK",3000); //Leer respuesta del servidor
    // if (respuestaPeticion == "1")
    //   peticionEnviada = 1;
    // Serial.print("respuestaPeticion: ");Serial.println(respuestaPeticion);
    
    Serial2.println("AT+HTTPTERM");//Finalizar sesión HTTP
    delay(2000); // 6000
    mostrarDatosSerial();
  
    Serial2.println("AT+CGPSOUT=32");//Abrir flujo de datos de GPS
    delay(4000);
    Serial.println();
  
    // if (peticionEnviada == 1)
      Serial.println("DATOS ENVIADOS.");
    Serial.println("********************************************************************");
    Serial.println();
  // } while (peticionEnviada == 0);
}
void mostrarDatosSerial() {
  while(Serial2.available()!=0)
    Serial.write(Serial2.read());
  delay(500); 
}

Lo que tengo comentado del doWhile , respuestaPeticion y peticionEnviada era porque intentaba ciclar la peticion mientras no se mandaba, pero aun no logro eso. y lo que esta comentado encima de cada ComandoAT es lo mismo pero enviandolo directamente al Serial2.

espero les sirva Saludos.

PD: el código del enviarAT esta al inicio del POST