Comment utiliser Arduino EEPROM pour enregistrer des données entre les cycles d'alimentation

Comment utiliser Arduino EEPROM pour enregistrer des données entre les cycles d'alimentation / DIY

Saviez-vous que l'Arduino peut stocker des données lorsqu'il est désactivé? Pas le croquis stocké dans la mémoire flash. Je parle de données variables dans l'EEPROM. Rejoignez-moi pour vous montrer comment lire et écrire, et ce que cela peut faire pour vos projets.

Si vous débutez dans Arduino, consultez notre guide du débutant. Premiers pas avec Arduino: un guide pour débutant Premiers pas avec Arduino: un guide pour débutant Arduino est une plate-forme de prototypage électronique à code source ouvert basée sur un matériel flexible et facile à utiliser. et logiciel. Il est destiné aux artistes, concepteurs, amateurs et à toute personne intéressée par la création d'objets ou d'environnements interactifs. Lire la suite .

Qu'est-ce que l'EEPROM??

EEPROM signifie mémoire morte programmable effaçable électriquement. C'est un type de mémoire non volatile. Ne vous inquiétez pas si vous ne comprenez pas ce que cela signifie. Il stocke simplement des données même lorsque la puissance est retirée (contrairement à la RAM. Un guide rapide et sale de la RAM: Ce que vous devez savoir Un guide rapide et sale de la RAM: Ce que vous devez savoir. La mémoire vive est un élément crucial de tout ordinateur. être déroutant pour comprendre si vous n'êtes pas un gourou de la technologie. Dans cet article, nous le décomposons en termes faciles à comprendre. Lisez-en plus, ce qui nécessite de l'électricité pour conserver les données).

La mémoire EEPROM est intégrée à une myriade de processeurs, tels que le FPGA utilisé dans Matrix Creator Matrix Creator pour Raspberry Pi Review Matrix Creator pour Raspberry Pi Review Le Matrix Creator est un couteau suisse pour votre Pi, avec 15 capteurs, une suite de protocoles de communication, un anneau de LED RVB, un ensemble de microphones, et plus encore! Lire plus Pi HAT. Tous les Arduinos ont une EEPROM disponible, mais la capacité varie selon les modèles. Assurez-vous de consulter notre guide d'achat Guide d'achat Arduino: Quelle planche choisir? Guide d'achat Arduino: Quel conseil choisir? Il y a tellement de types de cartes Arduino que vous ne pouvez pas vous tromper Que devriez-vous acheter pour votre projet? Laissez-nous vous aider avec ce guide d'achat Arduino! Lire plus pour plus de détails sur chaque tableau.

Comment ça marche?

