Maduino Zero SIM808 GPS Tracker v3.5

Hello ,
I’m using the Maduino Zero SIM808 GPS Tracker v3.5

and I have some problem after reboot the device it’s seem that the unit won’t start
only after connect the usb and open terminal it start to work .
after I open the terminal - all he code work great

I guess it something in the setup part

can someone tell me wht is wrong ?

#include<stdio.h>
#include<string.h>

#define DEBUG true

int POWER_KEY = 9;
bool SIM808_ON = false;

String answer = "";
int answer_size = 0;
String CIPSEND = "";

String UnitName = "Device1";
void setup()
{

  pinMode(POWER_KEY, OUTPUT);
  //********Turn on SIM808 when power up*********
  digitalWrite(POWER_KEY, HIGH);
  delay(1000);
  digitalWrite(POWER_KEY, LOW);

  SerialUSB.begin(115200);
  delay(2000);

  while (!SerialUSB) {
    delay(50); // wait for Arduino Serial Monitor to connect the port
  }


  SerialUSB.println("Start to run! V1.6 ");
  Serial1.begin(115200);

  //********check open************
  sendData("AT", 1000, DEBUG);
  delay(1000);
  //******************************

  //********if SIM808 off, turn on it*********
  if (!SIM808_ON)
  {
    digitalWrite(POWER_KEY, LOW);
    delay(3000);
    digitalWrite(POWER_KEY, HIGH);
    SerialUSB.println("Turn on SIM808");
    delay(10000);
  }

  //GPS test

  sendData("AT+CGNSPWR=1", 1000, DEBUG);//GNSS POWER CONTROL ON
  delay(1000);
  sendData("AT+CGNSSEQ=\"RMC\"", 1000, DEBUG);//
  delay(1000);
  sendData("AT+CGNSURC=0", 1000, DEBUG);// printf to serial every 1 second
  delay(1000);
}

void loop ()
{

//rest of the code
}

String sendData(String command, const int timeout, boolean debug)
{
  String response = "";
  Serial1.println(command);

  String commandpre = getcommand_pref(command);
  //SerialUSB.println(commandpre);

  long int time = millis();
  while ( (time + timeout) > millis())
  {
    if (commandpre == "AT") {
      if (Serial1.find("OK")) {
        SIM808_ON = true;
        SerialUSB.println("SIM808 opened");
      }
    }

    while (Serial1.available())
    {
      String c = Serial1.readString();
      response += c;
    }
  }

  if (debug)
  {
    SerialUSB.println(response);
  }
  return response;
}


String getcommand_pref(String command) {

  String command_pref = "";
  char *cstr = new char[command.length() + 1];
  strcpy(cstr, command.c_str());
  char * token = strtok(cstr, "=");
  int i = 0;
  while (token != NULL) {
    //SerialUSB.print(token);
    //SerialUSB.println("  line" + (String)i);

    switch (i) {
      case 0:
        command_pref = token;
        break;

      default:
        break;
    }

    token = strtok(NULL, ",");
    i = i + 1;
  }

  if (command_pref == "")
    command_pref = command;

  return command_pref;
}

I want\need it to start working after I connect the power to it

Does someone see the problem ?

Thanks ,