Introducción a EEPROM en Arduino

Introducción a EEPROM en Arduino

En esta publicación vamos a entender qué es EEPROM, cómo se almacenan los datos en EEPROM integrado en De la placa Arduino Microcontrolador y también prueba prácticamente cómo escribir y leer datos en EEPROM con un par de ejemplos.



Introducción a EEPROM en Arduino

¿Por qué EEPROM?

Antes de preguntarnos qué es EEPROM? Es muy importante saber por qué EEPROM se utiliza para el almacenamiento en primer lugar. Entonces, tenemos una idea clara sobre las EEPROM.

Hay muchos dispositivos de almacenamiento disponibles en estos días, que van desde dispositivos de almacenamiento magnético como discos duros de computadora, grabadoras de casete de la vieja escuela, medios de almacenamiento óptico como CD, DVD, discos Blu-ray y memoria de estado sólido como SSD (unidad de estado sólido) para ordenadores y tarjetas de memoria, etc.





Estos son dispositivos de almacenamiento masivo que pueden almacenar datos como música, videos, documentos, etc. desde unos pocos Kilobytes hasta varios Terabytes. Se trata de una memoria no volátil, lo que significa que los datos se pueden retener incluso después de que se corta la alimentación del medio de almacenamiento.

El dispositivo que ofrece música relajante para los oídos o videos llamativos, como una computadora o un teléfono inteligente, almacena algunos datos críticos como datos de configuración, datos de arranque, contraseñas, datos biométricos, datos de inicio de sesión, etc.



Estos datos mencionados no se pueden almacenar en dispositivos de almacenamiento masivo por razones de seguridad y también estos datos podrían ser modificados por los usuarios sin querer, lo que podría provocar un mal funcionamiento del dispositivo.

Estos datos toman solo unos pocos bytes a unos pocos megabytes, por lo que la conexión de un dispositivo de almacenamiento convencional como un medio magnético u óptico a chips de procesador no es económica ni físicamente viable.

Entonces, estos datos críticos se almacenan en los propios chips de procesamiento.

El Arduino no es diferente de la computadora o los teléfonos inteligentes. Hay varias circunstancias en las que necesitamos almacenar algunos datos críticos que no deben borrarse incluso después de que se corta la energía, por ejemplo, datos de sensores.

A estas alturas, ya tendría una idea de por qué necesitamos EEPROM en microprocesadores y chips de microcontroladores.

¿Qué es EEPROM?

EEPROM significa Memoria de solo lectura programable y borrable eléctricamente. También es una memoria no volátil que se puede leer y escribir. byte sabio.

La lectura y escritura a nivel de bytes la diferencia de otras memorias de semiconductores. Por ejemplo, memoria flash: lectura, escritura y borrado de datos en bloques.

Un bloque puede tener unos pocos cientos o miles de bits, lo que es factible para el almacenamiento masivo, pero no para las operaciones de 'memoria de sólo lectura' en microprocesadores y microcontroladores, que necesitan acceder a datos byte por byte.

En la placa Arduino Uno (ATmega328P) tiene a bordo 1KB o 1024 bytes de EEPROM. Se puede acceder a cada byte individualmente, cada byte tiene una dirección que va de 0 a 1023 (eso es un total de 1024).

La dirección (0-1023) es una ubicación de memoria donde se almacenarán nuestros datos.

En cada dirección puede almacenar datos de 8 bits, dígitos numéricos de 0 a 255. Nuestros datos se almacenan en forma binaria, por lo que si escribimos el número 255 en EEPROM, almacenará el dígito como 11111111 en una dirección y si almacenamos cero, se almacenará como 00000000.

También puede almacenar texto, caracteres especiales, caracteres alfanuméricos, etc. escribiendo el programa apropiado.

Los detalles de la construcción y el funcionamiento no se discuten aquí, lo que podría hacer que este artículo sea extenso y que le dé sueño. Dirígete a YouTube o Google, hay artículos / videos interesantes sobre la construcción y el funcionamiento de EEPORM.

No confunda EEPROM con EPROM:

En pocas palabras, EPROM es una memoria de solo lectura programable eléctricamente, lo que significa que se puede programar (almacenar memoria) eléctricamente, pero no se puede borrar eléctricamente.

Utiliza el brillo brillante de la luz ultravioleta sobre el chip de almacenamiento que borra los datos almacenados. EEPROM vino como reemplazo de EPROM y ahora apenas se usa en ningún dispositivo electrónico.

No confunda la memoria flash con EEPROM:

Una memoria flash es un semiconductor y una memoria no volátil que también se puede borrar y programar eléctricamente; de ​​hecho, la memoria flash se deriva de EEPROM. Pero el acceso a la memoria por bloques o en otras palabras, se accede a la forma de la memoria y su construcción lo diferencia de EEPROM.

Arduino Uno (microcontrolador ATmega328P) también tiene 32 KB de memoria flash para almacenamiento de programas.

Vida útil de EEPROM:

