Forum: Mikrocontroller und Digitale Elektronik ESP8266: SPIFFS Speicher - Was damit machen?


von Christian J. (Gast)


Lesenswert?

Hallo,

ich habe grad den Stein "NodeMCU 8266" mit 4M Flash entdeckt und hier 
liegen, zumindest die LED kriege ich zum Blinken. Und auch die Software 
für die At-CMDs kriege ich geflasht mit dem Tool von Espressiv.

Das weitere unter Arduino mit pasender Lib. Ebenfalls installiert habe 
ich ein .jar File in den Tools, dass es mir ermöglicht einen Data Ordner 
in FS des Chips zu laden (SPIFFS). Funzt auch, getestet mit ein paar 
Text Files. Mal einen Webserver aus den Examples gestartet, verbindet 
sich auch mit meinem Wifi zu Hause.

Jetzt die Frage: Was kann ich mit dem Platinchen Schönes machen? Mir 
fällt auf Anhieb da nichts ein, außer vielleicht einen Wetter Server ab 
zu fragen und ein paar LEDs zu schalten mit einem json Parser. Glaube 
openwwaether org hat auch das json Format.

Hat damit schon mal jemand gebastelt? Dieser SPIFFS Speicher sollte 
schon genutzt werden, hat ja vermutlich seinen Zweck, dass man das dort 
gespeicherte benutzen kann....

Link auf ein Projekt zum Nachbauen wäre gut.

PS: Stromsparend ist das Ding ja grad nicht.... Batterie scheidet wohl 
aus.

Gruss,
Christian

von Andreas B. (rfz)


Lesenswert?

Puh, von LED blinken lassen bis kabellos TV Signale senden kann der ESP 
eigentlich alles. Und W-LAN natürlich auch :)
Ich empfehle dir einfach mal auf YouTube nach esp8266 zu suchen und dir 
einige Projektvideos anzusehen. Vielleicht findest du da eine schöne 
Idee.

Stromsparend kann er übrigens auch, aber natürlich nicht non stop mit 
W-LAN. Man kann ihn aber schlafen legen und z.B. nur alle 5min was tun 
lassen, dann hält er auch mit Batterie ewig.

Und der SPIFFS Speicher ist einfach ein Teil des Flash-Speichers. Du 
musst den nicht als Dateisystem nutzen, das ist einfach nur eine Option. 
Du kannst ihn auch normal mit programmcode beschreiben, aber so viel 
wirst du nie brauchen.

von Christian J. (Gast)


Lesenswert?

Andreas B. schrieb:
> Und W-LAN natürlich auch :)

Ja, sowas schwebt mir auch vor. Über meine Fritzbox ins Internet. Ok, 
steuern muss ich nichts, meine Heizung schalte ich auch so per App ein, 
das gibt es fertig zu kaufen.

NTP Abfrage grad probiert, klappt auch. Deauther ist auch ein nettes 
Spielzeug. Nervtötend sind nur die endlos langen Kompiliervorgänge, auch 
wenn der Upload mit maximalen 900.000 problemlos klappt. Aber eine 
änderung sind dann rund 15-20 Sekunden warten, weil da ja wohl etliches 
mehr hochgeladen wird als nur ein Blink Sketch. Keine Ahnung wieso das 
noch nicht geändert wurde. 180 kb Bin-File und 25 kb globale Variablen 
direkt belegt.... fragt sich nur womit.

von Michael U. (amiga)


Lesenswert?

Hallo,

Christian J. schrieb:
> Keine Ahnung wieso das
> noch nicht geändert wurde. 180 kb Bin-File und 25 kb globale Variablen
> direkt belegt.... fragt sich nur womit.

was sollte man da ändern? WLAN, TCP-Stack und noch etliche 
Standardfunktionen weglassen? Dann nimmt man eben keinen ESP, zum 
Blinken einer LED reicht auch ein ATTiny...

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Findet den ESP dufte! (Gast)


Lesenswert?

Michael U. schrieb:
> zum
> Blinken einer LED reicht auch ein ATTiny...

Quatsch, dass wird diskret aufgebaut. Maximal noch mit einem NE555.
Obwohl ich mir vorstellen könnte, dass einige dafür auch ein Raspberry 
Pi B 3+ auspacken würden. ;)

Ja der ESP ist schon ein ganz netter Chip. Auch der ESP32 mit seinen 2 
Kernen ist ganz nett.

von Christian J. (Gast)


Lesenswert?

Michael U. schrieb:
> was sollte man da ändern? WLAN, TCP-Stack und noch etliche
> Standardfunktionen weglassen?

