ESP32 Daten und Einstellungen dauerhaft speichern - AZ-Delivery

Si è notato spesso che impostazioni, variabili o input non sono più disponibili dopo il riavvio di ESP32. Oggi ti mostriamo come salvare le variabili o le impostazioni in modo permanente, dopo un'interruzione di corrente o un riavvio.

Arduino ha una memoria EEPROM, dove tali valori possono essere salvati. Un ESP32 non ha tale memoria. Per ESP32 è presente una memoria flash (simile a una chiavetta SSD / USB).

Per poter accedervi, utilizziamo le Preferenze, che sono incluse nella libreria ESP. Se non hai ancora installato questa libreria sul tuo computer, dai un'occhiata a questo ebook: Modulo Lora ESP32 con OLED

Iniziamo un nuovo progetto IDE di Arduino e incolliamo questo codice:

 

#include <Preferenze.B>

Preferenze preferenze;                         vuoto configurazione() {   serial.iniziare(115200);   serial.println();   preferenze.iniziare("Az", falso);                         // Crea / usa la cartella az   //preferences.clear (); // Elimina tutti i "file" nella cartella az   //preferences.remove("Start "); // elimina "file" start   unsigned int contatore = preferenze.getUInt("Start", 0); // Leggi "file" avvia e scrive sul contatore delle variabili                                                           // ", 0" significa che, se start non esiste, passa il valore predefinito 0

 contatore++;                                               // Aumenta il contatore delle variabili di 1   serial.printf("Numero di avviamenti:% u \ n", contatore);          // Uscita seriale contatore variabile   preferenze.putUInt("Start", contatore);                  // Salva il contatore delle variabili in "File" Start   preferenze.fine();                                      // esci dalle preferenze   serial.println("Riavvia tra 10 secondi ...");   ritardo(10000);                                           // tempo di attesa 10000ms = 10s   ESP.nuovo inizio();
}

vuoto cappio() {}

 

Cosa fa questo codice?

Innanzitutto creiamo una nuova cartella o la usiamo come cartella corrente.

preferenze.iniziare("Az", falso);  

Se si desidera eliminare tutto il contenuto nella cartella az, utilizzare:

preferenze.chiaro();  

 

Puoi anche eliminare un file specifico:

preferenze.remove("Start");  

 

Con gli ordini

preferenze.putUInt

i dati interi possono essere salvati e con

preferenze.getUInt

i dati interi memorizzati possono essere letti nuovamente.

Ci sono anche le seguenti altre opzioni (String, Long ...) per salvare e leggere i file:

putchar
putUChar
putShort
putUShort
putInt
putUInt
putLong
putULong
putLong64
putULong64
putFloat
mettere doppia
putBool
putString
putString
putBytes
getchar
getUChar
getShort
getUShort
getInt
getUInt
getLong
getULong
getLong64
getULong64
getFloat
getDouble
GetBool
getString
getString
getBytes

 

unsigned int contatore = preferenze.getUInt("Start", 0);

Con getUInt leggiamo il file "Start" e lo scriviamo nel contatore delle variabili. Se il file "Start" non esiste, viene utilizzato un valore predefinito, in questo caso uno 0. Il valore predefinito viene aggiunto dopo il file con una virgola.

Dopo aver aumentato e generato la variabile, salviamo il contatore delle variabili nel file Start:

preferenze.putUInt("Start", contatore);  

Dopo aver salvato tutto, chiudiamo di nuovo la nostra cartella az con il comando:

preferenze.fine();  

Ora riavviamo ESP32 e ricominciamo. Ora possiamo anche scollegare l'alimentatore e sapere sempre con esattezza con che frequenza è stato avviato l'ESP, perché questo valore viene ora letto all'accensione e salvato nuovamente aumentato di uno.

Con questa funzione, ora è possibile salvare e utilizzare altri valori, ad es. Dati di accesso WLAN, ultimo stato ... escogitare qualcosa.

Divertiti a sperimentare!

 

 

 

Esp-32Grundlagen software

7 commenti

Andreas Wolter

Andreas Wolter

@Georg: da Quellcode meistens schlechter lesbar ist, wenn lange Zeilen zu oft umgebrochen werden, werden die Zeilen nicht umgebrochen und daher Scrollbalken verwendet.
Ich empfehle, den kompletten Code in einen Editor Ihrer Wahl zu kopieren und auf dem gesamten Bildschirm anzuzeigen.
Die Codebeispiele sollen nur zur ersten Ansicht dienen. Ein vollständiges Review sollte jeder in seinem Editor durchführen.

Grüße,
Andreas Wolter
AZ-Delivery Blog

Georg

Georg

Eure Beiträge sind super und sehr hilfreich. Bedauerlicherweise ist es jedoch sehr umständlich diese zu lesen, da das Design der Webseite so schlecht ist wie die Blog-Artikel gut sind. Wieso muss ich auf einem normalen Bildschirm mit 1920 Pixeln Breite seitlich scrollen um den Quellcode des Beispiels lesen zu können, obwohl ein Großteil des Bildschirms ungenutzt ist? Leider scheint dieser Unsinn mittlerweile überall Standard zu sein… O_o

Markus

Markus

Danke für den guten Beitrag.
Kann ich eigentlich die Preferences und Spiffs in einem Sketch gleichzeitig nutzen. Oder gibt es da Probleme bei der Nutzung des NVS.

Brian

Brian

Ist es richtig, dass dieser Speicher beim ESP eine begrenzte Anzahl von Schreibzyclen hat? Wie hoch ist diese?

Noob-nerd

Noob-nerd

if (preferences.getUInt(“Start”, -1) == -1 ){
//gibt nichts
}

Peter Pi.

Peter Pi.

Danke! Mich würde interessieren, wie man erfährt, ob bei einem get ein Schlüssel überhaupt existiert.

Hoktaar

Hoktaar

Hi & Danke für diesen sehr guten Beitrag.

Geht das auch mit einem ESP8266 oder gibt es dort etwas ähnliches was so einfach ist?

Lascia un commento

Tutti i commenti vengono moderati prima della pubblicazione