Icono del sitio AranaCorp

Uso de la EEPROM con el ESP8266

La EEPROM es una memoria interna del microcontrolador ESP8266 que permite mantener en memoria los datos después de reiniciar la placa. Cuando se trabaja con microcontroladores, es interesante mantener en memoria datos como el identificador y la contraseña del Wifi.

Material

Principio de funcionamiento

El microcontrolador ESP8266 tiene una zona de memoria Flash para simular la EEPROM del Arduino. Se trata de una ubicación de memoria especial en el microcontrolador en la que los datos permanecen en la memoria incluso después de apagar la placa. Una cosa importante a tener en cuenta es que la EEPROM tiene un tamaño y una vida útil limitados. Las celdas de memoria pueden leerse tantas veces como sea necesario, pero el número de ciclos de escritura está limitado a 100.000. Es aconsejable prestar mucha atención al tamaño de los datos almacenados y a la frecuencia con la que se desea actualizarlos. La EEPROM del ESP8266 tiene un tamaño de 4MB.


Si quieres registrar los datos de una flota de sensores en tiempo real para trazarlos, lo mejor es optar por un módulo de tarjeta SD para almacenar los datos.

Código con la biblioteca EEPROM

Para interactuar con la EEPROM del ESP8266, podemos utilizar la librería EEPROM.h muy similar a la de Arduino con diferencias. Antes de utilizar la función, debemos inicializar el tamaño de la memoria con begin() y la función update no existe pero write hace lo mismo.

Se pueden utilizar otras funciones de la biblioteca dependiendo del uso que se haga de la EEPROM.

//Libraries
#include <EEPROM.h>//https://github.com/esp8266/Arduino/blob/master/libraries/EEPROM/EEPROM.h

//Constants
#define EEPROM_SIZE 12

void setup() {
  //Init Serial USB
  Serial.begin(115200);
  Serial.println(F("Initialize System"));
  //Init EEPROM
  EEPROM.begin(EEPROM_SIZE);

  //Write data into eeprom
  int address = 0;
  int boardId = 18;
  EEPROM.put(address, boardId);
  address += sizeof(boardId); //update address value

  float param = 26.5;
  EEPROM.put(address, param);
  EEPROM.commit();

  //Read data from eeprom
  address = 0;
  int readId;
  EEPROM.get(address, readId);
  Serial.print("Read Id = ");
  Serial.println(readId);
  address += sizeof(readId); //update address value

  float readParam;
  EEPROM.get(address, readParam); //readParam=EEPROM.readFloat(address);
  Serial.print("Read param = ");
  Serial.println(readParam);

  EEPROM.end();
}

void loop() {}

Resultado

Los valores leídos corresponden a los valores almacenados. Puedes eliminar la parte de escritura y reiniciar el código para comprobar que los valores se mantienen bien en la memoria.

Aplicaciones

Fuentes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

Salir de la versión móvil