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 :
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...