esp32-eeprom

Guarda variables ESP32 y la biblioteca EEPROM

  • 3 min

La librería EEPROM en ESP32 proporciona una forma confiable de almacenar datos de manera persistente, de forma que estén accesibles incluso cuando la fuente de alimentación se desconecta.

EEPROM (Electrically Erasable Programmable Read-Only Memory) es un tipo de memoria no volátil, que se incluye en algunos modelos de Arduino.

El ESP32 no tiene una EEPROM como tal. Sin embargo, los desarrolladores del Core del ESP32 para Arduino incluyeron una librería EEPROM que emula el comportamiento para que fuera sencillo de usar.

Con el ESP32 y la biblioteca EEPROM, puedes utilizar hasta 512 bytes en la memoria flash. Esto significa que tienes 512 direcciones diferentes, y puedes guardar un valor entre 0 y 255 en cada posición de dirección.

A diferencia de la memoria RAM, los datos que guardemos con la librería EEPROM no se pierden cuando se corta la energía. Esta característica la convierte en una elección ideal para retener configuraciones, ajustes y otros datos importantes en dispositivos embebidos como el ESP32.

Cómo usar la biblioteca EEPROM en el ESP32

Configuración Inicial

Antes de utilizar la EEPROM en ESP32, es necesario realizar una configuración inicial.

#include <EEPROM.h>

Luego, es necesario inicializar la EEPROM con el tamaño adecuado en el método setup():

void setup() {
  EEPROM.begin(size);
  // Resto del código de inicialización
}

Reemplaza size con el tamaño en bytes que deseas asignar a la EEPROM para tus datos.

Almacenar y leer Datos

La EEPROM se puede utilizar para almacenar diversos tipos de datos, como enteros, flotantes, caracteres y estructuras personalizadas.

int valor = 42;
int direccion = 0; // Dirección de memoria donde se almacenará el valor

EEPROM.write(direccion, valor); // Almacena el valor en la dirección dada
EEPROM.commit(); // Guarda los cambios en la memoria EEPROM

int valorLeido = EEPROM.read(direccion); // Lee el valor almacenado en la dirección dada

Recuerda que debes llamar a EEPROM.commit() después de escribir datos en la EEPROM para asegurarte de que los cambios se guarden de manera permanente.

Ejemplo de código

Supongamos que estás trabajando en un proyecto que utiliza una conexión WiFi para comunicarse con un servidor. Sería útil guardar las credenciales de WiFi en la EEPROM para que el dispositivo pueda conectarse automáticamente después de reiniciar.

Aquí tienes un ejemplo de cómo hacerlo:

#include <EEPROM.h>
#include <WiFi.h>

const char* ssid = "nombre-de-la-red";
const char* password = "contraseña-de-la-red";
int direccionSSID = 0;
int direccionPassword = sizeof(ssid);

void setup() {
  EEPROM.begin(512);
  EEPROM.writeString(direccionSSID, ssid);
  EEPROM.writeString(direccionPassword, password);
  EEPROM.commit();
  
  // Resto del código de inicialización, conexión a WiFi, etc.
}

En este ejemplo, utilizamos el método writeString() para almacenar las credenciales de WiFi en la EEPROM.