🛠 Exposer un stockage de masse USB (TinyUSB MSC)
Objectifs
Exposer un stockage de masse USB (classe MSC de la pile TinyUSB du core ESP32) : la carte apparaît comme une clé USB contenant une image formatée, lue dans la flash de 16 Mo. Utile pour récupérer des données sans réseau. >
Matériel
- 1 × Arduino Nano ESP32 + câble USB-C
- Package « Arduino ESP32 Boards » récent (pile TinyUSB incluse)
Code complet
// 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); }
Vérification attendue
Après renumérotation USB, l'explorateur montre un volume amovible adossé à disque.bin ; un fichier copié dessus persiste après reset. Le port série natif peut disparaître tant que la MSC occupe l'USB : prévoir un reset pour retrouver le téléversement.
Erreurs fréquentes
- Oublier MassStorage.begin avant USB.begin : l'énumération ne présente aucun disque.
- Image non initialisée (taille nulle) : l'OS refuse le volume.
- Perte du port série pendant l'énumération MSC : repasser par le double-appui reset (bootloader DFU) ou rebrancher la carte.
- >
Autres tutoriels pour cette carte
Exemples de code pour cette carte
connexion-wifi.inoArduinopoint-acces.inoArduinoble-capteur.inoArduinoneoled-rgb.inoArduinoadc-12bits.inoArduinopreferences.inoArduino