🛠 Journaliser un capteur dans LittleFS
Objetivos
Almacenar mediciones en la memoria flash interna de 4 MB del ESP32 sin tarjeta SD, utilizando el sistema de archivos LittleFS (sucesor oficial de SPIFFS, ahora obsoleto). Aprenderás a formatear, crear una estructura de carpetas, abrir un archivo en modo de adición (append) y escribir un CSV de registros.
Material
- 1 placa ESP32 DevKit v1 (flash de 4 MB, esquema de partición predeterminado)
- El sensor se simula por software en este ejemplo (reemplazable por un SHT31 real)
Código completo
#include <LittleFS.h>
void ecrireLigne(const String& ligne) {
File f = LittleFS.open("/logs/capteur.csv", "a");
if (!f) { Serial.println(F("Ouverture en echec")); return; }
f.println(ligne);
f.close;
}
void setup {
Serial.begin(115200);
if (!LittleFS.begin(true)) { // true = formater si la partition est vide
Serial.println(F("Formatage LittleFS..."));
LittleFS.begin(true);
}
if (!LittleFS.exists("/logs")) LittleFS.mkdir("/logs");
}
void loop {
float t = 20.0f + 5.0f * sin(millis / 30000.0f); // capteur simule
ecrireLigne(String(millis / 1000) + "," + String(t, 2));
File f = LittleFS.open("/logs/capteur.csv", "r");
String derniere = f.readStringUntil('\n');
f.close;
Serial.printf("Derniere ligne du CSV : %s\n", derniere.c_str);
delay(5000);
}
Verificación esperada
La consola muestra la primera línea del CSV mientras el archivo crece en modo de adición; después de varios minutos, /logs/capteur.csv contiene una línea «segundos,temperatura» cada 5 segundos. El contenido sobrevive a un corte de alimentación.
Errores frecuentes
- Olvidar el parámetro true de LittleFS.begin(true) en una flash nunca formateada: begin falla y open devuelve un archivo inválido.
- Escribir cada 10 ms: la flash soporta un número limitado de ciclos, agrupa las mediciones (un paquete por minuto, por ejemplo).
- Partición de datos demasiado pequeña debido a un esquema de partición OTA: ajusta el Esquema de Partición (Partition Scheme) en el menú Herramientas.
- Reutilizar código de SPIFFS sin cambiar nada: la API es similar, pero SPIFFS está obsoleto y fragmenta mucho más.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino