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

  • Joseph Goodman
  • 0
  • 1486
  • 191
Anuncio

¿Sabías que Arduino puede almacenar datos cuando está apagado? No es el boceto almacenado en la memoria flash. Estoy hablando de datos variables en la EEPROM. Únase a mí mientras le muestro cómo leerlo y escribirle, y qué 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á destinado a artistas, diseñadores, aficionados y cualquier persona interesada en crear objetos o entornos interactivos.. .

¿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 se preocupe si no entiende lo que eso significa. Simplemente almacena datos incluso con la energía eliminada (a diferencia de la RAM Una guía rápida y sucia de RAM: lo que necesita saber Una guía rápida y sucia de la RAM: lo que necesita saber La RAM es un componente crucial de cada computadora, pero puede ser confuso. Lo desglosamos en términos fáciles de entender que comprenderá, que necesitan electricidad para retener cualquier información).

EEPROM está integrado en una miríada de procesadores, como el arreglo de compuerta programable en campo (FPGA) utilizado en Matrix Creator Matrix Creator para Raspberry Pi Review Matrix Creator para Raspberry Pi Review Matrix Creator es una navaja suiza para su Pi, con ¡15 sensores, un conjunto de protocolos de comunicaciones, un anillo de LED RGB, una matriz de micrófonos y 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 compra Guía de compra de Arduino: ¿Qué placa debe obtener? Guía de compra de Arduino: ¿Qué placa debería obtener? Hay tantos tipos diferentes de placas Arduino por ahí, que te perdonarían por estar confundido. ¿Cuál deberías comprar para tu proyecto? ¡Permítanos ayudarlo con esta guía de compra de Arduino! para más detalles sobre cada tablero.

Como funciona?

EEPROM se borra eléctricamente y se programa usando Túnel Fowler-Nordheim. No necesita 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 binario? ¿Qué es binario? [Explicación de la tecnología] ¿Qué es 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 hemos abordado el tema antes, así que hoy pensé en dar una breve descripción de qué binario ...). Se puede leer, borrar y reescribir electrónicamente.

Afortunadamente, el lenguaje Arduino facilita el cambio de datos, todo sin necesidad de un título en informática.

Esperanza de vida

Si bien es fácil de 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 ser poco confiable. Es posible que no devuelva los datos correctos o que devuelva el valor de un bit vecino.

Esto puede parecer muchas escrituras, pero puede ser fácil alcanzar este límite si lee y escribe mediante programación (en un lazo, por ejemplo). Leer datos no degrada el silicio, solo la escritura hace. Puede leer datos de EEPROM tanto como quiera sin temor!

Es importante tener en cuenta que este límite se aplica a cada ubicación de memoria. Su Arduino puede tener 1,000 o más ubicaciones de memoria disponibles en EEPROM, por lo que si escribe demasiadas veces en una ubicación, solo se verá afectada esa ubicación, y no ninguna de las otras. Más tarde estaré discutiendo desgaste de nivelación, lo que puede reducir el desgaste de la EEPROM mediante la distribución uniforme de datos, algo que los SSD Cómo calcular la vida útil restante de su SSD Cómo calcular la vida útil restante de su SSD Todos los SSD tienen una vida útil limitada debido a los ciclos de escritura (aunque esta vida útil es mucho más larga que la suya) podría pensar). Aquí le mostramos cómo puede estimar qué tan cerca está del final. hacer uso de.

Para qué es útil?

EEPROM es increíblemente útil para sus proyectos Arduino. Como recuerda los datos, incluso cuando se corta la energía, puede almacenar el estado del Arduino. ¡Tal vez podrías construir una torreta láser Pew Pew! ¡Cómo construir una torreta láser con un banco Arduino Pew Pew! Cómo construir una torreta láser con un Arduino ¿Estás aburrido? También podría construir una torreta láser. que recuerda su posición o cuánto “munición” queda Puede usarlo para controlar sus dispositivos Dispositivos de control desde un Arduino: el inicio de la automatización del hogar Dispositivos de control desde un Arduino: el inicio de la automatización del hogar La última vez, le mostré algunas formas de hacer que sus proyectos Arduino se controlen por voz a través de SiriProxy, OS Los elementos hablables incorporados de X y algunas secuencias de comandos de Automator, o incluso un chip de hardware de reconocimiento de voz dedicado. Yo ... y registro cuántas veces se activó su dispositivo.

EEPROM es el más adecuado para cosas como configuraciones o puntajes altos. Si desea escribir regularmente datos complejos, tal vez considere un escudo de Ethernet. Déle a su proyecto Arduino su propio mini servidor web, con un escudo Ethernet. Déle a su proyecto Arduino su propio mini servidor web, con un escudo Ethernet A hace un tiempo, le mostré cómo para configurar un sistema de control de Internet para su Arduino, pero tenía que permanecer conectado a una computadora a través de USB para mantener la conexión a Internet ... (con ranura SD incorporada) o un Raspberry Pi Raspberry Pi: El tutorial no oficial Raspberry Pi: El tutorial no oficial Si usted es un propietario actual de Pi que quiere aprender más o un propietario potencial de este dispositivo del tamaño de una tarjeta de crédito, esta no es una guía que quiera perderse. .

Lee y escribe

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

#incluir 

Ahora escriba algunos datos:

EEPROM.write (0, 12);

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

Así es como lees esos datos:

EEPROM.read (0);

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

Hay algunos métodos ligeramente más útiles disponibles. Digamos que desea 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 usted mismo, pero no obstante útil. ¡Aún necesitará hacer un seguimiento de cuántas ubicaciones ha escrito esto, para que no sobrescriba accidentalmente sus datos! Tienes que usar el obtener Método para recuperar estos datos nuevamente:

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

El valor de get se almacena en el flotante F variable. Observe cómo esto se inicializa con 0.00f como el valor los F le informa al compilador 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 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 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 volver a escribirlo (recuerde, leer datos no hace daño). Así es como lo harías:

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 integrada en la biblioteca Arduino EEPROM:

EEPROM.update (dirección, val);

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

Si necesita escribir muchos datos y le preocupa desgastar el silicio, puede realizar un seguimiento de cuántas escrituras realiza, aunque esto utiliza más datos. Aquí hay una implementación aproximada en pseudocódigo:

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

Deberá almacenar la dirección y writeCount en EEPROM (y writeCount deberá dividirse entre 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 es más fácil comprar una copia de seguridad.!

Ahora debería saber lo suficiente para hacer algunos proyectos increíbles. ¡Haznos saber si haces algo genial! ¿Puedes reconocer todos los dispositivos en las imágenes? Déjanos un comentario abajo!




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.