O que é, e para que serve a memória EEPROM do Arduino?

 

 

O QUE É , E PARA QUE SERVE A MEMÓRIA EEPROM DO ARDUINO?

 

 

Ao definir e usar uma variável em um código do Arduino, os dados associados a essa variável são armazenados temporariamente e perdidos quando o Arduino é desligado. No entanto, em muitos projetos, é necessário armazenar informações de forma permanente, mesmo após reinicializações ou desligamentos do Arduino.

A memória EEPROM do Arduino é uma ótima ferramenta em projetos nos quais é necessário armazenar configurações personalizadas, registros de dados importantes ou qualquer informação que precise ser lembrada mesmo após uma interrupção de energia. Neste artigo, vamos explorar a importância da memória EEPROM do Arduino e aprender como utilizá-la de forma adequada em projetos eletrônicos.

 

Memória EEPROM

A EEPROM (Electrically Erasable Programmable Read-Only Memory) é um componente de memória encontrado em vários microcontroladores, incluindo o Arduino. Sua função principal é armazenar dados não voláteis, ou seja, informações que não são perdidas quando o microcontrolador é desligado.

Diferentemente da memória RAM, que é volátil e perde seu conteúdo ao desligar o dispositivo, a EEPROM mantém as informações armazenadas por longos períodos de tempo, assegurando a preservação dos dados importantes. Em essência, a EEPROM é um tipo de armazenamento permanente semelhante a um disco rígido em computadores. A EEPROM pode ser eletronicamente lida, apagada e reescrita. No Arduino, é possível realizar operações de leitura e escrita na EEPROM de forma simples utilizando a biblioteca EEPROM.

O microcontrolador da placa Arduino Uno (ATMEGA328P) possui a memória EEPROM incorporada em seu chip. A figura 1 mostra o microcontrolador ATMEGA328P, utilizado na placa do Arduino Uno.

 

Figura 1 – Microcontrolador ATMEGA328P

 

Algumas aplicações da memória EEPROM do Arduino

 A seguir estão alguns exemplos de aplicações onde o armazenamento permanente de dados usando a EEPROM do Arduino pode ser útil:

1. Configurações do usuário: Em projetos com interfaces de usuário, como um termostato programável, você pode armazenar as preferências e configurações definidas pelo usuário na EEPROM. Dessa forma, as configurações serão mantidas mesmo após a reinicialização do Arduino.

2. Contadores e temporizadores: Se você precisa manter um registro de contagens ou tempo decorrido em um projeto, a EEPROM pode ser usada para armazenar essas informações. Isso é especialmente útil em aplicações como sistemas de controle de acesso ou sistemas de cronometragem.

3. Calibração de sensores: Ao calibrar sensores, como sensores de temperatura ou de luminosidade, você pode armazenar os valores de calibração na EEPROM. Isso permite que você mantenha a precisão dos sensores mesmo após o Arduino ser desligado e ligado novamente.

4. Armazenamento de dados de histórico: Em projetos de monitoramento ou registro de dados, onde é necessário armazenar leituras de sensores ao longo do tempo, a EEPROM pode ser usada para armazenar os dados de histórico. Isso permite que você recupere esses dados mesmo após uma interrupção de energia.

5. Variáveis persistentes: Se você tem variáveis que precisam ser mantidas entre diferentes execuções do programa, a EEPROM pode ser usada para armazenar essas variáveis. Isso permite que você retome o estado anterior do programa após a reinicialização do Arduino.

 

Quantos bytes podemos armazenar na memória EEPROM do Arduino?

Cada posição da EEPROM do Arduino pode salvar um byte, o que significa que podemos armazenar números de 8 bits, que incluem valores inteiros entre 0 e 255. Os bytes que você pode armazenar na EEPROM dependem dos microcontroladores das placas Arduino.

 

 

A tabela 1 mostra a quantidade de bytes de armazenamento para os diferentes microcontroladores Arduino.

 

Expectativa de vida útil da EEPROM do Arduino

A expectativa de vida útil da EEPROM do Arduino é limitada. Cada posição da EEPROM é projetada para suportar aproximadamente 100.000 ciclos de gravação/apagamento. No entanto, não há restrições em relação às leituras da EEPROM, ou seja, você pode ler a EEPROM quantas vezes desejar sem afetar sua expectativa de vida útil.

 

Quando utilizar uma EEPROM externa?

Existem algumas razões pelas quais você pode optar por usar uma EEPROM externa em vez da EEPROM interna do Arduino:

Capacidade de armazenamento: A EEPROM interna do Arduino geralmente possui uma capacidade limitada, que varia entre alguns bytes a alguns kilobytes, dependendo do modelo do Arduino. Se você precisar armazenar uma grande quantidade de dados, uma EEPROM externa oferece uma capacidade muito maior, permitindo armazenar centenas de kilobytes ou até mesmo megabytes de dados.

Preservação dos dados: A EEPROM interna do Arduino tem um número limitado de ciclos de escrita antes que comece a se desgastar. Ao usar uma EEPROM externa, você pode reduzir a carga de escrita na EEPROM interna, preservando-a para uso em outras tarefas críticas.

 

