Rebooting ESP32 in WiFi mode

Buonasera,

Volevo condividere con voi un problema che mi è capitato con la board Adafruit Huzzah32 che monta esp32, in pratica qualsiasi sketch io carichi che contenga la parte di WiFi mi manda in reboot la board all’infinito e a monitor restituisce il seguente messaggio che non riesco ad interpretare :astonished: :

assertion "dataSize == readSize" failed: file "/Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/nvs_flash/src/nvs_storage.cpp", line 419, function: esp_err_t nvs::Storage::readMultiPageBlob(uint8_t, const char*, void*, size_t)
abort() was called at PC 0x400d653f on core 1

Backtrace: 0x4008c7e0:0x3ffb1bb0 0x4008ca11:0x3ffb1bd0 0x400d653f:0x3ffb1bf0 0x400db1fb:0x3ffb1c20 0x400db308:0x3ffb1ca0 0x400da3d2:0x3ffb1d00 0x400da905:0x3ffb1d40 0x40138e4e:0x3ffb1d60 0x40139042:0x3ffb1db0 0x40139095:0x3ffb1de0 0x401019ec:0x3ffb1e00 0x40101bfa:0x3ffb1e30 0x400d9c7d:0x3ffb1e60 0x400d1d8d:0x3ffb1e80 0x400d16f6:0x3ffb1f80 0x400d2ee3:0x3ffb1fb0 0x4008877d:0x3ffb1fd0

Rebooting...

Sketch semplici quali blink non danno alcun problema, ma anche più complessi e pesanti come quelli con il BLE, solo se utilizzo il WiFi mi rende inutilizzabile la scheda (prima della operazioni che ho fatto e che spiegherò di seguito funzionava benissimo pure il WiFi).

Premetto ho modificato la partizione della flash modificando il file board.txt perché necessito di Programma e OTA massimi disponibili (1,9kb).
Questo problema è sorto dopo aver eseguito le seguenti operazioni:
1- sketch caricato senza errori.
2- il set up va a buon fine
3- dopo il set-up l’ESP crea un server BLE con alcune caratteristiche, tra queste ce n’è una che svolge la seguente funzione: nel caso da smartphone riceva il comando “scan” l’ESP fa partire la scansione delle reti WiFi che poi dovrebbe printarmi a monitor seriale per il momento)

class scanCallbacks: public BLECharacteristicCallbacks {
  void onWrite(BLECharacteristic *scanCharacteristic) {
    std::string scanCommand = scanCharacteristic->getValue();

    if(scanCommand.length() > 0) {

      if(scanCommand == "scan") {
        Serial.println("SCAN WIFI NETWORK");
        enableScanWiFiNetworks = true;
      }else{
        Serial.println("NOT A VALID COMMAND");
      }
    }
  }
};
void scanWiFiNetworks() {


    delay(1000);
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

   Serial.println("scan start");

    // WiFi.scanNetworks will return the number of networks found
    int n = WiFi.scanNetworks();
    Serial.println("scan done");
    if (n == 0) {
        Serial.println("no networks found");
    } else {
        Serial.print(n);
        Serial.println(" networks found");
        for (int i = 0; i < n; ++i) {
            // Print SSID and RSSI for each network found
            Serial.print(i + 1);
            Serial.print(": ");
            Serial.print(WiFi.SSID(i));
            Serial.print(" (");
            Serial.print(WiFi.RSSI(i));
            Serial.print(")");
            Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
            delay(10);
        }
    }
    Serial.println("");

    // Wait a bit before scanning again
    delay(100);
    
  enableScanWiFiNetworks = false;  
}

Ecco quando ho provato a lanciare il comando “scan” l’ESP l’ha ricevuto, il programma si è spostato nella funzione di scansione ma poi si è piantato in rebooting costante.
La cosa strana è che lo fa solo con WiFi.

Quello che mi preme di più è capire cosa sia accaduto, anche perché a mio rischio ho caricato lo stesso sketch su una scheda vergine e non mi ha dato alcun problema anzi funziona tutto correttamente (provato più e più volte). :o

Quindi alzo le mani e chiedo aiuto ;D

P.S.

E anche capire se la board è recuperabile...

Nessuno ha qualche idea in merito ?? :confused: