🛠 Stocker des journaux dans la flash avec LittleFS

ESP32-S2 · intermediaire · Schéma : IMG-esp32-s2-intermediaire-3-esp32-s2-littlefs-logs.svg — ESP32-S2 dont la puce de flash embarquée est mise en évidence avec une icône de fichier journal, un capteur analogique sur GPIO3 et le câble USB vers la console série.

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

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

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels