Site icon AranaCorp

Usar a EEPROM com um ESP8266

0
(0)

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

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Exit mobile version