Forum: Mikrocontroller und Digitale Elektronik ESP8266 deep-sleep + EEPROM


von Alexander B. (alexander95)


Lesenswert?

Hallo,

ich möchte mit dem ESP8266 Daten im EEPROM ablegen. Dies soll er später 
alle 30 minuten machen weshalb ich einen deep-sleep um Energie zu sparen 
mit ein gebaut habe.
Das Problem ist allerdings, das der ESP nachdem er aufwacht ist immer 
einen neustart macht und somit im EEPROM alle Adressen wieder auf 255 
zurücksetzt. Im Anhang seht ihr mein Beispiel Code.

Würde mich über jede Hilfe freuen.
LG Alex
1
#include <EEPROM.h>
2
3
void setup()
4
{
5
  Serial.begin(9600); 
6
  EEPROM.begin(512);
7
  
8
  delay(3000);
9
  Serial.println("1 -> " + String(EEPROM.read(1)));    // Ausgabe --> Adresse 1 wird gelesen.
10
  delay(3000);
11
  EEPROM.write(1,10);                                 // Schreibe in Adresse 1 eine 10. 
12
  delay(1000);
13
  Serial.println("1 -> " + String(EEPROM.read(1)));    // Ausgabe --> Adresse 1 wird gelesen.
14
15
  ESP.deepSleep(3 * 1000000);                         // ESP schläft 3 sekunden lang und startet dann automatisch wieder neu.
16
}
17
18
void loop(){ }

von Tr (Gast)


Lesenswert?

Da fehlt ein EEPROM.commit(); sonst speichert der nichts. Bzw. landet 
das nicht eh im Flash? Also Schreibvorgänge beachten, evtl. Wear 
Leveling einbauen.
Außerdem wäre das alles in der loop besser aufgehoben.

von Michael U. (amiga)


Lesenswert?

Hallo,

ja, es landet durch EEPROM.commit(); in Flash, der ESP hat keinen 
EEPROM.
Mit EEPROM.begin() wird der Bereich im Ram reserviert und der 
Flashbereich in den Ram kopiert. Dort wird dann gearbeitet und mit 
EEPROM.commit() wird der Rambereich dann wieder in den Flash kopiert.

Gruß aus Berlin
Michael

von Dirk K. (dekoepi)


Lesenswert?

Tipp: Das RTC Memory wird im DeepSleep erhalten. Dort lassen sich also 
Werte ablegen, die man nach dem Aufwachen braucht. Spart für viele Fälle 
die Abnutzung vom Flash.

von Alexander B. (alexander95)


Lesenswert?

Vielen Dank Leute. Es hat endlich funktioniert.
LG Alex

: Bearbeitet durch User
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.