Le plugin LittleFS Data Upload pour l’IDE Arduino permet de téléverser des fichiers dans la zone mémoire de l’ESP8266 réservée au système de fichier (FS) géré à l’aide du système de fichier LittleFS. LittleFS succède à la librairie FS.h prenant en charge SPIFFS.
Les fichiers précédemment générés avec la librairie FS.h (SPIFFS) ne seront plus accessibles. Pensez à les récupérer avant d’utiliser le plugin.
La taille de la mémoire flash varie en fonction du module ESP8266 embarqué sur la carte de développement. Les modules récents disposent généralement d’une mémoire flash de 4Mo dont on pourra allouer 1Mo, 2Mo ou 3Mo au système de fichier (File System – FS).
Pour en savoir plus sur les modules ESP8266
Sommaire
- 1 Comment organiser les fichiers d’un projet ESP8266 avec LittleFS ?
- 2 Installer les outils LittleFS Data Upload pour l’IDE Arduino
- 3 Choisir la taille allouée au système de fichier (FS)
- 4 Un programme de test avec LittleFS
- 5 Ajouter des fichiers dans le dossier data
- 6 Téléverser des fichiers dans la zone mémoire de l’ESP8266 ?
- 7 Lire, écrire, ajouter des données à un fichier par programmation
- 8 Erreurs courantes
- 9 Mises à jour
Comment organiser les fichiers d’un projet ESP8266 avec LittleFS ?
Contrairement à SPIFFS, LittleFS permet de gérer l’arborescence de fichier. Il faudra faire attention à ce que le chemin complet du fichier ne pas dépasse la limite de 31 caractères utiles
dossier/ssdossier/fichier1.text
|——— 31 caractères ———|
Vous risquez vite de rencontrer des problèmes si vous dépassez 31 caractères utiles. Par conséquent, il est préférable de limiter la profondeur de l’arborescence.
Un exemple d’organisation de fichiers d’un projet ESP8266
Après chaque modification ou ajout d’un fichier dans le dossier data – ou avant le premier démarrage du projet sur l’ESP8266 – il faudra téléverser manuellement les fichiers depuis le menu Outils -> ESP8266 LittleFS Data Upload.
Il est tout à fait possible d’accéder au système de fichier LittleFS sur ESP8266 via un client FTP.
Installer les outils LittleFS Data Upload pour l’IDE Arduino
1 Avant de commencer, vous devez installer le SDK ESP8266 d’Espressif sur l’IDE Arduino. Tout est expliqué en détail dans cet article.
2 Allez ensuite ici sur GitHub pour récupérer la dernière release (mise à jour) du plugin ESP8266LittleFS pour l’IDE Arduino. Cliquer sur le lien vers l’archive zip du plugin pour lancer le téléchargement.
3 Ouvrez le dossier de travail de l’IDE Arduino. En général, il se trouve dans le dossier Mes Documents sur Windows et Documents sur macOS ou Linux. Pour connaître le chemin vers le dossier Arduino, vous pouvez ouvrir les préférences de l’IDE Arduino
4 Créez un nouveau dossier appelé tools
5 Décompressez l’archive directement dans le dossier tools. Ne changez pas l’arborescence
6 Rechargez l’IDE Arduino. Après redémarrage, vous devez avoir une nouvelle option dans le dossier outils appelée ESP8266 Sketch Data Upload.
Tout est prêt.
Choisir la taille allouée au système de fichier (FS)
Il est possible d’allouer une certaine quantité de la mémoire flash de l’ESP8266 au système de fichier (FS).
Les modules ESP8266 disposent d’une mémoire flash (similaire aux clés USB). La mémoire flash est découpée et chaque espace est réservée pour chaque fonction :
- Sketch code C++ du projet
- OTA update zone tampon utilisée pour télécharger une nouvelle mise à jour du sketch
- File System (FS) c’est ce qui nous intéresse ici
- EEPROM une petite zone mémoire qui simule l’EEPROM de l’Arduino. On pourra y stocker des paramètres
- WiFi config est une zone réservée pour le stockage des paramètres de connexion lorsqu’on développe directement en C++ avec le SDK ESP-IDF
|--------------|-------|---------------|--|--|--|--|--| ^ ^ ^ ^ ^ Sketch OTA update File system EEPROM WiFi config (SDK)
La taille de la mémoire flash varie d’un fabricant à un autre mais la norme est de 4Mo.
Sélectionner votre carte ESP8266 depuis le menu Outils -> Carte de développement
Puis vous pourrez choisir la quantité de mémoire flash allouée au système de fichier depuis le menu Outils -> Flash Size
Par exemple pour la LoLin – WeMos d1 Mini, il existe 4 choix possibles : aucune allocation 1Mo 2Mo ou 3Mo.
Un programme de test avec LittleFS
Créer un nouveau croquis, coller le code ci-dessous et sauvegarder
#include "LittleFS.h"
void setup() {
Serial.begin(115200);
// Launch LittleFS file system | Démarre le système de fichier LittleFS
if(!LittleFS.begin()){
Serial.println("An Error has occurred while mounting LittleFS");
return;
}
// Open test file in read only mode | Ouvre le fichier de test en lecture seule
File file = LittleFS.open("/test.txt", "r");
if(!file){
// File not found | le fichier de test n'existe pas
Serial.println("Failed to open test file");
return;
}
// Display file content on serial port | Envoie le contenu du fichier test sur le port série
Serial.println();
Serial.println("Read test.txt file content:");
while(file.available()){
Serial.write(file.read());
}
file.close();
}
void loop() {
}
Que fait ce code ?
On déclare la librairie LittleFS.h qui permet d’accéder à la zone mémoire à l’aide du système de fichier.
#include "LittleFS.h"
On monte le système de fichier LittleFS. On signale l’erreur en cas de problème. Ici, le programme s’arrête en cas d’erreur.
if(!LittleFS.begin()){
Serial.println("An Error has occurred while mounting LittleFS");
return;
}
On ouvre le fichier test.txt avec la méthode open(nom_de_fichier, option) en écriture seule en spécifiant l’option “r” (pour read only). Utilisez l’option “w” pour pouvoir écrire (et écrire) dans un fichier.
File file = LittleFS.open("/test.txt", "r");
On envoie sur le port série le contenu du fichier texte
while(file.available()){
Serial.write(file.read());
}
Et on referme le fichier
file.close();
Ajouter des fichiers dans le dossier data
Il existe un raccourcis permettant d’ouvrir directement le dossier du projet Arduino depuis le menu Croquis -> Montrer le dossier du croquis
Créer un fichier texte avec n’importe quel éditeur de texte et coller un “Hello World” ou n’importe quel texte de votre choix.
Enregistrer le fichier en lui donnant le nom test.txt.
Téléverser des fichiers dans la zone mémoire de l’ESP8266 ?
Pour téléverser les fichiers enregistrés dans la dossier data, il suffit de lancer l’outil depuis le menu Outils -> ESP8266 LittleFS Data Upload
L’opération ne dure que quelques secondes
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: b4:e6:2d:13:**:**
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 295200 bytes to 216674...
Writing at 0x00000000... (7 %)
Writing at 0x00004000... (14 %)
Writing at 0x00008000... (21 %)
Writing at 0x0000c000... (28 %)
Writing at 0x00010000... (35 %)
Writing at 0x00014000... (42 %)
Writing at 0x00018000... (50 %)
Writing at 0x0001c000... (57 %)
Writing at 0x00020000... (64 %)
Writing at 0x00024000... (71 %)
Writing at 0x00028000... (78 %)
Writing at 0x0002c000... (85 %)
Writing at 0x00030000... (92 %)
Writing at 0x00034000... (100 %)
Wrote 295200 bytes (216674 compressed) at 0x00000000 in 5.4 seconds (effective 435.7 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
Executable segment sizes:
IROM : 261304 - code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 26996 / 32768 - code in IRAM (ICACHE_RAM_ATTR, ISRs...)
DATA : 1248 ) - initialized variables (global, static) in RAM/HEAP
RODATA : 1504 ) / 81920 - constants (global, static) in RAM/HEAP
BSS : 25112 ) - zeroed variables (global, static) in RAM/HEAP
Sketch uses 291052 bytes (27%) of program storage space. Maximum is 1044464 bytes.
Global variables use 27864 bytes (34%) of dynamic memory, leaving 54056 bytes for local variables. Maximum is 81920 bytes.
/Users/projetsdiy/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 /Users/projetsdiy/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.1/tools/upload.py --chip esp8266 --port /dev/cu.usbserial-1410 --baud 921600 --before default_reset --after hard_reset write_flash 0x0 /var/folders/x_/w_k_y_ys531cxjfyvqpk1bwc0000gn/T/arduino_build_148777/LittleFS_Infos.ino.bin
esptool.py v2.8
Serial port /dev/cu.usbserial-1410
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: b4:e6:2d:13:f2:c9
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 295200 bytes to 216674...
Writing at 0x00000000... (7 %)
Writing at 0x00004000... (14 %)
Writing at 0x00008000... (21 %)
Writing at 0x0000c000... (28 %)
Writing at 0x00010000... (35 %)
Writing at 0x00014000... (42 %)
Writing at 0x00018000... (50 %)
Writing at 0x0001c000... (57 %)
Writing at 0x00020000... (64 %)
Writing at 0x00024000... (71 %)
Writing at 0x00028000... (78 %)
Writing at 0x0002c000... (85 %)
Writing at 0x00030000... (92 %)
Writing at 0x00034000... (100 %)
Wrote 295200 bytes (216674 compressed) at 0x00000000 in 5.4 seconds (effective 438.3 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
Ouvrez le moniteur série et faites un RESET du module ESP8266. Voici ce que vous devriez voir
Lire, écrire, ajouter des données à un fichier par programmation
Dans la plupart des cas, on aura besoin d’accéder et manipuler (écrire, ajouter des données, renommer, supprimer…) des fichiers directement par programmation avec du code Arduino. C’est possible avec la librairie LittleFS présentée dans cet article
Erreurs courantes
OSError: [Errno 16] Resource busy fermer le moniteur série
Mises à jour
11/08/2020 Première publication de l’article
Avez-vous aimé cet article ?
[Total: 1 Moyenne: 3]