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

Objetivos

Utilizar el sistema de archivos LittleFS montado en la memoria flash interna del ESP32-S2: formatear la partición, crear un archivo de registro en modo append, registrar en él mediciones con marca de tiempo y volver a leerlas. Esta técnica es útil porque la memoria flash se comporta mucho mejor con escrituras secuenciales que con escrituras aleatorias.

Material

Código completo

// Journalisation dans LittleFS sur ESP32-S2
#include <LittleFS.h>

const char *CHEMIN_LOG = "/journal.csv";
const uint8_t CAPTEUR_PIN = 3;   // ADC1, reste disponible meme 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;demarrage\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 ecrite.");
    }
  }
  delay(1000);
}

Verificación esperada

Tras el primer arranque (formateo), la consola muestra «LittleFS monte.». Cada diez segundos, se añade una línea «millis;valor» al archivo. Reinicie la tarjeta con el botón reset: el archivo no se borra, la marca de tiempo millis vuelve a empezar desde cero, pero las mediciones anteriores siguen siendo legibles mediante un pequeño sketch de lectura o el plugin de subida.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales