connection problem with blynk

hello, could you tell me why I lose the connection to blynk after 15 seconds,
I use arduino nano 33 IOT

#include <WiFiNINA.h>
#include <BlynkSimpleWiFiNINA.h>
#define BLYNK_PRINT Serial
#include <OneWire.h>

// Code blynk + WIFI
char auth[]= "xxxxxxxxx-xxxxxxxxx";
char ssid[] = "xxxxxxx";
char pass[]=  "xxxxxxxxxxxx";

// Branché sur pin de l4  rduino :
const int relais1 = 3;
const int btnPin1 = 5;
const int relais2 = 4;
const int btnPin2 = 6;
const int ledV = 7;
const int ledR = 8;
const int BROCHE_ONEWIRE =2;

BlynkTimer timer;
void checkPhysicalButton1();
void checkPhysicalButton2();

int relais1State = LOW;
int btnState1 = HIGH;

int relais2State = LOW;
int btnState2 = HIGH;

// blink
BLYNK_CONNECTED() {
  // synchronisation des pin Virtuel
  Blynk.syncVirtual(V2);
  Blynk.syncVirtual(V3);
}

// quand le boutton de application est appuye
BLYNK_WRITE(V2) {
  relais1State = param.asInt();
  digitalWrite(relais1, relais1State);
}
BLYNK_WRITE(V3) {
  relais2State = param.asInt();
  digitalWrite(relais2, relais2State);
}

void checkPhysicalButton1()
{
  if (digitalRead(btnPin1) == LOW) {
   
    if (btnState1 != LOW) {

      // position relais
      relais1State = !relais1State;
      digitalWrite(relais1, relais1State);

      // mise a jour du boutton sur application
      Blynk.virtualWrite(V2, relais1State);
    }
    btnState1 = LOW;
  } else {
    btnState1 = HIGH;
  }
}

void checkPhysicalButton2()
{
  if (digitalRead(btnPin2) == LOW) {
    if (btnState2 != LOW) {

      // position relais
      relais2State = !relais2State;
      digitalWrite(relais2, relais2State);
      digitalWrite(ledV, HIGH);digitalWrite(ledR, LOW);

      // mise a jour du boutton sur application
      Blynk.virtualWrite(V3, relais2State);
    }
    btnState2 = LOW;
    
  } else {
    btnState2 = HIGH;
    digitalWrite(ledR, HIGH);digitalWrite(ledV, LOW);
    
  }
}

// ******************************temperature
unsigned long periode_lecture_temp = 0;
/* Code de retour de la fonction getTemperature() */
enum DS18B20_RCODES
{
  READ_OK,
  NO_SENSOR_FOUND,
  INVALID_ADDRESS,
  INVALID_SENSOR
};
/* Création de l'objet OneWire pour manipuler le bus 1-Wire */
OneWire ds(BROCHE_ONEWIRE);
byte getTemperature(float *temperature, byte reset_search)
{
  byte data[9], addr[8];
  // data[] : Données lues depuis le scratchpad
  // addr[] : Adresse du module 1-Wire détecté
  /* Reset le bus 1-Wire ci nécessaire (requis pour la lecture du premier capteur) */
  if (reset_search) {
    ds.reset_search();
  }
  /* Recherche le prochain capteur 1-Wire disponible */
  if (!ds.search(addr)) {
    // Pas de capteur
    return NO_SENSOR_FOUND;
  }
  /* Vérifie que l'adresse a été correctement reçue */
  if (OneWire::crc8(addr, 7) != addr[7]) {Serial.println("mauvaise adresse ");
    // Adresse invalide
    return INVALID_ADDRESS;
  }
  /* Vérifie qu'il s'agit bien d'un DS18B20 */
  if (addr[0] != 0x28) {
    // Mauvais type de capteur
    return INVALID_SENSOR;
  }
  /* Reset le bus 1-Wire et sélectionne le capteur */
  ds.reset();
  ds.select(addr);
  /* Lance une prise de mesure de température et attend la fin de la mesure */
  ds.write(0x44, 1);
  //delay(800);
  /* Reset le bus 1-Wire, sélectionne le capteur et envoie une demande de lecture du scratchpad */
  ds.reset();
  ds.select(addr);
  ds.write(0xBE);
  /* Lecture du scratchpad */
  for (byte i = 0; i < 9; i++) {
    data[i] = ds.read();
  }
  /* Calcul de la température en degré Celsius */
  *temperature = (int16_t) ((data[1] << 8) | data[0]) * 0.0625;
  
  return READ_OK;
}

void setup()
{
  // Debug console
  Serial.begin(9600);

  Blynk.begin(auth, ssid, pass);

  pinMode(relais1, OUTPUT);
  pinMode(btnPin1, INPUT_PULLUP);
  digitalWrite(relais1, relais1State);

   pinMode(relais2, OUTPUT);
  pinMode(btnPin2, INPUT_PULLUP);
  digitalWrite(relais2, relais2State);

  
  pinMode(ledV, OUTPUT);
  pinMode(ledR, OUTPUT);

  // Setup a function to be called every 100 ms
  timer.setInterval(100L, checkPhysicalButton1);
  timer.setInterval(100L, checkPhysicalButton2);
}

void loop()
{
  Blynk.run();
  timer.run();
  SM_temperature ();
}
void SM_temperature ()
{
  float temperature[3];
  if (getTemperature(&temperature[0], true) != READ_OK)
  {
    Serial.println(F("Erreur de lecture du capteur 1"));
    return;
  }
  if (getTemperature(&temperature[1], false) != READ_OK)
  {
    Serial.println(F("Erreur de lecture du capteur 2"));
    return;
  }
  if (getTemperature(&temperature[2], false) != READ_OK)
  {
    Serial.println(F("Erreur de lecture du capteur 3"));
    return;
  }

  /* Affiche les températures */
  Serial.print(F("Temperatures : "));
  Serial.print(temperature[0], 2);
  Blynk.virtualWrite(V4, temperature[0], 2);

  Serial.print(temperature[1], 2);
  Blynk.virtualWrite(V5, temperature[1], 2);
  
  Serial.print(temperature[2], 2);
  Blynk.virtualWrite(V6, temperature[2], 2);
 
  
}