🛠 Stocker des journaux dans la flash avec LittleFS
Objectifs
Utiliser le système de fichiers LittleFS monté dans la flash interne de l'ESP32-S2 : formater la partition, créer un fichier journal en mode append, y consigner des mesures horodatées et les relire. Technique utile car la flash se comporte bien mieux en écritures séquentielles qu'aléatoires.
Matériel
- Carte ESP32-S2 et câble USB
- Ordinateur avec le plugin « ESP32 LittleFS data upload » (optionnel pour précharger des fichiers)
- Capteur ou potentiomètre sur GPIO3 (ADC1) pour générer des mesures
Code complet
// Journalisation dans LittleFS sur ESP32-S2
#include <LittleFS.h>
const char *CHEMIN_LOG = "/journal.csv";
const uint8_t CAPTEUR_PIN = 3; // ADC1, reste disponible même avec WiFi
uint32_t compteur = 0;
void setup {
Serial.begin(115200);
delay(500);
if (!LittleFS.begin(true)) { // true = formate si vierge
Serial.println("Echec montage LittleFS");
return;
}
Serial.println("LittleFS monte.");
File f = LittleFS.open(CHEMIN_LOG, "a");
if (!f) { Serial.println("Ouverture impossible"); return; }
if (f.size == 0) f.println("millis;mesure"); // en-tete
f.printf("%lu;démarrage\n", (unsigned long)millis);
f.close;
}
void loop {
compteur++;
if (compteur % 10 == 0) { // une ligne toutes les 10 s
uint16_t brut = analogRead(CAPTEUR_PIN);
File f = LittleFS.open(CHEMIN_LOG, "a");
if (f) {
f.printf("%lu;%u\n", (unsigned long)millis, brut);
f.close;
Serial.println("Ligne écrite.");
}
}
delay(1000);
}
Vérification attendue
Après le premier démarrage (formatage), la console affiche « LittleFS monte. ». Toutes les dix secondes, une ligne « millis;valeur » est ajoutée au fichier. Relancez la carte par le bouton reset : le fichier n'est pas effacé, l'horodatage millis repart de zéro mais les anciennes mesures restent lisibles via un petit sketch de lecture ou le plugin d'upload.
Erreurs fréquentes
- Écrire à chaque
loopsans buffering : la flash s'use ; regroupez les écritures (toutes les N secondes). - Oublier
f.close: les données restent dans le buffer et disparaissent au prochain reset. LittleFS.beginsans paramètre sur une carte vierge : le montage échoue ; passeztruepour autoriser le formatage.- Partition par défaut trop petite : si vos journaux grossissent, choisissez dans l'IDE une partition avec plus d'espace pour le filesystem.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino