So verwenden Sie Arduino EEPROM zum Speichern von Daten zwischen Stromkreisläufen

So verwenden Sie Arduino EEPROM zum Speichern von Daten zwischen Stromkreisläufen / DIY

Wussten Sie, dass das Arduino Daten speichern kann, wenn es deaktiviert ist? Nicht die im Flash-Speicher gespeicherte Skizze. Ich spreche von variablen Daten im EEPROM. Schließen Sie sich mir an, wenn ich Ihnen zeige, wie man es liest und schreibt und was es für Ihre Projekte tun kann.

Wenn Sie neu bei Arduino sind, lesen Sie unseren Anfängerleitfaden. Erste Schritte mit Arduino: Anfängerhandbuch Erste Schritte mit Arduino: Anfängerhandbuch Arduino ist eine Open-Source-Plattform für Prototyping-Elektronik, die auf flexibler, benutzerfreundlicher Hardware basiert und Software. Es ist für Künstler, Designer, Hobbyisten und alle gedacht, die interaktive Objekte oder Umgebungen erstellen möchten. Weiterlesen .

Was ist EEPROM??

EEPROM steht für elektrisch löschbarer programmierbarer Nur-Lese-Speicher. Es ist eine Art nichtflüchtiger Speicher. Machen Sie sich keine Sorgen, wenn Sie nicht verstehen, was dies bedeutet. Es speichert einfach Daten, selbst wenn der Strom abgeschaltet ist (im Gegensatz zu RAM. Eine schnelle Anleitung zum RAM: Was Sie wissen müssen. Eine schnelle Anleitung zum RAM: Was Sie wissen müssen. RAM ist ein wichtiger Bestandteil jedes Computers, kann dies jedoch sei verwirrend zu verstehen, wenn du kein Tech-Guru bist. In diesem Beitrag zerlegen wir es in leicht verständlichen Begriffen. Lesen Sie mehr, was Strom benötigt, um Daten zu speichern..

EEPROM ist in eine Vielzahl von Prozessoren eingebaut, wie beispielsweise das feldprogrammierbare Gate-Array (FPGA), das in Matrix Creator verwendet wird. Matrix Creator für Raspberry Pi Bewertung Matrix Creator für Raspberry Pi Bewertung Der Matrix Creator ist ein Schweizer Armeemesser für Ihren Pi 15 Sensoren, eine Reihe von Kommunikationsprotokollen, ein Ring mit RGB-LEDs, ein Mikrofonarray und mehr! Lesen Sie mehr Pi HAT. Alle Arduinos verfügen über EEPROM, die Kapazität variiert jedoch je nach Modell. Vergewissern Sie sich, dass Sie einen Blick auf unseren Einkaufsführer Arduino Buying Guide: Welches Board sollten Sie bekommen? Arduino Buying Guide: Welches Board sollten Sie bekommen? Es gibt so viele verschiedene Arten von Arduino-Boards, dass Sie sich verwechseln könnten. Was solltest du für dein Projekt kaufen? Lassen Sie uns mit diesem Arduino Einkaufsführer helfen! Weitere Informationen zu jedem Board finden Sie unter Weitere Informationen.

Wie funktioniert es?

Das EEPROM wird elektrisch gelöscht und mit programmiert Fowler-Nordheim-Tunneln. Sie müssen die technischen Details nicht kennen, um sie verwenden zu können. Die Grundvoraussetzung ist, dass Elektrizität verwendet wird, um die binären Daten zu ändern (was binär ist Was ist binär? [Technologie erklärt] Was ist binär? [Technologie erklärt). Da Technologie binär so absolut grundlegend für die Existenz von Computern ist, scheint es seltsam Wir haben uns bisher noch nie mit dem Thema beschäftigt - deshalb dachte ich heute, ich würde einen kurzen Überblick darüber geben, welche binären… Weiterlesen). Es kann elektronisch gelesen, gelöscht und neu geschrieben werden.

Glücklicherweise erleichtert die Arduino-Sprache das Ändern von Daten, ohne dass ein Abschluss in Informatik erforderlich ist.

Lebenserwartung

EEPROM ist im Arduino zwar einfach zu verwenden, seine Lebensdauer ist jedoch begrenzt. Das EEPROM ist für 100.000 Lese- / Löschzyklen festgelegt. Dies bedeutet, dass Sie Daten 100.000 Mal schreiben und dann löschen / erneut schreiben können, bevor das EEPROM instabil wird. In Wirklichkeit Atmel (die Hersteller des Arduino) “Chip”) Halbleiter können abhängig von den Toleranzen jedes Prozessors eine höhere oder niedrigere Anzahl von Zyklen bewältigen.

