Site icon AranaCorp

Usar a EEPROM com um ESP8266

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

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,

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

Fontes

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

Exit mobile version