Vielleicht nur einmal laden? So wie auch die diversen Teile der Firmware 
für AT-Cmd? Das Flashen geschieht doch partiell. Ist bisher auch der 
Grund wieso ich damit noch nicht mehr gemacht habe, die meiste Zeit 
wartet man eben, besonders anfangs wenn man erst ausprobieren muss ob es 
überhaupt so klappt.

Fürs Blinken einer LED brauch ich 2 T's, 2 C's und 4 R's, nennt sich 
astabiler Multivibrator in sachkundigen Fachkreisen....

von Christian J. (Gast)


Lesenswert?

Moin,

nochmal kurz ne Frage: Welchen sind ergeben Arduino Makros wie PROGMEM, 
wenn die Tensilica Xtensa CPU sich doch sowieso blockweise den Code aus 
dem seriellen Flash nachlädt, den sie grad ausführt? Liegt doch eh alles 
im Ram später.

Macht das da noch Sinn auf den RAM Speicher zu gucken? 50kb sind das 
glaube ich.....

von Christian J. (Gast)


Lesenswert?

Stefanus? Bist Du hier?

Weisst du zufällig wie man beim ESP8266 das Wifi abschaltet und wieder 
ein?
Frage ja nur alle 5 Minuten ab. Aktuell habe ich Auto Connect. Möchte 
etwas Stromsparen, so 1s im Sleep Mode wäre gut und dann weiter. 
Idealerweise wäre ein Light Sleep Gut.

Gruss,
Christian

von Stefan F. (Gast)


Lesenswert?

Christian J. schrieb:
> Was kann ich mit dem Platinchen Schönes machen?

Du kannst im SPIFFS zum Beispiel statische HTML Seiten, Bilder, 
Javascripte, etc ablegen. Damit erzeugst du Webseiten, über die du das 
Gerät (das du noch erfinden wirst) bedienen kannst.

> Weisst du zufällig wie man beim ESP8266 das Wifi abschaltet
> und wieder ein?

Ja, "zufällig" habe ich dafür sogar ein Lesezeichen definiert: 
http://stefanfrings.de/esp8266/index.html#wlanonoff

> Möchte etwas Stromsparen, so 1s im Sleep Mode wäre gut und
> dann weiter. Idealerweise wäre ein Light Sleep Gut.

Dann kann der ESP allerdings nicht mehr den Webserver für ein 
Browser-basiertes Bedienfeld spielen.

von Christian J. (Gast)


Lesenswert?

Stefanus F. schrieb:
> Dann kann der ESP allerdings nicht mehr den Webserver für ein
> Browser-basiertes Bedienfeld spielen.

Nö, muss er auch nicht. Guckt nur alle 1 Stunde im Web nach, holt die 
Börsen Kurse als json und taucht wieder ab.

Das spffis kann man prima mit einem fs verwenden,. klappt richtig 
klasse! einfach logfiles dort ablegen und später senden.

von Stefan F. (Gast)


Lesenswert?

Christian J. schrieb:
> Das spffis kann man prima mit einem fs verwenden,. klappt richtig
> klasse! einfach logfiles dort ablegen und später senden.

Weiß jemand, ob da ein brauchbares wear-levelling enthalten ist?

von Totomitharry (Gast)


Lesenswert?

Beim ESP32 kann man sich eine Custom Partition erstellen und die 
komplette Partition als RAM Mappen, ist dazu noch ultraschnell im 
gegensatz zu Spiff.

Spiff hat für Richtige Datenschubsserei einfach zuviel Overhead, wnen 
man mal überlegt wie schnell es mit max SPI gehen müsste..

von Christian J. (Gast)


Lesenswert?

Totomitharry schrieb:

> Beim ESP32 kann man sich eine Custom Partition erstellen und die
> komplette Partition als RAM Mappen, ist dazu noch ultraschnell im
> gegensatz zu Spiff.

Jetzt schreibst du hier einen Teaser aber lässt offen wie das zu machen 
ist.

von Toto mit Harry (Gast)


Lesenswert?

Christian J. schrieb:
> Jetzt schreibst du hier einen Teaser aber lässt offen wie das zu machen
> ist.

Es ging ja auch um den ESP8266..

dort kann man das ähnlich mit Progmem machen, da kann man 
Partitionierung ohne Spiff erstellen und nur eine große 
Programmpartition anlegen.

Das ist dann only Read,den Rest hab ich selbst nicht versucht.. aber wie 
bei OTA ist bestimmt auch das möglich.