Como cualquier otro medio de almacenamiento electrónico, EEPROM también tiene ciclos finitos de lectura, escritura y borrado. Pero el problema es que tiene una vida útil mínima en comparación con cualquier otro tipo de memoria semiconductora.

En la EEPROM de Arduino, Atmel reclamó alrededor de 100000 (un lakh) de ciclo de escritura por celda. Si la temperatura de su habitación es más baja, mayor será la vida útil de EEPROM.

Tenga en cuenta que la lectura de datos de EEPROM no afecta significativamente la vida útil.

Hay circuitos integrados EEPROM externos que pueden interconectarse con Arduino con facilidad con una capacidad de memoria que varía de 8 KB, 128 KB, 256 KB, etc., con una vida útil de aproximadamente 1 millón de ciclos de escritura por celda.

Con eso concluye la EEPROM, ahora habría obtenido suficiente conocimiento teórico sobre las EEPROM.

En la siguiente sección aprenderemos cómo probar la EEPROM en arduino de manera práctica.

Cómo probar EEPROM en Arduino

Para implementar esto, todo lo que necesita es un cable USB y una placa Arduino Uno, ya está listo para comenzar.

De las explicaciones anteriores entendemos que las EEPROM tienen Dirección donde almacenamos nuestros datos. Podemos almacenar de 0 a 1023 ubicaciones en Arduino Uno. Cada ubicación puede acomodar 8 bits o un byte.

En este ejemplo vamos a almacenar datos en una dirección. Para reducir la complejidad del programa y mantenerlo lo más corto posible, vamos a almacenar un número entero de un solo dígito (0 a 9) en una dirección de 0 a 9.

Código de programa # 1

Ahora, sube el código a Arduino:
|_+_|

PRODUCCIÓN:

Una vez que se cargue el código, abra el monitor en serie.

Le pedirá que ingrese una dirección que va de 0 a 9. De la salida anterior, he ingresado la dirección 3. Por lo tanto, almacenaré un valor entero en la ubicación (dirección) 3.

Ahora, le pedirá que ingrese un valor entero de un solo dígito entre 0 y 9. De la salida anterior, ingresé el valor 5.

Entonces, ahora el valor 5 se almacenará en la ubicación de la dirección 3.

Una vez que ingrese el valor, escribirá el valor en EEPROM.

Mostrará un mensaje de éxito, lo que significa que el valor está almacenado.

Después de un par de segundos leerá el valor que está almacenado en la dirección comentada y mostrará el valor en el monitor serial.

En conclusión, hemos escrito y leído los valores de EEPROM del microcontrolador de Arduino.

Ahora, usaremos la EEPROM para almacenar la contraseña.

Ingresaremos un número de 6 dígitos (ni menos ni más) contraseña, se almacenará en 6 direcciones diferentes (cada dirección para cada dígito) y una dirección adicional para almacenar “1” o “0”.

Una vez que ingrese la contraseña, la dirección adicional almacenará el valor “1” indicando que la contraseña está configurada y el programa le pedirá que ingrese la contraseña para encender el LED.

Si el valor almacenado de la dirección adicional es '0' o cualquier otro valor está presente, le pedirá que cree una nueva contraseña de 6 dígitos.

Mediante el método anterior, el programa puede identificar si ya ha establecido una contraseña o si necesita crear una nueva.

Si la contraseña ingresada es correcta, el LED integrado en el pin # 13 se ilumina, si la contraseña ingresada es incorrecta, el LED no se iluminará y el monitor en serie le indicará que su contraseña es incorrecta.

Código de programa # 2

Ahora sube el código:
|_+_|

PRODUCCIÓN:

Abra el monitor de serie y le pedirá que cree una contraseña de número de 6 dígitos.

Ingrese cualquier contraseña de 6 dígitos, anótela y presione enter. Ahora se ha almacenado la contraseña.

Puede presionar el botón de reinicio o desconectar el cable USB de la PC, lo que hace que el suministro a la placa Arduino se interrumpa.

Ahora, vuelva a conectar el cable USB, abra el monitor en serie, que le pedirá que ingrese la contraseña de 6 dígitos guardada.

Ingrese la contraseña correcta, el LED se iluminará.

Si desea cambiar la contraseña, cambie el dígito del código:

int passExistAdd = 200

La línea anterior es la dirección adicional que discutimos antes. Cambie entre 6 y 1023. Se reserva de 0 a 5 direcciones para almacenar una contraseña de 6 dígitos.

Cambiar esta dirección adicional engañará al programa de que la contraseña aún no se ha creado y le pedirá que cree una nueva contraseña de 6 dígitos.

Si tiene alguna pregunta con respecto a este tutorial de EEPROM en Arduino, exprese en los comentarios, puede recibir una respuesta rápida.




Artículo anterior: Fuente de alimentación de corte por sobrecorriente usando Arduino Siguiente artículo: Coche robot controlado por teléfono móvil con módulo DTMF