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