Cómo usar Arduino EEPROM para guardar datos entre ciclos de energía

Cómo usar Arduino EEPROM para guardar datos entre ciclos de energía / Bricolaje

¿Sabías que el Arduino puede almacenar datos cuando está apagado? No el boceto almacenado en la memoria flash. Estoy hablando de datos variables en la EEPROM. Únase a mí para mostrarle cómo leer y escribir en él, y lo que puede hacer para sus proyectos..

Si es nuevo en Arduino, asegúrese de consultar nuestra guía para principiantes Introducción a Arduino: una guía para principiantes Introducción a Arduino: una guía para principiantes Arduino es una plataforma de creación de prototipos de electrónica de código abierto basada en hardware flexible y fácil de usar y software. Está dirigido a artistas, diseñadores, aficionados y cualquier persona interesada en crear objetos o entornos interactivos. Lee mas .

¿Qué es la EEPROM??

EEPROM significa Eléctricamente programable y borrable memoria de sólo lectura. Es un tipo de memoria no volátil. No te preocupes si no entiendes lo que eso significa. Simplemente almacena datos incluso con la energía extraída (a diferencia de la RAM: una guía rápida y sucia de la memoria RAM: lo que necesita saber Una guía rápida y sucia de la memoria RAM: lo que necesita saber La memoria RAM es un componente crucial de cada computadora, pero puede sé confuso si no eres un gurú de la tecnología. En este post, lo desglosamos en términos fáciles de entender. Lee más, que necesita electricidad para conservar cualquier información).

EEPROM está integrado en una gran variedad de procesadores, como la matriz de compuerta programable en campo (FPGA) utilizada en el creador de matrices Creador de matrices para la revisión de la frambuesa Pi Creador de la matriz para la revisión de la frambuesa Pi ¡15 sensores, un conjunto de protocolos de comunicaciones, un anillo de LED RGB, una matriz de micrófonos, y más! Leer más Pi HAT. Todos los Arduinos tienen EEPROM disponible, pero la capacidad varía según el modelo. Asegúrese de echar un vistazo a nuestra guía de compras Guía de compras de Arduino: ¿Qué tabla debería obtener? Guía de compra de Arduino: ¿Qué tabla debería obtener? Hay tantos tipos diferentes de tableros de Arduino por ahí que se te perdonará por estar confundido. ¿Qué debes comprar para tu proyecto? Déjanos ayudarte, con esta guía de compras de Arduino! Lea más para más detalles en cada tablero.

Como funciona?

EEPROM se borra eléctricamente y se programa usando Túneles de Fowler-Nordheim. No necesitas conocer los detalles técnicos para poder usarlo. La premisa básica es que la electricidad se usa para cambiar los datos binarios (¿qué es el binario ¿Qué es el binario? [Explicación de la tecnología] ¿Qué es el binario? [Explicación de la tecnología] Dado que el binario es tan fundamental para la existencia de las computadoras, parece extraño que nunca habíamos abordado el tema antes, así que hoy pensé que le daría una breve descripción de qué binario ... Leer más). Puede leerse, borrarse y reescribirse electrónicamente..

Afortunadamente, el lenguaje Arduino facilita el cambio de datos, todo sin necesidad de un título en ciencias de la computación..

Esperanza de vida

Si bien es fácil usar EEPROM en el Arduino, tiene una vida limitada. EEPROM se especifica para manejar 100,000 ciclos de lectura / borrado. Esto significa que puede escribir y luego borrar / reescribir datos 100.000 veces antes de que la EEPROM se vuelva inestable. En realidad, Atmel (los fabricantes del Arduino “Chip”) los semiconductores pueden manejar un número mayor o menor de ciclos, dependiendo de las tolerancias de cada procesador.

Una vez que una ubicación se ha escrito y borrado demasiadas veces, puede comenzar a volverse poco confiable. Puede que no devuelva los datos correctos, o devuelva el valor de un bit vecino.

Esto puede parecer una gran cantidad de escrituras, pero puede ser fácil alcanzar este límite si se lee y escribe mediante programación (en una lazo, por ejemplo). La lectura de datos no degrada el silicio., solo la escritura hace. Puedes leer los datos de EEPROM todo lo que quieras sin miedo!

Es importante tener en cuenta que este límite se aplica a cada ubicación de la memoria. Su Arduino puede tener 1,000 o más ubicaciones de memoria disponibles en la EEPROM, por lo que si escribe demasiadas veces en una ubicación, solo esa ubicación se verá afectada, y no cualquiera de las otras. Más adelante estaré discutiendo nivelación de desgaste, lo que puede reducir el desgaste de la EEPROM al distribuir los datos de manera uniforme - algo que las SSDs Cómo estimar la vida útil restante de su SSD Cómo estimar la vida útil restante de su SSD Todas las SSD tienen una vida útil limitada debido a los ciclos de escritura (aunque esta vida útil es mucho más larga que usted podría pensar). Así es como puedes estimar lo cerca que estás del final. Leer más hacer uso de.

¿Para qué sirve??

