Memória EEPROM Externa – Um Exemplo de Leitura e Escrita de Informações

APLICAÇÃO E FUNCIONAMENTO Para quem trabalha com Arduino e conhece um pouco mais das suas especificações, por exemplo, sabe que modelos de microcontroladores como o Atmega328P possuem uma memória...

APLICAÇÃO E FUNCIONAMENTO

Para quem trabalha com Arduino e conhece um pouco mais das suas especificações, por exemplo, sabe que modelos de microcontroladores como o Atmega328P possuem uma memória EEPROM interna de apenas 1KB e em determinados casos e projetos não é o suficiente para suprir todas as necessidades de armazenamento, sem contar que a memória EEPROM armazena seus dados mesmo quando desligada.

Para os casos nos quais estão instalados alguns sensores que necessitam de leituras constantes como sensores de temperatura e umidade ou qualquer outro, necessitamos de um equipamento que aumente a capacidade de memória do nosso Arduino e possibilitem uma maior armazenagem de dados para que nada seja perdido ou deixado para trás, apresentamos o Módulo de Memória EEPROM:

Podemos classificar o Módulo de Memória EEPROM como um expansor para a memória do Arduino, sendo facilmente adaptado através da sua conexão I2C (SCL, SDA) que permite a utilização de mais de uma memória EEPROM em um mesmo esquema de ligação, bastando configurar o endereço de cada qual.

Podemos elencar aqui duas qualidades exclusivas de uma Memória EEPROM externa, em primeiro lugar a sua capacidade de expandir a memória original e em segundo lugar os benefícios que um módulo externo pode oferecer, por exemplo, proporcionar ao Arduino a capacidade de realizar a leitura externa de dados de configuração e aplicação, podendo se auto resetar e reinicializar-se.

TESTE PRÁTICO

Com o intuito de proporcional um material introdutório ao hobbista e profissional em eletrônica e robótica que deseja expandir as capacidades do seu Arduino e reduzir suas limitações, nosso parceiro do canal WR Kits desenvolveu este vídeo demonstrando as principais características deste módulo de memória EEPROM.

Através do vídeo irá entender melhor o que é este produto e como ele pode ser utilizado, através de um exemplo prático de escrita e leitura de dados na Memória EEPROM você entenderá melhor o funcionamento e a aplicabilidade do referente projeto.

 

PRODUTOS UTILIZADOS NO PROJETO:

 

MONTAGEM FÍSICA (HARDWARE)

A montagem física é simples e rápida, basta conectar os pinos I2C do produto em seus respectivos pinos do Arduino através de uma conexão direta ou através de uma protoboard, no caso de utilizar mais de um equipamento nas portas I2C do seu Arduino, por exemplo.

Ao utilizarmos produtos com comunicação I2C, um fator importante a ser considerado é o endereçamento de cada um dos dispositivos utilizados, devido ao fato de que todos devem ser ligados em um mesmo barramento, no esquema anterior temos o esquema de conexão e agora utilizando os pinos localizados na parte esquerda do produto iremos programar o endereço do mesmo.

Através do sequencial de pinos WP, A0, A1 e A2 do Módulo de Memória EEPROM vamos definir o endereço que posteriormente será utilizado para determinar quem receberá os dados e garantir que os dados não sejam confundidos com dados de algum outro dispositivo utilizado, por exemplo.

Para entendermos melhor a funcionalidade dos pinos WP, A0, A1 e A2 precisamos entender melhor cada posição, quando o jumper está na posição indicada na imagem do produto junto ao esquema de ligação, dizemos que ele está no modo GND, ou no estado de nível 0, porém quando alteramos a posição do jumper e o colocamos um pino a frente ele muda para o modo VCC, ou estado de nível 1.

