Comment utiliser arduino eeprom pour enregistrer les données entre les cycles de puissance
Saviez-vous que l`Arduino peut stocker des données quand il est désactivé? Pas le croquis stocké dans la mémoire flash. Je parle de données variables dans l`EEPROM. Joignez-vous à moi comme je vous montre comment lire et écrire, et ce qu`il peut faire pour vos projets.
Contenu
Si vous êtes nouveau Arduino, assurez-vous de vérifier notre Guide du débutant.Mise en route avec Arduino: Guide du débutantMise en route avec Arduino: Guide du débutantArduino est une plate-forme de prototypage électronique open source basée sur flexible, facile à utiliser du matériel et des logiciels. Il est destiné aux artistes, designers, amateurs, et toute personne intéressée par la création d`objets interactifs ou des environnements.Lire la suite
Qu`est-ce que l`EEPROM?
signifie EEPROM La mémoire morte programmable effaçable électriquement. Il est un type de mémoire non volatile. Ne vous inquiétez pas si vous ne comprenez pas ce que tout cela signifie. Il stocke simplement les données même avec la puissance retirée (à la différence RAM, qui a besoin d`électricité pour conserver les données).
EEPROM est intégré dans une multitude de processeurs, tels que le réseau de portes programmables (FPGA) utilisée dans la matrice Créateur Pi HAT. Tous ont Arduinos EEPROM disponibles, mais la capacité varie selon le modèle. Assurez-vous de jeter un oeil à notre Guide d`achat pour plus de détails sur chaque carte.Matrice Créateur pour Raspberry Pi RevueMatrice Créateur pour Raspberry Pi RevueThe Matrix Creator est un couteau suisse pour votre Pi, avec 15 capteurs, une série de protocoles de communication, un anneau de LED RGB, un réseau de microphones, et plus encore!Lire la suite
Comment ça marche?
EEPROM est effacée électriquement et programmable à l`aide 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 changer les données binaires (ce qui est binaire). Il peut être lu, effacé et réécrit par voie électronique.
Heureusement, la langue Arduino permet de modifier facilement les données, le tout sans avoir besoin d`un diplôme en science informatique.
Espérance de vie
Bien qu`il soit facile à utiliser EEPROM dans l`Arduino, il a une durée de vie limitée. EEPROM est spécifiée pour gérer 100 000 lecture / cycles d`effacement. Cela signifie que vous pouvez écrire et effacer / données ré-écriture 100.000 fois avant l`EEPROM deviendra instable. En réalité, Atmel (les fabricants de l`Arduino « Chip ») des semi-conducteurs peuvent gérer un certain nombre de cycles plus ou moins, en fonction des tolérances de chaque processeur.
Une fois l`emplacement a été écrit et effacé trop de fois il peut commencer à devenir peu fiables. Il ne peut pas renvoyer les données correctes, ou retourner la valeur d`un bit voisin.
Cela peut sembler beaucoup d`écritures, mais il peut être facile d`atteindre cette limite si la lecture et l`écriture par programme (dans un boucle, par exemple). La lecture des données ne dégrade pas le silicium, que l`écriture ne. Vous pouvez lire les données de l`EEPROM autant 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 ou plusieurs emplacements de mémoire disponibles dans l`EEPROM, donc si vous écrivez trop de fois à un seul endroit, il est seulement cet endroit touché, et aucun des autres. Plus tard, je vais discuter nivellement d`usure, qui peut réduire l`usure des EEPROM en distribuant les données régulièrement - quelque chose qui disques SSD se servir de.Comment estimer le restant de votre SSD LifespanComment estimer le restant de votre SSD LifespanTous les disques SSD ont une durée de vie limitée en raison de cycles écriture (bien que cette durée de vie est beaucoup plus longue que vous pourriez penser). Voici comment vous pouvez estimer à quel point vous êtes à la fin.Lire la suite
Qu`est-ce utile pour?
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 un tourelle laser qui se souvient de sa position ou combien « munitions » est restante. Vous pouvez l`utiliser pour contrôler vos appareils, et connectez-vous combien de fois votre appareil a été activé.
EEPROM est le mieux adapté pour des choses comme les réglages ou meilleurs scores. Si vous voulez écrire régulièrement des données complexes, peut-être envisager une bouclier ethernet (Avec haut-SD) ou d`un Tarte aux framboises.Donnez votre projet Arduino son propre mini-serveur Web, avec un bouclier EthernetDonnez votre projet Arduino son propre mini-serveur Web, avec un bouclier EthernetIl y a quelque temps, je vous ai montré comment configurer un système de contrôle d`Internet pour votre Arduino - mais il a dû rester connecté à un ordinateur via USB afin de maintenir la connexion internet ....Lire la suite
Lire et écrire
Maintenant que la théorie est le chemin, nous regardons comment lire et écrire des données! Tout d`abord, inclure la bibliothèque (ce qui est livré avec l`IDE Arduino):
#comprendre lt;EEPROM.hgt;
Maintenant, écrire quelques données:
EEPROM.écrire(0, 12)-
Cela écrit le nombre 12 au lieu de l`EEPROM 0. Chaque écriture prend 3,3 millisecondes (Mme, 1000ms = 1 seconde). Remarquez comment vous ne pouvez pas écrire des lettres (carboniser), Seuls les chiffres de zéro à 255 sont autorisés. Voilà pourquoi l`EEPROM est idéal pour les réglages ou des scores élevés, mais pas si bon pour les noms des joueurs ou des mots. Il est possible de stocker du texte en utilisant cette méthode (vous pouvez mapper chaque lettre de l`alphabet à un certain nombre), mais vous aurez besoin d`avoir plusieurs emplacements de mémoire - un emplacement pour chaque lettre.
Voici comment vous lisez ces données:
EEPROM.lis(0)-
Zéro est l`adresse que vous avez écrit précédemment. Si vous ne l`avez pas écrit à une adresse avant, il retournera la valeur maximale (255).
Video: [Cours Thermodynamique Avancé] 11 Machine à vapeur - cycle de Rankine
Il y a quelques méthodes un peu plus utiles disponibles. Dites que vous vouliez stocker une décimale ou une chaîne:
EEPROM.mettre(2,"12,67")-
Cela écrit les données à plusieurs endroits - ce qui serait facile de vous écrire, mais pas moins pratique. Vous aurez toujours besoin de garder une trace de la façon dont de nombreux endroits cela a écrit, donc vous ne pas écraser accidentellement vos données! Vous devez utiliser la obtenir méthode pour récupérer ces données à nouveau:
float f = 0.00f-EEPROM.obtenir(2, F)-
La valeur de get est stocké dans le flotteur F variable. Remarquez comment cela est initialisé avec 0.00f en tant que valeur. le F permet au compilateur de savoir que vous pouvez stocker un grand nombre dans cette variable, il met en place des configurations supplémentaires lors de la compilation.
La documentation EEPROM sur le site Arduino a beaucoup d`autres exemples.
Nivellement d`usure
Porter le nivellement est une technique utilisée pour réduire l`usure et augmenter la durée de vie de l`EEPROM. Si vous ne travaillez que sur un petit projet, vous ne pouvez pas besoin de s`inquiéter à ce sujet.
La chose la plus simple que vous pouvez faire pour préserver la vie de l`EEPROM est de limiter votre écriture à un endroit particulier. Vous pouvez le faire en lisant l`adresse d`abord, et si la valeur que vous voulez écrire est déjà présent, il n`y a pas besoin de l`écrire à nouveau (souvenez-vous, la lecture des données ne fait pas de mal). Voici comment vous le faire:
Video: Calcul glissement
int safeWrite(données int, adresse) {si(EEPROM.lis(adresse) != Les données) {EEPROM.écrire(adresse, Les données)-}}
C`est un simple morceau de code, mais il ne fonctionne que pour les entiers! Au lieu de réinventer la roue, utilisez la fonction intégrée dans la bibliothèque EEPROM Arduino:
EEPROM.mettre à jour(adresse, val)-
Cette méthode a exactement la même signature que le écrire méthode, même si elle peut réduire considérablement le nombre d`écritures nécessaires!
Si vous avez besoin d`écrire beaucoup de données, et sont préoccupés par usure du silicium, vous pouvez garder une trace de combien vous écrit, bien que cela utilise plus de données. Voici une mise en œuvre difficile en pseudocode:
adresse var = 0var writeCount = 0si(writeCount gt; 75,000)writeCount = 0adresse += 1EEPROM.écrire(adresse, Les données)
Vous devrez stocker l`adresse et writeCount dans l`EEPROM (et writeCount devrez être divisé dans des emplacements d`adresse). La plupart du temps, ce niveau de protection ne sera pas nécessaire. Arduinos sont si pas cher aussi, donc vous pouvez trouver plus facile d`acheter une copie de sauvegarde!
Vous devriez maintenant savoir assez pour faire des projets impressionnants. Faites-nous savoir si vous faites quelque chose de cool! Pouvez-vous reconnaître tous les appareils dans les images? Laissez-nous un commentaire ci-dessous!