EEPROM es increíblemente útil para tus proyectos Arduino. Como recuerda los datos, incluso cuando se quita la alimentación, puede almacenar el estado del Arduino. Tal vez usted podría construir una torreta láser Pew Pew! ¡Cómo construir una torreta láser con un banco Arduino Pew! Cómo construir una torreta láser con un Arduino ¿Estás aburrido? También podría construir una torreta láser. Leer más que recuerda su posición o cuánto. “municiones” se queda Puede usarlo para controlar sus dispositivos. Control de dispositivos desde un Arduino: el inicio de la automatización del hogar. Control de dispositivos desde un Arduino: el inicio de la automatización del hogar. La última vez, le mostré algunas formas de hacer que sus proyectos de Arduino sean controlados por voz mediante SiriProxy, OS. Los elementos hablados incorporados de X y algunos scripts de Automator, o incluso un chip de hardware de reconocimiento de voz dedicado. Yo ... Leer más, y registrar cuántas veces se activó su dispositivo.

EEPROM es más adecuado para cosas como ajustes o puntuaciones altas. Si desea escribir regularmente datos complejos, tal vez considere un escudo Ethernet. Dé a su proyecto Arduino su propio mini servidor web, con un escudo Ethernet. Dé a su proyecto Arduino su propio mini servidor web, con un escudo Ethernet. Hace un tiempo, le mostré cómo para configurar un sistema de control de Internet para su Arduino, pero tenía que mantenerse conectado a una computadora a través de USB para mantener la conexión a Internet ... Leer más (con ranura SD incorporada) o una Raspberry Pi Raspberry Pi: El Tutorial no oficial de Raspberry Pi: el tutorial no oficial Ya sea un propietario actual de Pi que quiera aprender más o un posible propietario de este dispositivo del tamaño de una tarjeta de crédito, esta no es una guía que desee perderse. Lee mas .

Lee y escribe

Ahora que la teoría está descartada, ¡veamos cómo leer y escribir algunos datos! Primero, incluya la biblioteca (esto viene con el IDE de Arduino):

#incluir 

Ahora escribe algunos datos:

EEPROM.write (0, 12);

Esto escribe el número 12 a la ubicación de la EEPROM 0. Cada escritura lleva 3.3 milisegundos (Sra, 1000ms = 1 segundo). Observe cómo no puede escribir letras (carbonizarse), solo se permiten los números de cero a 255. Esta es la razón por la que EEPROM es ideal para ajustes o puntuaciones altas, pero no tan bueno para los nombres de jugadores o palabras. Es posible almacenar texto usando este método (puede asignar cada letra del alfabeto a un número), sin embargo, deberá tener varias ubicaciones de memoria, una ubicación para cada letra.

Así es como lees esos datos:

EEPROM.read (0);

Cero es la dirección que escribiste anteriormente. Si no ha escrito antes en una dirección, devolverá el valor máximo (255).

Hay algunos métodos ligeramente más útiles disponibles. Digamos que querías almacenar un lugar decimal o una cadena:

EEPROM.put (2, "12.67");

Esto escribe los datos en múltiples ubicaciones, algo que sería fácil de escribir por sí mismo, pero útil, no obstante. ¡Aún tendrá que mantener un registro de la cantidad de ubicaciones en las que se ha escrito, para que no sobrescriba accidentalmente sus datos! Tienes que usar el obtener Método para recuperar estos datos de nuevo:

flotador f = 0.00f; EEPROM.get (2, f);

El valor de get se almacena en el flotador. F variable. Observe cómo se inicializa con 0.00f como el valor. los F le permite al compilador saber que es posible que desee almacenar un gran número en esta variable, por lo que establece algunas configuraciones adicionales durante la compilación.

La documentación de la EEPROM en el sitio web de Arduino tiene muchos más ejemplos..

Nivelación de desgaste

La nivelación del desgaste es una técnica utilizada para reducir el desgaste y aumentar la vida útil de la EEPROM. Si solo está trabajando en un proyecto pequeño, es posible que no tenga que preocuparse por esto..

Lo más simple que puede hacer para preservar la vida de EEPROM es limitar sus escrituras a una ubicación en particular. Puede hacer esto leyendo primero la dirección, y si el valor que desea escribir ya está presente, no hay necesidad de escribirla nuevamente (recuerde, leer datos no es perjudicial). Así es como harías eso:

int safeWrite (int data, address) if (EEPROM.read (address)! = data) EEPROM.write (address, data); 

Es un código bastante simple, sin embargo, ¡solo funciona para enteros! En lugar de reinventar la rueda, use la función incorporada en la biblioteca EEPROM de Arduino:

EEPROM.update (dirección, val);

Este método tiene exactamente la misma firma que la escribir método, aunque puede reducir drásticamente el número de escrituras necesarias!

Si necesita escribir una gran cantidad de datos y le preocupa agotar el silicio, puede hacer un seguimiento de la cantidad de escrituras que hace, aunque esto utiliza más datos. Aquí hay una implementación aproximada en pseudocódigo:

var dirección = 0 var writeCount = 0 si (writeCount> 75,000) writeCount = 0 dirección + = 1 EEPROM.write (dirección, datos)

Deberá almacenar la dirección y writeCount en EEPROM (y writeCount deberá dividirse en las ubicaciones de las direcciones). La mayoría de las veces, este nivel de protección no será necesario. Los arduinos también son muy baratos, por lo que puede resultarle más fácil comprar una copia de seguridad.!

Ahora debes saber lo suficiente como para hacer algunos proyectos impresionantes. ¡Avísanos si haces algo genial! ¿Puedes reconocer todos los dispositivos en las imágenes? Déjanos un comentario abajo!

Explorar más sobre: ​​Arduino, Electrónica..