Publicité

Saviez-vous que l'Arduino peut stocker des données lorsqu'il est éteint? Pas l'esquisse stockée dans la mémoire flash. Je parle de données variables dans l'EEPROM. Rejoignez-moi pendant que je vous montre comment lire et écrire et ce que cela peut faire pour vos projets.

Si vous êtes nouveau sur Arduino, assurez-vous de consulter notre Guide du débutant Débuter avec Arduino: Guide du débutantArduino est une plate-forme de prototypage électronique open source basée sur du matériel et des logiciels flexibles et faciles à utiliser. Il est destiné aux artistes, designers, 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 les données même sans alimentation (contrairement à RAM Un guide rapide et sale sur la RAM: ce que vous devez savoir

instagram viewer
La RAM est un élément crucial de chaque ordinateur, mais cela peut être déroutant. Nous le décomposons en termes faciles à comprendre, vous comprendrez. Lire la suite , qui a besoin d'électricité pour conserver toutes les données).

Exemple de prise de vue EEPROM

L'EEPROM est intégrée à une myriade de processeurs, tels que la matrice de portes programmable sur site (FPGA) utilisée dans Créateur de matrice Critique de Matrix Creator for Raspberry PiLe Matrix Creator est un couteau suisse pour votre Pi, avec 15 capteurs, une suite de protocoles de communication, un anneau de LED RGB, un réseau de microphones, et plus encore! Lire la suite Pi HAT. Tous les Arduinos ont une EEPROM disponible, mais la capacité varie selon le modèle. Assurez-vous de jeter un œil à notre guide d'achat Guide d'achat Arduino: quelle carte devriez-vous acheter?Il existe tellement de types de cartes Arduino que vous seriez pardonné d'être confus. Que devez-vous acheter pour votre projet? Laissez-nous vous aider, avec ce guide d'achat Arduino! Lire la suite pour plus de détails sur chaque planche.

Comment ça marche?

L'EEPROM est effacé électriquement et programmé en utilisant Tunnellisation Fowler-Nordheim. Vous n'avez pas besoin de connaître les détails techniques pour pouvoir l'utiliser. L'hypothèse de base est que l'électricité est utilisée pour modifier les données binaires (ce qui est binaire Qu'est-ce que le binaire? [La technologie expliquée]Étant donné que le binaire est si absolument fondamental pour l'existence des ordinateurs, il semble étrange que nous n'ayons jamais abordé le sujet auparavant - alors aujourd'hui, je pensais que je donnerais un bref aperçu de ce que le binaire ... Lire la suite ). Il peut être lu, effacé et réécrit électroniquement.

Heureusement, le Langue Arduino facilite la modification des données, sans avoir besoin d'un diplôme en informatique.

Gros plan sur l'EEPROM

Espérance de vie

Bien qu'il soit facile d'utiliser l'EEPROM dans l'Arduino, sa durée de vie est limitée. L'EEPROM est spécifiée pour gérer 100 000 cycles de lecture / effacement. Cela signifie que vous pouvez écrire, puis effacer / réécrire 100 000 fois avant que l'EEPROM ne devienne instable. En réalité, Atmel (les fabricants de la «puce» Arduino) les semi-conducteurs peuvent gérer un nombre de cycles supérieur ou inférieur, selon les tolérances de chaque processeur.

Gros plan sur l'EEPROM

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

Cela peut sembler beaucoup d'écritures, mais il peut être facile d'atteindre cette limite si vous lisez et écrivez par programme (dans un boucle, par exemple). La lecture des données ne dégrade pas le silicium, seule l'écriture fait. 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 1000 emplacements de mémoire ou plus disponibles dans l'EEPROM, donc si vous écrivez trop de fois sur un emplacement, c'est seulement cet emplacement qui est impacté, et aucun des autres. Plus tard, je discuterai porter le nivellement, ce qui peut réduire l'usure des EEPROM en distribuant les données de manière égale - ce qui SSD Comment estimer la durée de vie restante de votre SSDTous 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 ne le pensez). Voici comment vous pouvez estimer à quel point vous êtes proche de la fin. Lire la suite se servir de.

À quoi cela sert-il?

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. Vous pourriez peut-être construire un tourelle laser Pan Pan! Comment construire une tourelle laser avec un ArduinoVous ennuyez-vous? Autant construire une tourelle laser. Lire la suite qui se souvient de sa position ou de la quantité de «munitions» restantes. Vous pouvez l'utiliser pour contrôler vos appareils Contrôler les appareils d'un Arduino: le début de la domotiqueLa dernière fois, je vous ai montré quelques façons de contrôler la parole de vos projets Arduino via SiriProxy, OS X éléments parlables intégrés et certains scripts Automator, ou même un matériel de reconnaissance vocale dédié puce. JE... Lire la suite et enregistrez le nombre de fois où votre appareil a été activé.

L'EEPROM est mieux adaptée à des choses comme 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 blindage EthernetIl y a quelque temps, je vous ai montré comment configurer 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 SD intégrée) ou un Tarte aux framboises Raspberry Pi: le tutoriel non officielQue vous soyez un propriétaire Pi actuel qui veut en savoir plus ou un propriétaire potentiel de cet appareil de la taille d'une carte de crédit, ce n'est pas un guide que vous voulez manquer. Lire la suite .

Gros plan sur l'EEPROM

Lire et écrire

Maintenant que la théorie est terminée, voyons comment lire et écrire des données! Tout d'abord, incluez la bibliothèque (fournie avec l'IDE Arduino):

#comprendre 

Maintenant écrivez quelques données:

EEPROM.write (0, 12);

Cela écrit le nombre 12 vers l'emplacement EEPROM 0. Chaque écriture prend 3,3 millisecondes (Mme, 1000 ms = 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éal pour les réglages ou les scores élevés, mais pas si bon pour les noms ou les mots des joueurs. Il est possible de stocker du texte en utilisant cette méthode (vous pouvez mapper chaque lettre de l'alphabet à un nombre), mais vous devrez avoir plusieurs emplacements de mémoire - un emplacement pour chaque lettre.

Voici comment vous lisez ces données:

EEPROM.read (0);

Zero est l'adresse à laquelle vous avez écrit précédemment. Si vous n'avez pas écrit à une adresse auparavant, il renverra la valeur maximale (255).

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

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

Cela écrit les données sur plusieurs emplacements - quelque chose qui serait facile à écrire vous-même, mais néanmoins pratique. Vous devrez toujours garder une trace du nombre d'emplacements sur lesquels cela a été écrit, afin de ne pas écraser accidentellement vos données! Vous devez utiliser le avoir pour récupérer à nouveau ces données:

flotteur f = 0,00f; EEPROM.get (2, f);

La valeur de get est stockée dans le flotteur F variable. Remarquez comment cela est initialisé avec 0,00f comme valeur. le F permet au compilateur de savoir que vous souhaiterez peut-être stocker un grand nombre dans cette variable, il installe donc des configurations supplémentaires lors de la compilation.

le Documentation EEPROM sur le Site Arduino a beaucoup plus d'exemples.

Nivellement de l'usure

Le nivellement de l'usure 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 n'aurez peut-être pas à vous en préoccuper.

Gros plan sur l'EEPROM

La chose la plus simple que vous puissiez faire pour préserver la durée de vie de l'EEPROM est de 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, il n'est pas nécessaire de la réécrire (rappelez-vous, la lecture des données ne fait pas de mal). Voici comment procéder:

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

C'est assez simple, mais 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 (adresse, val);

Cette méthode a exactement la même signature que le écrire, 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 que vous craignez d'user le silicium, vous pouvez garder une trace du nombre d'écritures que vous effectuez, bien que cela utilise plus de données. Voici une implémentation approximative dans pseudocode:

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

Vous devrez stocker l'adresse et writeCount dans l'EEPROM (et writeCount devra être divisé entre les emplacements d'adresse). La plupart du temps, ce niveau de protection ne sera pas nécessaire. Les Arduinos sont aussi bon marché, vous pouvez donc trouver plus facile d'acheter une sauvegarde!

Vous devriez maintenant en savoir suffisamment pour réaliser des projets impressionnants. Faites-nous savoir si vous faites quelque chose de cool! Pouvez-vous reconnaître tous les appareils sur les photos? Laissez-nous un commentaire ci-dessous!

Joe est diplômé en informatique de l'Université de Lincoln, au Royaume-Uni. C'est un développeur de logiciels professionnel, et lorsqu'il ne pilote pas de drones ou n'écrit pas de musique, il peut souvent être trouvé en train de prendre des photos ou de produire des vidéos.