Flexibilidade: Com uma EEPROM externa, você pode facilmente remover e trocar a memória sem ter que modificar fisicamente o Arduino. Isso permite que você altere a capacidade de armazenamento ou até mesmo transfira os dados para outro dispositivo, se necessário.

Armazenamento permanente: A EEPROM interna do Arduino mantém os dados mesmo quando o Arduino é desligado, mas se você deseja armazenar dados permanentemente ou transferi-los para outros dispositivos, uma EEPROM externa pode ser uma solução melhor.

Velocidade: Em algumas situações, uma EEPROM externa pode ser mais rápida do que a EEPROM interna do Arduino, permitindo um acesso mais eficiente aos dados armazenados. Na figura 2 podemos ver um exemplo de módulo de memória EEPROM externo (AT24C256).

 

Figura 2 – Módulo de memória EEPROM externo (AT24C256)

 

Como utilizar a biblioteca EEPROM do Arduino

 - Para incluir a biblioteca EEPROM basta digitar no início do código:

 

 - Para escrever na EEPROM

Para gravar dados na EEPROM, utiliza-se a função EEPROM.write() que aceita dois argumentos. O primeiro é o endereço da EEPROM onde você deseja salvar os dados e o segundo é o valor que queremos salvar:

Por exemplo, para escrever 9 no endereço 0, basta digitar:

 

 - Para ler na EEPROM

Para ler um byte da EEPROM, utiliza-se a função EEPROM.read(). Ela requer o endereço do byte como argumento.

Por exemplo, para ler um byte gravado previamente no endereço 0 basta digitar:

 

 - Para atualizar um valor

A função EEPROM.update() é particularmente útil. Só escreve na EEPROM se o valor escrito for diferente do já salvo. Como a EEPROM tem expectativa de vida limitada devido a ciclos limitados de gravação/apagamento, usar a função EEPROM.update() em vez de EEPROM.write() salva os ciclos da EEPROM.

Utiliza-se a função EEPROM.update() da seguinte maneira:

Neste momento temos o valor 9 gravado no endereço 0, se digitarmos a seguinte função:

Neste caso não irá escrever na EEPROM novamente, pois o valor atualmente salvo é o mesmo que queremos escrever.

 

Exemplo de Projeto utilizando a EEPROM do Arduino

Considere a seguinte situação:

Você está usando o seu Arduino para controlar um LED, e atualmente o LED está aceso. De repente, ocorre uma interrupção de energia no Arduino. Ao ligá-lo novamente, você percebe que o LED está apagado, não mantendo o estado em que estava antes da interrupção de energia (conforme a Figura 3). Isso pode ser inconveniente, pois você gostaria que o Arduino se lembrasse do estado anterior da lâmpada e o restaurasse quando fosse ligado novamente.

 

Figura 3 – Lógica sem o uso de EEPROM

 

Para solucionar essa questão, é possível utilizar a EEPROM do Arduino para armazenar o estado da lâmpada. Dessa forma, é possível adicionar uma condição ao código para verificar, inicialmente, se o estado atual da lâmpada corresponde ao estado anteriormente salvo na EEPROM.

 

Materiais para montagem

Passos para a montagem do circuito

A montagem do circuito deve ser feita conforme imagem a seguir. Observe atentamente a posição correta dos terminais dos respectivos componentes.

Programação do Arduino

Inicialmente abra a IDE do Arduino para iniciar a programação. Em seguida digite o respectivo código conforme a imagem a seguir:

Após digitar o código, basta fazer o upload no Arduino Uno. O processo para fazer o upload do código no Arduino Uno é bem simples:

 - Conecte o seu Arduino Uno utilizando o cabo USB.

 - Vá em Ferramentas ? Placa ? Arduino Uno para selecionar sua placa no menu Arduino.

 - Em seguida escolha a porta serial correta para sua placa vá em ferramentas ? Porta serial ? COMx (Escolha a porta serial ao qual o seu Arduino estiver conectado).

 - Por fim, basta clicar no botão Carregar. 

Se não houver nenhum erro de digitação ou configuração, o código será gravado no Arduino. Caso contrário verifique se o código foi digitado corretamente e se as configurações estão corretas.

Após o código ser carregado com sucesso no Arduino, você poderá observar o funcionamento do circuito:

Ao pressionar o botão, o LED irá acender e o estado do LED será salvo na EEPROM do Arduino, desta maneira mesmo que o Arduino perca a alimentação, o estado do LED que foi previamente salvo na EEPROM retornará assim que a alimentação for reestabelecida.

 

 A Figura 4 ilustra o funcionamento do circuito.

Figura 4 – Funcionamento do circuito proposto utilizando a EEPROM

 

Conclusão

A memória EEPROM do Arduino é sem dúvida uma ferramenta de grande importância no desenvolvimento de diversos projetos com Arduino. O exemplo que apresentamos neste artigo é apenas um exemplo simples para você entender como funciona o uso da EEPROM. Ao dominar a EEPROM, você amplia suas habilidades como desenvolvedor e abre portas para a criação de soluções criativas e inovadoras. Portanto, aproveite essa poderosa funcionalidade para armazenar configurações, registros e dados importantes em seus projetos.