Levando as informações mencionadas a cima, vamos entender como configurar cada função e cada endereço do nosso Módulo de Memória EEPROM, quando a função WP estiver conectada na sua posição inicial GND, isto permite com que sejam realizadas operação de leitura e escrita, caso alteremos o jumper de posição para VCC, o chip irá permitir somente leitura.

Para configurar o endereço utilizado pelo Módulo, por outro lado, será necessária a configuração de pino por pino do Módulo de Memória EEPROM, para ficar melhor de entender montamos uma tabela para demonstrar como irá funcionar, lembre que está configuração equivale a números binários e por este motivo iniciamos os valores em 1010 seguidos respectivamente dos valores de A2, A1 e A0, observe:

Para entender melhor como funciona este esquema de troca dos jumpers, verifique abaixo um Módulo de Memória EEPROM com Endereço I2C configurado em 0x53 e com WP somente para leitura.

FUNCIONAMENTO DO PROGRAMA (SOFTWARE)

Com um funcionamento extremamente simplificado, este projeto necessita somente de uma biblioteca para o seu funcionamento, biblioteca já disponível na pasta librarie do seu Arduino, basta copiar o código abaixo e colá-lo junto ao Software Arduino para gravar em seu equipamento.

/*

WR Kits e Usina Info

Utilizando EEPROM externa com Arduino

www.wrkits.com.br | www.usinainfo.com.br

Código baseado no artigo: http://www.hobbytronics.co.uk/arduino-external-eeprom

*/


#include <Wire.h>

#define disk1 0x50


void setup(void) {

Serial.begin(9600);

Wire.begin();


unsigned int address = 0;


writeEEPROM(disk1, address, 57);

Serial.print("Eco da EEPROM 24C02 para o endereco 0x00: ");

Serial.print(readEEPROM(disk1, address), DEC);

}


void loop(){}


void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data ) {

Wire.beginTransmission(deviceaddress);

Wire.write((int)(eeaddress >> 8));   // Byte mais significativo

Wire.write((int)(eeaddress & 0xFF)); // Byte menos significativo

Wire.write(data);

Wire.endTransmission();


delay(5);

}


byte readEEPROM(int deviceaddress, unsigned int eeaddress ) {

byte rdata = 0xFF;


Wire.beginTransmission(deviceaddress);

Wire.write((int)(eeaddress >> 8));

Wire.write((int)(eeaddress & 0xFF));

Wire.endTransmission();


Wire.requestFrom(deviceaddress,1);


if (Wire.available()) rdata = Wire.read();


return rdata;

} 

Como já mencionado anteriormente, este código possui somente uma biblioteca, a biblioteca Wire.h  que já vem instalado junto ao programa Arduinoe é utilizada em projetos que trabalham com comunicação I2C.

Através deste código iremos salvar um dado na memória EEPROM e após, realizar a leitura do mesmo através do monitor serial através da seguinte mensagem: “Eco da EEPROM 24C02 para o endereco 0x00:” e após o valor salvo anteriormente.

CONCLUSÃO

Um produto pequeno, simples e de fácil utilização que pode demonstrar extrema funcionalidade para projetistas e hobistas que desejam expandir a capacidade seus equipamentos Arduinos, por exemplo, e armazenar dados em sua memória para que possam ser lidos posteriormente.

Através de um código simplificado, o referente projeto é indicado para quem quer um código base de utilização do Módulo de Memória EEPROM, para quem preferir basta acrescentar as variáveis dos demais equipamentos do seu projeto em nosso código exemplo ou utilizar as variáveis apresentadas em seus próprios códigos.

Agora que já conhecemos este produto e já temos as informações necessárias para desenvolvermos um código novo que satisfaça a necessidade do nosso projeto, está na hora de por os conhecimentos adquiridos sobre o Módulo de Memória EEPROM em prática e não esquecer de comentar as suas ideias e as suas experiências em nossos comentários.

 

Categorias
Arduino
Sem Comentários

Enviar Resposta

*

*

Sobre nós

Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

Sugestões

Artigos Relacionados