Problema si no monitorizo el puerto serie

El programa que adjunto, funciona bien, si estoy monitoreando el puerto serie (TeraTerm o Hypertermial o similar). Si pongo la placa sola, connectarda a la red i con alimentación, sin leer el puerto serie, no funciona !!!
¿Cómo puedo resolver este problema?

Adjunto el codigo:

#include <Ethernet.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#include <avr/wdt.h>   // Control de prenjades.

byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x00 };
int idSonda  = 1002;                       // Id de la Sonda, cada sona ha de portar un Id Unica

float Temperatura ;
float Calibratge = 0.020; //
int TempsEntreLectures = 10;
int OnOff = 0;     //0= no gravem 1=si gravem

// MySQL
IPAddress serverMySQL_addr(172,20,105,7);  // IP of the MySQL *server* here
char userMySQL[] = "xxxxx";                            // MySQL user login username
char passwordMySQL[] = "yyyyyy";                // MySQL user login password

char SELECT_SQL[] = "SELECT Calibratge, Periode, idTipusSondes, OnOff FROM gesregistres.sondes WHERE (%s)";

char INSERT_SQL[] = "INSERT INTO gesRegistres.Registres (idSonda, idTipusSonda, Valor) VALUES (%s, '%s', %s)";
char query[128];
   

 
EthernetClient client1;
MySQL_Connection conn((Client *)&client1);
MySQL_Cursor cur = MySQL_Cursor(&conn);

void setup()
  {

  //Autoreset
  wdt_enable(WDTO_8S);
  //Fi autorreset
 
  Serial.begin(9600);
  while (!Serial); // wait for serial port to connect
  Serial.println();
  Serial.println("Iniciant SETUP...");
  Serial.print("Idsonda:"); Serial.println(idSonda);

  wdt_reset();
  Ethernet.begin(mac_addr);
  Serial.println(Ethernet.localIP());

  wdt_enable(WDTO_8S);
  LlegirMySQL();

  CapturaDeDades();
  wdt_reset();
 
  Serial.println("Fi SETUP");
  Serial.println("*****************");
  delay (2000);
  }


void loop()
  {
  wdt_reset();
  LlegirMySQL();
  wdt_reset();
  CapturaDeDades();
  wdt_reset();
  if (OnOff == 1) Serial.println(" -> OnOff = ON");
  if (OnOff == 0) Serial.println(" -> OnOff = OFF");
  if (OnOff == 1) RegistreMySQL(idSonda, "t", Temperatura);
  wdt_disable();
  // Temps que esperem entre captura i captura, en minuts--------------------   
  Esperem (TempsEntreLectures); //esperem 1, 10 minut,...
  // Fi espera entre dades--------------------------------------------------- 
  wdt_enable(WDTO_8S);
  }

void RegistreMySQL(int idSondaSQL, char IdTipusSondaSQL[], float ValorSQL)
  {
    char idSonaInsertat[6];
    char ValorInsertar[6];

    dtostrf( idSondaSQL , 1, 0, idSonaInsertat);   // zero decimals
    dtostrf( ValorSQL , 1, 2, ValorInsertar);   // dos decimals
   
    //MySQL
    Serial.println(" -> Registrant al MySQL...");
    if (conn.connect(serverMySQL_addr, 3306, userMySQL, passwordMySQL))
     {
     delay(1000);
     MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
     sprintf(query, INSERT_SQL, idSonaInsertat, IdTipusSondaSQL, ValorInsertar);
     cur_mem->execute(query);
     delete cur_mem;
     conn.close();
     Serial.println(" -> Dada gravada al MySQL");
     }
     else  Serial.println(" -> Connection MySQL failed.");
   
  }

//Funció capturar dades------------------------------------------------------
void CapturaDeDades()
  {
  int reading; 
  float Valor, voltage;
    //TMP36 Pin Variables
    int sensorPin = 0;      //Capturarem el valro per el pin 0 analogic, A0
                            //the analog pin the TMP36's Vout (sense) pin is connected to
                            //the resolution is 10 mV / degree centigrade with a
                            //500 mV offset to allow for negative temperatures 
    Serial.println(" -> Capturant dades de la sonda ...");
    reading = analogRead(sensorPin);  //llegim el valor de A0, analogic
    // Convertim la lectrua a voltatge
    voltage = reading * 5.0;
    voltage = voltage/1024.0; //voltage /= 1024.0;
    // Printem
    Serial.print(" -> Voltatge analogic     = "); Serial.print(voltage); Serial.println(" volts");
    //if (voltage > Calibratge) voltage = voltage - Calibratge;  //calibratge
    //Serial.print(" -> Voltatge analogic cal.= "); Serial.print(voltage); Serial.println(" volts");
    Temperatura = (voltage - 0.5) * 100 ;                      //convertim 10 mv per graus amb un offser 500 mV offset
                                                               //podem fer negatius
                                                               //a graus centigrats ((volatge - 500mV) times 100)
    Serial.print(" -> Temperatura           = "); Serial.print(Temperatura); Serial.println(" graus C");                                                               
    Temperatura = Temperatura + Calibratge;                    //calibratge                                                     
    Serial.print(" -> Temperatura Calibrada = "); Serial.print(Temperatura); Serial.println(" graus C"); 
  }
// Fi capturar dades---------------------------------------------------------

void LlegirMySQL()
  {
//Calibratge:
      //MySQL
  Serial.println(" -> Llegint al MySQL...");
  if (conn.connect(serverMySQL_addr, 3306, userMySQL, passwordMySQL))
    {
    delay(1000);
    }
  else  Serial.println("Connection failed."); 
  row_values *row = NULL;
  char idSonaInsertat[6];
  dtostrf( idSonda, 1, 0, idSonaInsertat);   // zero decimals   
  MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
  // Execute the query
  sprintf(query, SELECT_SQL, idSonaInsertat);
  cur_mem->execute(query);
  // Fetch the columns (required) but we don't use them.
  column_names *columns = cur_mem->get_columns();

  // Read the row (we are only expecting the one)
  do
    {
    row = cur_mem->get_next_row();
    if (row != NULL)
      {
      Calibratge = atol(row->values[0]);
      Calibratge = Calibratge/100;  //per tenir decimals
      TempsEntreLectures = atol(row->values[1]);
      //head_count2 = (row->values[2]);
      OnOff = atol(row->values[3]);
      }
     }
  while (row != NULL);
  // Deleting the cursor also frees up memory used
  delete cur_mem;
  conn.close();
 
  // Show the result
  Serial.print(" ->           Calibratge = ");
  Serial.println(Calibratge);   
  Serial.print(" -> Temps entre lectures = ");
  Serial.println(TempsEntreLectures);
  //Serial.print("idTipusSondes = ");
  //Serial.println(head_count2); 
  //Serial.println(); 
  Serial.print(" ->                OnOff = ");
  Serial.println(OnOff);     
  //Fi Calibratge   
  }

// Funció temps d'espera entre captura de dades, en minuts-------------------
void Esperem (int minuts)
  {
  Serial.print(" -> Esperant (minuts) :");
  Serial.print( minuts);
  Serial.print(" ");
  for (int a=0; a<minuts; a++)
    {     
    delay(60000);  //60000 es un minut
    Serial.print(".");
    }
  Serial.println (" "); 
  }
// Fi funció temps d'espera--------------------------------------------------

Comenta esta sentencia, precisamente esta allí para que el programa se detenga hasta que haya comunicación serie.

Mil gracias !!!
Solucionado.