La mémoire EEPROM est effacée et programmée électriquement à Tunnel de Fowler-Nordheim. Vous n'avez pas besoin de connaître les détails techniques pour pouvoir l'utiliser. Le principe de base est que l’électricité est utilisée pour modifier les données binaires (Qu'est-ce que le binaire Qu'est-ce qu'un binaire? [Technologie expliquée] Qu'est-ce que le binaire? [Technologie Expliquée] Étant donné que le binaire est si fondamental pour l'existence des ordinateurs, il semble étrange que Nous n’avons jamais abordé ce sujet auparavant. C’est pourquoi aujourd’hui, je pensais vous donner un bref aperçu de ce que… Read More). Il peut être lu, effacé et réécrit électroniquement.

Heureusement, la langue Arduino facilite la modification des données, sans nécessiter de diplôme en informatique..

Espérance de vie

Bien qu'il soit facile d'utiliser une mémoire EEPROM dans l'Arduino, sa durée de vie est limitée. L'EEPROM est spécifié pour gérer 100 000 cycles de lecture / effacement. Cela signifie que vous pouvez écrire puis effacer / réécrire les données 100 000 fois avant que l'EEPROM ne devienne instable. En réalité, Atmel (les fabricants de l’Arduino) “Puce”) les semi-conducteurs peuvent traiter un nombre de cycles supérieur ou inférieur, en fonction des tolérances de chaque processeur.

Une fois qu'un lieu a été écrit et effacé trop souvent, il peut commencer à devenir peu fiable. Il peut ne pas renvoyer les données correctes ou la valeur d'un bit voisin.

Cela peut sembler beaucoup d’écritures, mais il est facile d’atteindre cette limite si vous lisez et écrivez par programmation (dans un boucle, par exemple). La lecture des données ne dégrade pas le silicium, seul l'écriture fait. Vous pouvez lire les données de l'EEPROM autant de fois que vous le souhaitez sans crainte!

Il est important de noter que cette limite s'applique à chaque emplacement de mémoire. Votre Arduino peut avoir 1 000 emplacements de mémoire ou plus disponibles dans l'EEPROM. Par conséquent, si vous écrivez trop de fois sur un emplacement, seul cet emplacement est concerné, pas les autres. Plus tard, je discuterai porter le nivellement, Comment estimer la durée de vie restante de votre disque SSD Comment estimer la durée de vie restante de votre SSD Tous les SSD ont une durée de vie limitée en raison des cycles d'écriture (bien que cette durée de vie soit beaucoup plus longue que vous). pourrait penser). Voici comment vous pouvez estimer si vous êtes près de la fin. Lire plus use of.

Qu'est-ce que c'est utile pour?

L'EEPROM est incroyablement utile pour vos projets Arduino. Comme il se souvient des données même lorsque l'alimentation est coupée, vous pouvez stocker l'état de l'Arduino. Peut-être que vous pourriez construire une tourelle laser Pew Pew! Comment construire une tourelle laser avec un Pew Pew Arduino! Comment construire une tourelle laser avec un Arduino Vous vous ennuyez? On pourrait aussi bien construire une tourelle laser. Lire la suite qui se souvient de sa position ou combien “munitions” reste. Vous pouvez l'utiliser pour contrôler vos appareils. Appareils de contrôle à partir d'un Arduino: le début de la domotique Appareils de contrôle à partir d'un Arduino: le début de l'automatisation à la maison Les éléments parlables intégrés de X et certains scripts Automator, ou même une puce matérielle de reconnaissance vocale dédiée. Je… Lire la suite et consigner combien de fois votre appareil a été activé.

La mémoire EEPROM convient mieux à des paramètres tels que les paramètres ou les scores élevés. Si vous souhaitez écrire régulièrement des données complexes, envisagez peut-être un bouclier Ethernet. Donnez à votre projet Arduino son propre mini-serveur Web, avec un bouclier Ethernet. Donnez à votre projet Arduino son propre mini-serveur Web, avec un bouclier Ethernet. Il y a quelque temps, je vous ai montré comment pour installer un système de contrôle Internet pour votre Arduino - mais il devait rester connecté à un ordinateur via USB afin de maintenir la connexion Internet… Lire la suite (avec fente pour carte SD intégrée) ou un Raspberry Pi Raspberry Pi: Le tutoriel non officiel Raspberry Pi: Le tutoriel non officiel Que vous soyez un propriétaire actuel de Pi souhaitant en savoir plus ou un propriétaire potentiel de cet appareil au format carte de crédit, vous ne voudrez pas manquer ce guide. Lire la suite .

Lire et écrire

Maintenant que la théorie est dépassée, voyons comment lire et écrire des données! Commencez par inclure la bibliothèque (fournie avec l'IDE Arduino):

#comprendre 

Maintenant, écrivez quelques données:

EEPROM.write (0, 12);

Cela écrit le numéro 12 vers l'emplacement EEPROM 0. Chaque écriture prend 3,3 millisecondes (Mme, 1000ms = 1 seconde). Remarquez comment vous ne pouvez pas écrire de lettres (carboniser), seuls les nombres de zéro à 255 sont autorisés. C'est pourquoi l'EEPROM est idéale pour les réglages ou les scores élevés, mais pas pour les noms de joueurs ou les mots. Il est possible de stocker du texte en utilisant cette méthode (vous pouvez mapper chaque lettre de l'alphabet sur un chiffre), mais vous devrez disposer de plusieurs emplacements de mémoire, un emplacement pour chaque lettre..

Voici comment vous lisez ces données:

EEPROM.lire (0);

Zéro est l'adresse que vous avez écrite précédemment. Si vous n'avez pas écrit à une adresse auparavant, la valeur maximale sera renvoyée (255).

Il existe des méthodes légèrement plus utiles disponibles. Supposons que vous souhaitiez stocker une décimale ou une chaîne:

EEPROM.put (2, "12,67");

Cela permet d'écrire les données sur plusieurs emplacements, ce qui serait facile à écrire vous-même, mais pratique. Vous aurez toujours besoin de savoir combien de localisations ont été écrites pour ne pas écraser accidentellement vos données! Vous devez utiliser le obtenir méthode pour récupérer à nouveau ces données:

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

La valeur de get est stockée dans le float F variable. Notez comment cela est initialisé avec 0.00f comme la valeur. le F indique au compilateur que vous souhaiterez peut-être stocker un grand nombre dans cette variable, afin qu'il configure des configurations supplémentaires lors de la compilation.

La documentation EEPROM sur le site Web Arduino contient de nombreux autres exemples..

Nivellement de l'usure

Le nivellement d'usure est une technique utilisée pour réduire l'usure et augmenter la durée de vie de la mémoire EEPROM. Si vous ne travaillez que sur un petit projet, vous n'avez peut-être pas à vous soucier de cela..

La façon la plus simple de préserver la durée de vie de votre EEPROM consiste à limiter vos écritures à un emplacement particulier. Vous pouvez le faire en lisant d'abord l'adresse, et si la valeur que vous voulez écrire est déjà présente, vous n'avez pas besoin de l'écrire à nouveau (rappelez-vous que la lecture des données ne nuit pas). Voici comment vous feriez cela:

int safeWrite (int données, adresse) if (EEPROM.read (adresse)! = données) EEPROM.write (adresse, données); 

C'est un peu simple code, cependant cela ne fonctionne que pour les entiers! Au lieu de réinventer la roue, utilisez la fonction intégrée à la bibliothèque Arduino EEPROM:

EEPROM.update (address, val);

Cette méthode a exactement la même signature que le écrire méthode, bien qu'elle puisse réduire considérablement le nombre d'écritures nécessaires!

Si vous avez besoin d'écrire beaucoup de données et que vous êtes préoccupé par l'usure du silicium, vous pouvez garder une trace du nombre d'écritures que vous avez effectuées, bien que cela utilise plus de données. Voici une mise en oeuvre approximative en pseudocode:

var address = 0 var writeCount = 0 si (writeCount> 75 000) writeCount = 0 adresse + = 1 EEPROM.write (adresse, données)

Vous aurez besoin de stocker adresse et writeCount dans une EEPROM (et writeCount devra être réparti entre plusieurs adresses). La plupart du temps, ce niveau de protection ne sera pas nécessaire. Les Arduinos sont aussi très bon marché, vous pouvez donc trouver plus facile d’acheter une copie de sauvegarde.!

Vous devriez maintenant en savoir assez pour faire des projets géniaux. Faites-nous savoir si vous faites quelque chose de cool! Pouvez-vous reconnaître tous les appareils sur les images? Laissez-nous un commentaire ci-dessous!

Explorer plus sur: Arduino, Electronics.