Mappen unterstützt nur der ESP32 soweit ich weiß, ich nutze es nur Only 
Read.

von TotoMitHarry (Gast)


Lesenswert?

Also so gehts beim ESP32:

Ich habe eine Custom Partition angelegt und mein Bilddaten.bin mit dem 
ESP-Downloader an die Adresse geladen. Dann habe ich die Partition als 
RAM in einen Pointer gemappt. (macht die MMU mit nem Transparent Cache)

Jetzt kann ich mit dem Pointer "data"+Offset meine Bilder direkt zum 
Display rausschieben.

Pseudobeispiel:
Code:
1
const esp_partition_t* part;
2
spi_flash_mmap_handle_t handle;
3
void* data;
4
esp_err_t err;
5
6
void setup(){
7
part=  esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, "storage");
8
err = esp_partition_mmap(part, 0, part->size, SPI_FLASH_MMAP_DATA, (const void**)&data, &handle);
9
vspi->writeBytes((uint8_t*)data+offsetBackground, width *high* 3);
10
}

von Christian J. (Gast)


Lesenswert?

TotoMitHarry schrieb:
> Ich habe eine Custom Partition angelegt und mein Bilddaten.bin mit dem
> ESP-Downloader an die Adresse geladen. Dann habe ich die Partition als
> RAM in einen Pointer gemappt. (macht die MMU mit nem Transparent Cache)

Ich verstehe zwar nur Bahnhof, weil ich keine Ahnung habe womit man das 
macht aber der ESP8266, der ohne die Arduino Cores eh kaum benutzbar ist 
kann direkt auf 1-4 Mbt SPIFFS eingestellt werden. Bindet man das FS ein 
kann man direkt auf ein File System zugreifen, ob Ram oder Flash ist 
wumpe. Es ist r/w. Einspielen kann man die Daten mit dem Upload Tool 
(data Ordner), sie könnten aber auch run time erzeugt werden. Zugriffe 
mit fopen, fwrite, fread usw. Als wenn eine SD Karte eingesteckt wäre. 
Der Stein hat wirklich einiges an Potential, ich bin da immer wieder 
erstaunt. Zumindest solange ich den Core 2.4.0 nutze, mit denen drüber 
läuft nix mehr....

von TotoMitHarry (Gast)


Lesenswert?

Christian J. schrieb:

> Ich verstehe zwar nur Bahnhof, weil ich keine Ahnung habe womit man das
> macht aber der ESP8266..

Mir war Spiff halt zu langsam, zum testen benutze ich es auch.. für nen 
bisschen Logging oder so.

Ich benötigte für vernünftige FPS auf dem Display Daten an SPI..

Mit Spiff waren es umgerechnet 15Mhz SPI Datenrate, mit der Mapping 
Lösung die angepeilten 24Mhz Datenrate und nach oben alles offen.

von Magroy (Gast)


Lesenswert?

> Fürs Blinken einer LED brauch ich 2 T's, 2 C's und 4 R's, nennt sich
> astabiler Multivibrator in sachkundigen Fachkreisen....

Für's Blinken einer LED brauche ich eine Blink-LED und einen 
Vorwiderstand... :-/

von Stefan F. (Gast)


Lesenswert?

Magroy schrieb:
> Für's Blinken einer LED brauche ich eine Blink-LED und einen
> Vorwiderstand... :-/

Der Vorwiderstand ist sogar optional - wenn du eine CR2032 verwendest.

von Lisa-Marie (Gast)


Lesenswert?

Hallo,
der letzte Eintrag liegt zwar schon etwas zurück.

Ich verwende auch ESP8266 mit Arduino-IDE.

Wie kann man eine kleine TEXTDATEI aus dem ESP-SPIFFS-Speicher  in 
meinen  ***.BPLACED.NET -Ordner hochladen ?

Leider bisher alle Versuche beim Googeln vergebens.

Grüße
lisa

von Stefan F. (Gast)


Lesenswert?

Offenbar brauchst du dafür einen SFTP Client mit TLS Unterstützung. Das 
schafft der ESP8266 nicht.

von Christian J. (Gast)


Lesenswert?

Lisa-Marie schrieb:
> Wie kann man eine kleine TEXTDATEI aus dem ESP-SPIFFS-Speicher  in
> meinen  ***.BPLACED.NET -Ordner hochladen ?

Indem man eine SSL Verbindung etabliert und Dateien mit wput hoch lädt, 
wenn es ein ftp Server ist. Was bei einer Homepage ja üblich ist

https://www.youtube.com/watch?v=Wm1xKj4bKsY

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.