ESP8266 Flash Dateisystem SPIFFS beispielhaft benutzen
Dieses Tutorial erklärt ausführlich das ESP8266 Flash File System abgekürzt als (SPIFFS). Es gibt zwei Möglichkeiten, Daten auf dem ESP8266 zu speichern, eine davon ist das interne EEPROM mit 512 Bytes. Das EEPROM besitzt 1 Million Schreibzyklen. Die zweite Möglichkeit ist die Verwendung von SPI Flash (64kBytes bis 15Mbyte). Neben dem ESP-01 befindet sich ein kleiner 8-Pin Chip, welcher über SPI mit ESP verbunden ist. In diesem Flash-Speicher speichert der ESP das Programm. Zusammen mit dem Programm können auch Dateien darauf abgelegt werden. Einschränkung dieses Speichers ist, dass er nur 10.000 Schreibzyklen hat.
Obwohl das Dateisystem auf dem gleichen Flash-Chip wie das Programm gespeichert ist, wird die erneute Programmierung des Programmteils den Inhalt des Dateisystems nicht verändern. Dies ermöglicht es, das Dateisystem zu verwenden, um Konfigurationsdateien oder Inhalte für den Webserver zu speichern.
Das Flashlayout ist dabei wie folgt aufgebaut:
|--------------|-------|-------------------|--|--|--|--|--| ^ ^ ^ ^ ^ Anwendung OTA update Datei-System EEPROM WiFi-Konfiguration
Die Größe des Dateisystems hängt von der Größe des Flash-Chips ab. Abhängig von dem benutztem Board, haben Sie die folgenden Optionen für die Flash-Größe:
Board | Flash Chip Größe, in Bytes | Dateisystem Größe, in Bytes |
---|---|---|
Generic Modul | 512kB | 64kB |
Generic Modul | 1MB | 64kB, 128kB, 256kB, 512kB |
Generic Modul | 2MB | 1MB |
Generic Modul | 4MB | 3MB |
Adafruit HUZZAH | 4MB | 1MB, 3MB |
NodeMCU 0.9 | 4MB | 1MB, 3MB |
NodeMCU 1.0 | 4MB | 1MB, 3MB |
Eine Anleitung wie Sie die Größe des Flash Speichers ermitteln können finden Sie hier.
Beispielcode um Text in eine Datei im Dateisystem zu schreiben und wieder auszulesen:
#include <ESP8266WiFi.h> #include <FS.h> //Include File System Headers const char* filename = "/file.txt"; void setup() { delay(1000); Serial.begin(9600); Serial.println(); //Initialize File System if(SPIFFS.begin()) { Serial.println("SPIFFS Initialisierung....OK"); } else { Serial.println("SPIFFS Initialisierung...Fehler!"); } //Format File System if(SPIFFS.format()) { Serial.println("Datei-System formatiert"); } else { Serial.println("Datei-System formatiert Error"); } //Erstellung einer neuen Datei und Beispielhaftes füllen der Datei //w=Öffnen mit Schreibzugtriff auf die Datei File f = SPIFFS.open(filename, "w"); if (!f) { Serial.println("Oeffnen der Datei fehlgeschlagen"); } else { //Write data to file Serial.println("Schreibe Daten in die Datei"); f.print("Dies ist Beispielinhalt...."); f.close(); //Schließen der Datei } } void loop() { int i; //Lesen des Dateiinhaltes File f = SPIFFS.open(filename, "r"); if (!f) { Serial.println("Oeffnen der Datei fehlgeschlagen"); } else { Serial.println("Lesen des Dateiinhaltes:"); //Data from file for(i=0;i<f.size();i++) //Read upto complete file size { Serial.print((char)f.read()); } f.close(); //Schließen der Datei Serial.println(""); Serial.println("Datei geschlossen"); } delay(5000); }
Mit dem “Seriellen Monitor” der Arduino-IDE kann die Ausführung des Programmes nachvollzogen werden:
Weitere Funktionen der “FS”-Bibliothek sind hier beschrieben.
Noch keine Kommentare.