Salvataggio permanente dei dati e delle impostazioni eSP32

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

5 Kommentare

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?

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Post di blog consigliati

  1. Installa ESP32 ora dal gestore del consiglio di amministrazione
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - Programmazione ESP tramite WLAN