Wenn ein Ort zu oft geschrieben und gelöscht wurde, kann er unzuverlässig werden. Möglicherweise werden nicht die korrekten Daten oder der Wert eines benachbarten Bits zurückgegeben.

Das hört sich zwar nach vielen Schreibvorgängen an, kann aber durch programmgesteuertes Lesen und Schreiben (in a Schleife, zum Beispiel). Das Lesen von Daten beeinträchtigt das Silizium nicht, nur schreiben tut. Sie können Daten aus dem EEPROM beliebig oft ohne Angst lesen!

Es ist wichtig zu beachten, dass diese Beschränkung für jeden Speicherplatz gilt. Ihr Arduino verfügt möglicherweise über 1.000 oder mehr Speicherplätze im EEPROM. Wenn Sie also zu oft an einen Speicherort schreiben, hat dies nur Auswirkungen auf diesen Speicherort und nicht auf die anderen. Später werde ich diskutieren Verschleißnivellierung, Durch die gleichmäßige Verteilung der Daten kann der EEPROM-Verschleiß verringert werden. Dies ist für SSDs die geschätzte verbleibende Lebensdauer Ihrer SSD. die verbleibende Lebensdauer Ihrer SSD. Alle SSDs haben aufgrund der Schreibzyklen eine begrenzte Lebensdauer (obwohl diese Lebensdauer viel länger ist als Sie.) könnte denken). So können Sie abschätzen, wie nahe Sie am Ende sind. Lesen Sie mehr.

Wofür ist es nützlich??

EEPROM ist für Ihre Arduino-Projekte unglaublich nützlich. Da die Daten auch dann gespeichert werden, wenn die Stromversorgung unterbrochen wird, können Sie den Status des Arduino speichern. Vielleicht könnten Sie einen Laserrevolver Pew Pew bauen! Wie baut man einen Laser Turret mit einer Arduino Pew Pew! Wie man einen Laser Turret mit einem Arduino baut Sind Sie gelangweilt? Könnte auch einen Laserrevolver bauen. Lesen Sie mehr, das sich an seine Position erinnert oder wie viel “Munition” bleibt übrig. Sie könnten es verwenden, um Ihre Appliances zu steuern. Steuergeräte von einem Arduino aus steuern: Der Beginn der Hausautomation Steuergeräte von einem Arduino: Der Beginn der Hausautomation Beim letzten Mal habe ich Ihnen einige Möglichkeiten gezeigt, wie Sie Ihre Arduino-Projekte sprachgesteuert über SiriProxy, OS steuern lassen Xs integrierte sprechbare Elemente und einige Automator-Skripts oder sogar ein dedizierter Hardware-Chip für die Spracherkennung. Ich… Lesen Sie mehr und protokollieren Sie, wie oft Ihre Appliance aktiviert wurde.

EEPROM eignet sich am besten für Einstellungen oder Highscores. Wenn Sie regelmäßig komplexe Daten schreiben möchten, sollten Sie ein Ethernet-Schild in Betracht ziehen. Geben Sie Ihrem Arduino-Projekt einen eigenen Mini-Webserver, mit einem Ethernet-Schild. Geben Sie Ihrem Arduino-Projekt einen eigenen Mini-Webserver, mit einem Ethernet-Schild. Dabei habe ich Ihnen gezeigt, wie Um ein Internet-Steuerungssystem für Ihr Arduino einzurichten - es musste jedoch über USB mit einem Computer verbunden bleiben, um die Internetverbindung aufrecht zu erhalten… Lesen Sie weiter (mit eingebautem SD-Slot) oder ein Raspberry Pi Raspberry Pi: Das inoffizielle Tutorial Raspberry Pi: Das inoffizielle Lernprogramm Egal, ob Sie ein aktueller Besitzer eines Pi sind, der mehr darüber erfahren möchte, oder ein potenzieller Besitzer dieses Geräts in Kreditkartengröße - dies ist kein Leitfaden, den Sie vermissen möchten. Weiterlesen .

Lesen und Schreiben

Nun, da die Theorie nicht stimmt, schauen wir uns an, wie man Daten liest und schreibt! Fügen Sie zunächst die Bibliothek hinzu (diese wird mit der Arduino IDE geliefert):

#umfassen 

Nun schreibe ein paar Daten:

