Werbung
Wussten Sie, dass der Arduino Daten speichern kann, wenn er ausgeschaltet ist? Nicht die im Flash-Speicher gespeicherte Skizze. Ich spreche von variablen Daten im EEPROM. Begleiten Sie mich, während 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 bitte unsere Ratgeber für Anfänger Erste Schritte mit Arduino: Ein Leitfaden für AnfängerArduino ist eine Open-Source-Plattform für das Prototyping von Elektronik, die auf flexibler, benutzerfreundlicher Hardware und Software basiert. Es richtet sich an Künstler, Designer, Bastler und alle, die interaktive Objekte oder Umgebungen erstellen möchten. Weiterlesen .
Was ist ein EEPROM?
EEPROM steht für elektrisch löschbarer programmierbarer Nur-Lese-Speicher. Es ist eine Art nichtflüchtiger Speicher. Mach dir keine Sorgen, wenn du nicht verstehst, was das alles bedeutet. Es speichert einfach Daten auch bei ausgeschaltetem Strom (im Gegensatz zu RAM Eine schnelle und schmutzige Anleitung zum RAM: Was Sie wissen müssen RAM ist eine wichtige Komponente jedes Computers, kann jedoch verwirrend sein. Wir teilen es in leicht verständliche Begriffe auf, die Sie verstehen werden. Weiterlesen , die Strom benötigt, um Daten zu speichern).
Das EEPROM ist in eine Vielzahl von Prozessoren integriert, wie z. B. das im Feld verwendete FPGA (Field Programmable Gate Array) Matrix Creator Matrix Creator für Raspberry Pi ReviewDer Matrix Creator ist ein Schweizer Taschenmesser für Ihren Pi mit 15 Sensoren, einer Reihe von Kommunikationsprotokollen, einem Ring aus RGB-LEDs, einem Mikrofonarray und vielem mehr! Weiterlesen Pi HUT. Alle Arduinos verfügen über ein EEPROM, die Kapazität variiert jedoch je nach Modell. Schauen Sie sich unsere an Einkaufsführer Arduino Buying Guide: Welches Board solltest du bekommen?Es gibt so viele verschiedene Arten von Arduino-Boards, dass man sich verzeihen kann, verwirrt zu sein. Was solltest du für dein Projekt kaufen? Lassen Sie uns mit diesem Arduino-Einkaufsführer helfen! Weiterlesen Weitere Details zu den einzelnen Boards.
Wie funktioniert es?
Das EEPROM wird elektrisch gelöscht und mit programmiert Fowler-Nordheim-Tunnelbau. 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ärdaten zu ändern (Was ist binär Was ist binär? [Technologie erklärt]Angesichts der Tatsache, dass Binärdateien für die Existenz von Computern so grundlegend sind, erscheint es seltsam, dass wir uns noch nie mit diesem Thema befasst haben. Daher hätte ich heute gedacht, ich würde einen kurzen Überblick darüber geben, welche Binärdateien ... Weiterlesen ). Es kann elektronisch gelesen, gelöscht und neu geschrieben werden.
Zum Glück ist die Arduino Sprache macht es einfach, Daten zu ändern, ohne einen Abschluss in Informatik zu benötigen.
Lebenserwartung
Während es einfach ist, EEPROM im Arduino zu verwenden, hat es eine begrenzte Lebensdauer. Das EEPROM ist für 100.000 Lese- / Löschzyklen ausgelegt. Dies bedeutet, dass Sie Daten 100.000 Mal schreiben und dann löschen / neu schreiben können, bevor das EEPROM instabil wird. In Wirklichkeit, Atmel (die Hersteller des Arduino-Chips) Halbleiter können abhängig von den Toleranzen jedes einzelnen Prozessors eine höhere oder niedrigere Anzahl von Zyklen verarbeiten.
Sobald ein Ort zu oft geschrieben und gelöscht wurde, kann er unzuverlässig werden. Möglicherweise werden nicht die richtigen Daten oder der Wert eines benachbarten Bits zurückgegeben.
Dies mag nach vielen Schreibvorgängen klingen, aber es kann leicht sein, diese Grenze zu erreichen, wenn programmgesteuert gelesen und geschrieben wird (in a Schleife, zum Beispiel). Das Lesen von Daten verschlechtert das Silizium nicht. nur das Schreiben tut es. Sie können Daten aus dem EEPROM so oft lesen, wie Sie möchten, ohne Angst zu haben!
Es ist wichtig zu beachten, dass diese Begrenzung für jeden Speicherort 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, ist nur dieser Speicherort betroffen und keiner der anderen. Später werde ich diskutieren VerschleißnivellierungDies kann den EEPROM-Verschleiß reduzieren, indem Daten gleichmäßig verteilt werden - etwas, das SSDs So schätzen Sie die verbleibende Lebensdauer Ihrer SSDAlle SSDs haben aufgrund von Schreibzyklen eine begrenzte Lebensdauer (obwohl diese Lebensdauer viel länger ist, als Sie vielleicht denken). So können Sie abschätzen, wie nah Sie am Ende sind. Weiterlesen Gebrauch machen von.
Wofür ist es nützlich?
EEPROM ist unglaublich nützlich für Ihre Arduino-Projekte. Da Daten auch dann gespeichert werden, wenn die Stromversorgung unterbrochen wird, können Sie den Status des Arduino speichern. Vielleicht könntest du eine bauen Laserturm Pew Pew! Wie man einen Laserturm mit einem Arduino bautBist du gelangweilt? Könnte auch einen Laserturm bauen. Weiterlesen das erinnert sich an seine Position oder wie viel "Munition" noch übrig ist. Sie könnten es verwenden, um Steuern Sie Ihre Geräte Steuergeräte von einem Arduino aus: Der Beginn der HeimautomationLetztes Mal habe ich Ihnen einige Möglichkeiten gezeigt, wie Sie Ihre Arduino-Projekte sprachgesteuert über SiriProxy, OS X, steuern können Integrierte sprechbare Elemente und einige Automator-Skripte oder sogar eine dedizierte Spracherkennungshardware Chip. ICH... Weiterlesen und protokollieren Sie, wie oft Ihre Appliance aktiviert wurde.
Das EEPROM eignet sich am besten für Einstellungen oder Highscores. Wenn Sie regelmäßig komplexe Daten schreiben möchten, ziehen Sie möglicherweise eine in Betracht Ethernet-Schild Geben Sie Ihrem Arduino-Projekt einen eigenen Mini-Webserver mit Ethernet-SchutzVor einiger Zeit habe ich Ihnen gezeigt, wie Sie ein Internet-Steuerungssystem für Ihr Arduino einrichten - aber es musste über USB mit einem Computer verbunden bleiben, um die Internetverbindung aufrechtzuerhalten ... Weiterlesen (mit eingebautem SD-Steckplatz) oder a Himbeer-Pi Raspberry Pi: Das inoffizielle TutorialEgal, ob Sie ein aktueller Pi-Besitzer sind, der mehr erfahren möchte, oder ein potenzieller Besitzer dieses Geräts in Kreditkartengröße, dies ist kein Leitfaden, den Sie verpassen sollten. Weiterlesen .
Lesen und Schreiben
Nachdem die Theorie aus dem Weg geräumt ist, schauen wir uns an, wie man einige Daten liest und schreibt. Fügen Sie zunächst die Bibliothek hinzu (diese wird mit der Arduino IDE geliefert):
#umfassen
Schreiben Sie nun einige Daten:
EEPROM.write (0, 12);
Dies schreibt die Nummer 12 zum EEPROM-Standort 0. Jeder Schreibvorgang dauert 3,3 Millisekunden (Frau1000 ms = 1 Sekunde). Beachten Sie, dass Sie keine Briefe schreiben können (verkohlen) sind nur die Zahlen von Null bis 255 erlaubt. Aus diesem Grund ist das EEPROM ideal für Einstellungen oder Highscores, aber nicht so gut für Spielernamen oder Wörter. Mit dieser Methode können Sie Text speichern (Sie können jeden Buchstaben des Alphabets einer Zahl zuordnen). Sie benötigen jedoch mehrere Speicherplätze - einen Speicherort für jeden Buchstaben.
So lesen Sie diese Daten:
EEPROM.read (0);
Null ist die Adresse, an die Sie zuvor geschrieben haben. Wenn Sie zuvor noch nicht an eine Adresse geschrieben haben, wird der Maximalwert zurückgegeben (255).
Es gibt einige etwas nützlichere Methoden. Angenommen, Sie möchten eine Dezimalstelle oder Zeichenfolge speichern:
EEPROM.put (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 weiterhin nachverfolgen, an wie viele Speicherorte dies geschrieben wurde, damit Sie Ihre Daten nicht versehentlich überschreiben! Sie müssen die verwenden bekommen Methode zum erneuten Abrufen dieser Daten:
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 Lässt den Compiler wissen, dass Sie möglicherweise eine große Anzahl in dieser Variablen speichern möchten, sodass während der Kompilierung einige zusätzliche Konfigurationen eingerichtet werden.
Das EEPROM-Dokumentation auf der Arduino Website hat viele weitere Beispiele.
Verschleißnivellierung
Die Verschleißnivellierung ist eine Technik, mit der der Verschleiß verringert und die Lebensdauer des EEPROM verlängert wird. Wenn Sie nur an einem kleinen Projekt arbeiten, müssen Sie sich darüber möglicherweise keine Gedanken machen.
Das Einfachste, was Sie tun können, um die Lebensdauer des EEPROM zu erhalten, besteht darin, Ihre Schreibvorgänge auf einen bestimmten Speicherort 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 ihn nicht erneut schreiben (denken Sie daran, dass das Lesen von Daten keinen Schaden anrichtet). So würden Sie das machen:
int safeWrite (int Daten, Adresse) {if (EEPROM.read (Adresse)! = Daten) {EEPROM.write (Adresse, Daten); } }
Das ist ein ziemlich einfaches Stück Code, funktioniert aber nur für ganze Zahlen! Verwenden Sie die in der Arduino EEPROM-Bibliothek integrierte Funktion, anstatt das Rad neu zu erfinden:
EEPROM.update (Adresse, Wert);
Diese Methode hat genau die gleiche Signatur wie die schreiben Methode, obwohl es die Anzahl der benötigten Schreibvorgänge drastisch reduzieren kann!
Wenn Sie viele Daten schreiben müssen und Bedenken haben, dass das Silizium abgenutzt ist, können Sie verfolgen, wie viele Schreibvorgänge Sie ausführen, obwohl hierfür mehr Daten verwendet werden. Hier ist eine grobe Implementierung in Pseudocode:
var address = 0. var writeCount = 0 if (writeCount> 75.000) writeCount = 0 address + = 1 EEPROM.write (Adresse, Daten)
Sie müssen Adresse und writeCount im EEPROM speichern (und writeCount muss auf mehrere Adresspositionen aufgeteilt werden). In den meisten Fällen ist dieses Schutzniveau nicht erforderlich. Arduinos sind auch so billig, dass es möglicherweise einfacher ist, ein Backup zu kaufen!
Sie sollten jetzt genug wissen, um einige großartige Projekte zu machen. Lass es uns wissen, wenn du etwas cooles machst! Können Sie alle Geräte auf den Bildern erkennen? Hinterlasse uns einen Kommentar!
Joe hat einen Abschluss in Informatik von der University of Lincoln, UK. Er ist ein professioneller Softwareentwickler, und wenn er keine Drohnen fliegt oder Musik schreibt, macht er oft Fotos oder produziert Videos.