Usando una memoria EEPROM desde Arduino
Arduino tiene una memoria no volátil de tan sólo 512 bytes (ver referencia), que puede ser insuficiente en algunos casos.
Pero podemos usar una EEPROM externa, en mi caso he usado una EEPROM serie 24LC256 que tiene una capacidad de 256 Kbit (32K x 8 bytes) y un precio de 2.88 euros. Os dejo el enlace a la hoja de especificaciones.
La comunicación entre Arduino y la EEPROM se realiza mediante el bus I2C , que se trata de un bus de comunicaciones serie formado por dos lineas: una para los datos y otra para el reloj.
La librería Wire permite manejar un bus I2C desde nuestro Arduino, y en este artículo del wiki encontramos 4 funciones que usando la librería anterior implementan la lectura/escritura en la EEPROM.
El parámetro deviceaddress al que hacen referencia estas funciones en el caso de esta memoria se trata del 0x50.
No debemos olvidarnos de inicializar la conexión antes de usar estas funciones:
Wire.begin();
En cuanto a las conexiones de los pines: el pin 5 de la EEPROM (SDA) lo conectamos a la entrada analógica 4 de nuestro Arduino, el pin 6 (SCL) a la entrada analógica 5 (observar en la foto que los cables de color naranja se cruzan), el pin 8 a 5V y todos los demás a tierra.
Los pines analógicos 4 y 5 de Arduino son los que usa la librería Wire.
En cuanto al sketch, os pongo el ejemplo con el que lo probé: se trata de escribir una cadena de caracteres cuando enciende nuestro Arduino y de leerla y enviarla al ordenador repetidamente.
El ejemplo lo podéis ver en pastebin para evitar problemas con el tabulado del blog.
Al tratarse de una memoria no volátil, podemos comentar la escritura (línea 59) para comprobar que permanecen los datos guardados con anterioridad.
-
1
Pingback on Mar 18th, 2010 a las 4:27 pm
[…] A few sites i used for reference where: Ardiono Reference Page Ghetto Hax: I2C EEPROM for the Arduino Usando una memoria EEPROM desde Arduino […]
noviembre 19, 2008 at 1:57 am
hola estoy muy interesado de usar un arduino para escribir y leer eeprom.. nesesito mas ayuda me podrias acercar algo mas de informacion sobre conexiones y que tipos de memorias se pueden utilizar y de que capacidad….
noviembre 19, 2008 at 2:15 am
Hola mariano, yo la única que he usado es la de este ejemplo, que es de tipo serie y se usa a través del bus i2c, las hay de varias capacidades: 24X128, 24X256, 24X512. Y siguiendo los enlaces puedes encontrar más información. Suerte :)
diciembre 10, 2008 at 5:08 pm
hola… muchas grasias por contestar…..la verdad es que estoy
verde con el tema i2c… realmente te agradeceria que alcansaras algunos links para aprender mas sobre i2c si no fuera mucha molestia…;)
diciembre 10, 2008 at 5:11 pm
aca encontre algo de sd y mmc con avr pero creo que se podria aplicar con arduino…. miralo y despues decime que te parece…..
http://www.tolaemon.com/otros.htm
abril 26, 2009 at 4:05 am
che ami no me anda alguien podria esplayarse acerca de este tema
junio 28, 2009 at 5:14 pm
a mi aun no me anda…:S
agosto 23, 2009 at 11:46 am
Enhorabuena por tu trabajo.
Por mi parte, estoy teniendo problemas para obtener resultados en el ejemplo que viene en este enlace:
http://www.arduino.cc/playground/Main/I2CPortExpanderAndKeypads
No se el motivo por el cual no leo ni recibo información del PCF8574, no se si es debido a la conexión del /INT que no se cómo manejarlo, por el momento lo pongo con una polarización a positivo, aunque entiendo que debe ser puesto a negativo para que ejerza su trabajo, pero no se con que manejarlo.
Me puedes echar un cable al respecto.
Gracias.