EEPROM-Schreibvorgang (0, 12);

Dies schreibt die Nummer 12 zum EEPROM-Speicherort 0. Jeder Schreibvorgang dauert 3,3 Millisekunden (Frau, 1000 ms = 1 Sekunde). Beachten Sie, dass Sie keine Buchstaben schreiben können (verkohlen) sind nur die Zahlen von Null bis 255 zulässig. Aus diesem Grund eignet sich das EEPROM ideal für Einstellungen oder Highscores, aber nicht so gut für Namen oder Wörter von Spielern. Es ist möglich, Text mit dieser Methode zu speichern (Sie könnten jeden Buchstaben des Alphabets einer Zahl zuordnen), es müssen jedoch mehrere Speicherorte vorhanden sein - ein Ort für jeden Buchstaben.

So lesen Sie diese Daten:

EEPROM.read (0);

Null ist die Adresse, an die Sie zuvor geschrieben haben. Wenn Sie noch nicht an eine Adresse geschrieben haben, wird der Maximalwert (255).

Es gibt einige nützliche Methoden. Angenommen, Sie möchten eine Dezimalstelle oder eine Zeichenfolge speichern:

EEPROM-Ausgang (2, "12,67");

Dadurch werden die Daten an mehrere Speicherorte geschrieben - etwas, das sich leicht selbst schreiben lässt, aber dennoch praktisch ist. Sie müssen immer noch nachverfolgen, an wie vielen Stellen dies geschrieben wurde, damit Sie nicht versehentlich Ihre Daten überschreiben! Sie müssen das verwenden erhalten Methode, um diese Daten erneut abzurufen:

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

Der Wert von get wird im Float gespeichert f Variable. Beachten Sie, wie dies mit initialisiert wird 0,00f als Wert. Das f teilt dem Compiler mit, dass Sie möglicherweise eine große Anzahl in dieser Variablen speichern möchten, sodass er einige zusätzliche Konfigurationen während der Kompilierung einrichtet.

Die EEPROM-Dokumentation auf der Arduino-Website enthält viele weitere Beispiele.

Wear Leveling

Wear Leveling ist eine Technik, mit der der Verschleiß reduziert und die Lebensdauer des EEPROM erhöht wird. Wenn Sie nur an einem kleinen Projekt arbeiten, müssen Sie sich nicht darum kümmern.

Die einfachste Möglichkeit, das EEPROM-Leben zu erhalten, besteht darin, Ihre Schreibvorgänge auf einen bestimmten Ort zu beschränken. Sie können dies tun, indem Sie zuerst die Adresse lesen. Wenn der Wert, den Sie schreiben möchten, bereits vorhanden ist, müssen Sie sie nicht erneut schreiben (denken Sie daran, das Lesen von Daten schadet nicht). So würden Sie das machen:

int safeWrite (int Daten, Adresse) if (EEPROM.read (Adresse)! = Daten) EEPROM.write (Adresse, Daten); 

Das ist ein recht einfacher Code, funktioniert aber nur für ganze Zahlen! Anstatt das Rad neu zu erfinden, verwenden Sie die in der Arduino EEPROM-Bibliothek integrierte Funktion:

EEPROM.update (Adresse, Wert);

Diese Methode hat genau dieselbe Signatur wie die schreiben Diese Methode kann jedoch die Anzahl der erforderlichen Schreibvorgänge drastisch reduzieren!

Wenn Sie viele Daten schreiben müssen und sich Sorgen machen, dass das Silikon ausgetragen wird, können Sie nachverfolgen, wie viele Schreibvorgänge Sie ausführen, obwohl dies mehr Daten erfordert. Hier ist eine grobe Implementierung im Pseudocode:

var Adresse = 0 var writeCount = 0 wenn (writeCount> 75.000) writeCount = 0 Adresse + = 1 EEPROM.write (Adresse, Daten)

Sie müssen Adresse und WriteCount im EEPROM speichern (und WriteCount muss auf die Adressstellen aufgeteilt werden). In der Mehrzahl der Fälle ist dieses Schutzniveau nicht erforderlich. Arduinos sind auch so günstig, dass Sie den Kauf eines Backups möglicherweise einfacher finden!

Sie sollten jetzt genug wissen, um einige großartige Projekte zu realisieren. Lass es uns wissen, wenn du etwas cooles machst! Können Sie alle Geräte in den Bildern erkennen? Hinterlassen Sie uns einen Kommentar!

Mehr erfahren über: Arduino, Elektronik.