🛠 Stocker des journaux dans la flash avec LittleFS
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
- Tarjeta ESP32-S2 y cable USB
- Ordenador con el plugin «ESP32 LittleFS data upload» (opcional para precargar archivos)
- Sensor o potenciómetro en GPIO3 (ADC1) para generar mediciones
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
- Escribir en cada
loopsin buffering: la flash se desgasta; agrupe las escrituras (cada N segundos). - Olvidar
f.close: los datos permanecen en el buffer y desaparecen en el siguiente reset. LittleFS.beginsin parámetros en una tarjeta nueva: el montaje falla; pasetruepara permitir el formateo.- Partición por defecto demasiado pequeña: si sus registros crecen, elija en el IDE una partición con más espacio para el sistema de archivos.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino