🛠 Exposer un stockage de masse USB (TinyUSB MSC)
Objetivos
Exponer un almacenamiento de masas USB (clase MSC de la pila TinyUSB del core ESP32): la tarjeta aparece como una memoria USB que contiene una imagen formateada, leída desde la flash de 16 MB. Útil para recuperar datos sin red. >
Material
- 1 × Arduino Nano ESP32 + cable USB-C
- Paquete «Arduino ESP32 Boards» reciente (pila TinyUSB incluida)
Código completo
// Inspiré de l'exemple USBMassStorage du core ESP32-S3 (à valider sur Nano ESP32)
#include "FS.h"
#include "SPIFFS.h"
#include "USB.h"
#include "USBMassStorage.h"
USBMassStorage MassStorage;
const uint32_t tailleCluster = 512;
const uint32_t nbClusters = 2048; // ~1 Mo
void setup {
Serial.begin(115200);
if (!SPIFFS.begin(true)) { Serial.println("SPIFFS KO"); return; }
File img = SPIFFS.open("/disque.bin", "w+");
if (!img) { Serial.println("image KO"); return; }
uint8_t vide[512] = {0};
for (uint32_t i = 0; i < nbClusters; i++) img.write(vide, tailleCluster);
img.close;
MassStorage.begin("/disque.bin"); // avant USB.begin
USB.begin; // énumère la carte en « clé USB »
Serial.println("MSC actif : disque.bin exposé");
}
void loop { delay(1000); }
Verificación esperada
Tras la renumeración USB, el explorador muestra un volumen extraíble respaldado por disco.bin; un archivo copiado en él persiste tras un reset. El puerto serie nativo puede desaparecer mientras la MSC ocupa el USB: prever un reset para recuperar la carga del programa.
Errores frecuentes
- Olvidar MassStorage.begin antes de USB.begin: la enumeración no presenta ningún disco.
- Imagen no inicializada (tamaño cero): el sistema operativo rechaza el volumen.
- Pérdida del puerto serie durante la enumeración MSC: volver a pasar por el doble pulsador de reset (bootloader DFU) o reconectar la tarjeta.
- >
Otros tutoriales para esta placa
Ejemplos de código para esta placa
connexion-wifi.inoArduinopoint-acces.inoArduinoble-capteur.inoArduinoneoled-rgb.inoArduinoadc-12bits.inoArduinopreferences.inoArduino