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
- Ordenador
- NodeMCU ESP8266
- Cable USB A macho/micro B macho
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.
- begin() para inicializar el tamaño de la memoria
- put() para escribir
- get() para leer
- commit() para confirmar el cambio
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
- Mantener en la memoria el ssid y la contraseña de la red Wifi en un ESP8266
Fuentes
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie