El microcontrolador ESP8266 conté SPIFFS, Serial Peripheral Interface Flsh File System . SPIFFS es un sistema de fitxers lleuger en el chip de la memòria flash que incorpora el ESP8266. Per carregar els fitxers a la memòria flash es fa servir un plugin per el IDE de Arduino. Per desenvolupar aquesta practica seguim el article de embedgyan.

SPIFFS dona accés als fitxers de la memòria flash de la mateixa manera que ho fem en el nostre ordinador, però mes simple i mes limitat. Es pot llegir, escriure, eliminar fitxers. No suporta directoris, tots els fitxers tenen que estar en el mateix nivell, en la carpeta data.
Guardar dades permanents en la memòria flash.
Guardar fitxers HTML i CSS per crear un servidor WEB.
Guardar imatges, icones i logos. Mirar el exemple
Guardar dades de sensors, etc.
Fins ara en els projectes de servidors WEB, hem escrit el codi HTML com un String en el mateix codi del sketch de Arduino. SPIFFS permet escriure en fitxers apart el codi HTML i carregar-lo en el sistema de fitxers del ESP8266.
Descarregar ESP8266FS-X.zip de https://github.com/esp8266/arduino-esp8266fs-plugin/releases

En el directori de Arduino IDE, obrir el directori tools i si no existeix, el creem de nou. La estructura en el meu cas es:

Descomprimim el .zip a dins de la carpeta tools, quedant de la següent manera:
C:\Users\Usuari\Documents\Arduino\tools\ESP8266FS\tool\esp8266fs.jar
Reiniciar el IDE de Arduino.
Comprovació de que el plugin s’ha instal·lat correctament. En el IDE, seleccionar la placa ESP8266 i en el menú en eines (Tools) mirar si tenim la opció “ESP8266 Sketch Data Upload“.

Crear un sketch de Arduino i guardar-lo. Per els nostres propòsits pot ser un sketch buit.
Obrir el directori del sketch, tan el directori contenidor com el sketch tenen que tenir el mateix nom. Anem al menú del IDE obrim Esbós (Sketch) i seleccionem en “Mostra la carpeta del Sketch”.

Crear la carpeta “data” a dins de la carpeta del Sketch.

A dins de la carpeta data, posem el nostre fitxer que volem carregar en el ESP8266. El guardem com exemple.txt.

En el menú Eines del IDE, seleccionem la grandària de la memòria del SPIFFS, depenent del pes dels nostres fitxers que volem carregar.

Per carregar el fitxer nomes es té que anar al menú Esbós i ESP8266 Sketch Data Upload.

Testejar el resultat.
Per comprovar si el fitxer s’ha guardat en el SP8266 el llegim i també escrivim al final del fitxer, des del Sketch. Carregem el següent codi a la placa.
//Demo de SPIFFS en mode lectura i escritura
#include "FS.h"
void setup() {
Serial.begin(115200);
if(!SPIFFS.begin()){
Serial.println("Error al muntar SPIFFS");
return;
}
File fitxer = SPIFFS.open("/exemple.txt", "r");
if(!fitxer){
Serial.println("Ha fallat obrir el fitxer");
return;
}
// lectura del fitxer
Serial.println();
Serial.println("Llegim el contingut del fitxer:");
while(fitxer.available()){
Serial.write(fitxer.read());
}
fitxer.close();
// escritura, afegim al final del fitxer i tambe el llegim
Serial.println("Escritura en el fitxer, des de el codi:");
fitxer = SPIFFS.open("/exemple.txt", "a+");
fitxer.println("Hola que tal, soc jo, escribin en el Sketch... ");
while(fitxer.available()){
Serial.write(fitxer.read());
}
fitxer.close();
}
void loop() {
}
La podem trobar en https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html
SPIFFS.begin() // munta el sistema de fitxers
SPIFFS.end() // desmunta
File SPIFFS.open(fitxer, mode) // el mode pot ser “r”, “w”, “a”, “r+”, “w+”, “a+”.
r : obre el fitxer per llegir, el punter es posiciona al principi del fitxer.
r+ : obre el fitxer per llegir i escriure, el punter es posiciona al principi del fitxer.
w : borra el fitxer o en crea un de nou per escriure, el punter es posiciona al principi del fitxer.
w+ : obre el fitxer per escriure, si no existeix es crea de nou, si existeix s’esborra, el punter es posiciona al principi del fitxer.
a : obre per escriure i afegir al final del fitxer, si no existeix es crea de nou, el punter es posiciona al final del fitxer.
a+ : obre per llegir i escriure afegint al final del fitxer, si no existeix es crea de nou.
El mètode retorna el fitxer.
File fitxer = SPIFFS.open("/fitxer.txt", "w");
if (!fitxer) {
Serial.println("el fitxer no s’ha obert");
}
SPIFFS.exists(fitxer) // retorna true si existeix altrament false.
SPIFFS.remove(fitxer) // borra el fitxer, retorna true si ha estat exitós.
SPIFFS.rename(fitxerVell,fitxerNou) // canvia el nom.
Després de carregar el codi, obrim el Monitor Serial a 115200 Baudis, pugem el fitxer exemple.txt a la memòria flash de la placa clicant en Eines / ESP8266 Sketch Data Upload. Quan premem el botó RST de la placa es te que mostrar el contingut del fitxer ejemple.txt

El mar.
Havaneres.
Lloret antic.
Lloret avui.
De cala Morisca a Sa Carabera.
De Sa Carabera a Treumal.
Lloret en kayak.
Vígilancia remota.
Caixa-tpv.
Cambrer-app.
Client webApp.
Relats del banc del si no fos
Històries d'ahir
Vídeos antics de Lloret
El caiac
Contes de l'avi.
Control d’accés amb contrasenya.
Orgue de llums.
Comparativa de editors Arduino.
Projecte bon Nadal.
Control de la qualitat del aire interior (CO2) amb semàfor LED.
NodeMCU-ThingSpeak
ThingSpeak.
NodeMCU com AccessPoint.
Control de la llum de casa per web.
Control de un led per el mòbil.
Sistema de fitxers en ESP8266.
Altura del nivell d'aigua.
Avis d’alarma a Telegram.
Control de la intensitat de llum de un LED per Internet.
Magatzematge de temperatura i humitat en Thinger.
Publicar temperatura i humitat en Google Sheets.
ESP8266 i Firebase.
La bàscula. ESP8266 NodeMCU amb cèl·lula de càrrega.
ESP32-CAM
ESP32-CAM captura fotos per ser vistes en la WEB.
Pujar fotos a un servidor FTP amb ESP32-CAM.
MicroPython en ESP8266.
Visual Estudio Code per Arduino.
Classificador d’imatges.
Instal·lar i configurar Apache en Ubuntu.
Accés a un servidor Linux remotament.
Client i Servidor FTP.
Màquina virtual UBUNTU.
WindowsXP en Virtualbox.
Multisim, simulador de circuits electrònics.
Proteus, simulador de circuits electrònics.
MySQL. Instal·lació.
MySQL. Aplicacions.
Netbeans Maven MySQL.
Java+Netbeans+Maven+EclipseLink+Mysql
Aplicació d’escriptori JavaFX
App JavaFX amb SceneBuilder
App Java-Swing
Noves tecnologies WEB Arduino Domótica MycroPython NodeMCU IoT Java ESP8266 Lora C++ Programació Server-Client