La memoria EEPROM (Electrically Erasable Programmable Read-Only Memory) es un tipo de memoria no volátil que se utiliza en microcontroladores como el ESP32 para almacenar datos de forma permanente. Esto significa que los datos almacenados en la EEPROM se conservan incluso después de que el dispositivo se apague o se reinicie.
¿Por qué usar EEPROM en ESP32?
La EEPROM es útil para almacenar datos que se deben conservar durante el funcionamiento normal del dispositivo, como:
- Configuración del dispositivo: preferencias del usuario, ajustes de red, etc.
- Datos históricos: registros de eventos, mediciones de sensores, etc.
- Datos de identificación: números de serie, direcciones MAC, etc.
¿Cómo funciona la EEPROM en ESP32?
El ESP32 no tiene una memoria EEPROM dedicada, pero la biblioteca EEPROM del núcleo Arduino para ESP32 emula la funcionalidad EEPROM utilizando una sección de la memoria Flash. La memoria Flash es otro tipo de memoria no volátil que se utiliza para almacenar el código del programa y los datos del sistema.
La biblioteca EEPROM proporciona funciones para leer y escribir datos en la memoria Flash emulada. Los datos se almacenan en direcciones individuales, y cada dirección puede almacenar un valor de 8 bits (0 a 255). El tamaño total de la memoria EEPROM emulada es de 512 bytes.
Ventajas de la EEPROM en ESP32:
- Almacenamiento de datos persistentes: Los datos se conservan incluso después de apagar o reiniciar el dispositivo.
- Fácil de usar: La biblioteca EEPROM proporciona funciones sencillas para leer y escribir datos.
- No volátil: Los datos no se borran cuando se pierde la alimentación.
Desventajas de la EEPROM en ESP32:
- Vida útil limitada: Las celdas de memoria EEPROM tienen un número limitado de ciclos de escritura.
- Velocidad de escritura lenta: La escritura en la memoria EEPROM es más lenta que la lectura.
- Tamaño limitado: El tamaño total de la memoria EEPROM emulada es de solo 512 bytes.
En general, la memoria EEPROM es una herramienta valiosa para almacenar datos persistentes en el ESP32. Es fácil de usar, no volátil y tiene un bajo consumo de energía. Sin embargo, es importante tener en cuenta las limitaciones de la EEPROM, como la vida útil limitada, la velocidad de escritura lenta y el tamaño limitado.
Ejemplo de código en .cpp hecho en visual studio code platformio:
#include <Arduino.h>
#include <EEPROM.h>
// Define the EEPROM size
#define EEPROM_SIZE 64
// Define the address to write to
#define ADDRESS 0
void setup() {
// Initialize Serial for debugging
Serial.begin(9600);
// Initialize EEPROM
if (!EEPROM.begin(EEPROM_SIZE)) {
Serial.println("Failed to initialize EEPROM");
Serial.println("Restarting...");
delay(1000);
ESP.restart();
}
// Write data to EEPROM
EEPROM.write(ADDRESS, 123);
EEPROM.commit();
Serial.println("Data written to EEPROM");
// Read data from EEPROM
byte data = EEPROM.read(ADDRESS);
Serial.print("Data read from EEPROM: ");
Serial.println(data);
// Erase data from EEPROM
EEPROM.write(ADDRESS, 0);
EEPROM.commit();
Serial.println("Data erased from EEPROM");
// Read data from EEPROM again to confirm it has been erased
data = EEPROM.read(ADDRESS);
Serial.print("Data read from EEPROM: ");
Serial.println(data);
}
void loop() {
// Nothing to do here
}
Deja una respuesta Cancelar la respuesta