A EEPROM é uma memória interna do microcontrolador ESP8266 que permite manter os dados na memória após reiniciar a placa. Quando se trabalha com microcontroladores, é interessante manter na memória dados como o identificador e a palavra-passe do Wifi.
Material
- Computador
- NodeMCU ESP8266
- Cabo USB A Macho/Micro B Macho
Princípio de funcionamento
O microcontrolador ESP8266 tem uma zona de memória Flash para simular a EEPROM do Arduino. É um local especial de memória no microcontrolador onde os dados permanecem guardados mesmo após a placa ser desligada. É importante observar que a EEPROM tem tamanho e vida útil limitados. As células de memória podem ser lidas tantas vezes quanto necessário, mas o número de ciclos de gravação é limitado a 100.000. É aconselhável atentar ao tamanho dos dados armazenados e à frequência com que se pretende atualizá-los. A EEPROM da ESP8266 tem 4MB.
Se quiser armazenar os dados de um conjunto de sensores para traçar gráficos em tempo real, é melhor optar por um módulo de cartão SD.
Código com a biblioteca EEPROM
Para interagir com a EEPROM do ESP8266, podemos usar a biblioteca EEPROM.h, muito semelhante à do Arduino, mas com duas diferenças: antes de utilizar a função, devemos inicializar o tamanho da memória com begin(); além disso, a função update não existe,
- begin() a inicializar o tamanho da memória
- put() para escrever
- get() para ler
Outras funções de biblioteca podem ser úteis dependendo da sua utilização da 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
Os valores lidos correspondem aos valores armazenados. Pode remover a parte de escrita e executar o código novamente para verificar se os valores estão guardados na memória.

Aplicações
- Salvar o ssdi e a palavra-passe da rede Wifi na memória do ESP8266
Fontes
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie