🛠 Journaliser un capteur dans LittleFS
Objectifs
Stocker des mesures sur la flash interne de 4 Mo de l'ESP32 sans carte SD, avec le système de fichiers LittleFS (successeur officiel de SPIFFS, désormais déprécié). Vous apprendrez à formater, créer une arborescence de dossiers, ouvrir un fichier en append et écrire un CSV de logs.
Matériel
- 1 carte ESP32 DevKit v1 (flash 4 Mo, schéma de partition par défaut)
- Le capteur est simulé par logiciel dans cet exemple (remplaçable par un SHT31 réel)
Code complet
#include <LittleFS.h>
void ecrireLigne(const String& ligne) {
File f = LittleFS.open("/logs/capteur.csv", "a");
if (!f) { Serial.println(F("Ouverture en échec")); 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);
}
Vérification attendue
La console affiche la première ligne du CSV pendant que le fichier grossit en append ; après plusieurs minutes, /logs/capteur.csv contient une ligne « secondes,température » toutes les 5 secondes. Le contenu survit à une coupure d'alimentation.
Erreurs fréquentes
- Oublier le paramètre true de LittleFS.begin(true) sur une flash jamais formatée : begin échoue et open renvoie un fichier invalide.
- Écrire toutes les 10 ms : la flash supporte un nombre limité de cycles, grouper les mesures (un paquet par minute par exemple).
- Partition données trop petite à cause d'un schéma de partition OTA : ajuster le Partition Scheme du menu Outils.
- Reprendre du code SPIFFS sans rien changer : l'API se ressemble, mais SPIFFS est déprécié et fragmente bien plus.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino