Annuncio pubblicitario
Sapevi che Arduino può archiviare i dati quando è spento? Non lo schizzo archiviato nella memoria flash. Sto parlando di dati variabili nella EEPROM. Unisciti a me mentre ti mostro come leggere e scrivere, e cosa può fare per i tuoi progetti.
Se non conosci Arduino, assicurati di dare un'occhiata al nostro guida per principianti Introduzione ad Arduino: una guida per principiantiArduino è una piattaforma di prototipazione elettronica open source basata su hardware e software flessibili e di facile utilizzo. È destinato ad artisti, designer, hobbisti e chiunque sia interessato a creare oggetti o ambienti interattivi. Leggi di più .
Che cos'è EEPROM?
EEPROM sta per memoria di sola lettura programmabile e cancellabile elettricamente. È un tipo di memoria non volatile. Non preoccuparti se non capisci cosa significa tutto ciò. Memorizza semplicemente i dati anche con l'alimentazione rimossa (a differenza di RAM Una guida rapida e sporca alla RAM: cosa devi sapereLa RAM è un componente cruciale di ogni computer, ma può essere fonte di confusione. Lo suddividiamo in termini facili da comprendere che capirai. Leggi di più , che necessita di elettricità per conservare tutti i dati).
EEPROM è integrata in una miriade di processori, come l'array di gate programmabile sul campo (FPGA) utilizzato nel Matrix Creator Matrix Creator per Raspberry Pi ReviewMatrix Creator è un coltellino svizzero per il tuo Pi, con 15 sensori, una suite di protocolli di comunicazione, un anello di LED RGB, un array di microfoni e molto altro! Leggi di più Pi HAT. Tutti gli Arduinos hanno EEPROM disponibile, ma la capacità varia a seconda del modello. Assicurati di dare un'occhiata al nostro guida all'acquisto Guida all'acquisto di Arduino: quale consiglio dovresti comprare?Ci sono così tanti diversi tipi di schede Arduino là fuori, saresti perdonato per essere confuso. Quale dovresti comprare per il tuo progetto? Aiutiamoci, con questa guida all'acquisto di Arduino! Leggi di più per maggiori dettagli su ogni scheda.
Come funziona?
EEPROM viene cancellato elettricamente e programmato utilizzando Tunnel Fowler-Nordheim. Non è necessario conoscere i dettagli tecnici per poterlo utilizzare. La premessa di base è che l'elettricità viene utilizzata per modificare i dati binari (cos'è il binario Che cos'è il binario? [Spiegazione della tecnologia]Dato che il binario è così assolutamente fondamentale per l'esistenza dei computer, sembra strano che non abbiamo mai affrontato l'argomento prima, quindi oggi ho pensato di dare una breve panoramica di ciò che il binario ... Leggi di più ). Può essere letto, cancellato e riscritto elettronicamente.
Fortunatamente, il Lingua Arduino semplifica la modifica dei dati, il tutto senza aver bisogno di una laurea in informatica.
Aspettativa di vita
Mentre è facile usare EEPROM in Arduino, ha una durata limitata. EEPROM è specificata per gestire 100.000 cicli di lettura / cancellazione. Ciò significa che è possibile scrivere e quindi cancellare / riscrivere i dati 100.000 volte prima che la EEPROM diventi instabile. In realtà, Atmel (i produttori dei semiconduttori Arduino "Chip") possono gestire un numero di cicli superiore o inferiore, a seconda delle tolleranze di ogni singolo processore.
Una volta che una posizione è stata scritta e cancellata troppe volte, può iniziare a diventare inaffidabile. Potrebbe non restituire i dati corretti o restituire il valore da un bit adiacente.
Questo può sembrare un sacco di scritture, ma può essere facile raggiungere questo limite se si legge e si scrive programmaticamente (in a ciclo continuo, per esempio). La lettura dei dati non degrada il silicio, lo fa solo la scrittura. Puoi leggere i dati dalla EEPROM quanto vuoi senza paura!
È importante notare che questo limite si applica a ciascuna posizione di memoria. Il tuo Arduino potrebbe avere 1.000 o più posizioni di memoria disponibili in EEPROM, quindi se scrivi troppe volte in una posizione, è solo quella posizione interessata e non nessuna delle altre. Più avanti parlerò indossare livellamento, che può ridurre l'usura della EEPROM distribuendo i dati in modo uniforme - qualcosa del genere SSD Come stimare la durata residua residua del tuo SSDTutti gli SSD hanno una durata limitata a causa dei cicli di scrittura (anche se questa durata è molto più lunga di quanto si possa pensare). Ecco come puoi stimare quanto sei vicino alla fine. Leggi di più utilizzare.
A cosa serve?
EEPROM è incredibilmente utile per i tuoi progetti Arduino. Poiché ricorda i dati anche quando viene rimossa l'alimentazione, è possibile memorizzare lo stato di Arduino. Forse potresti costruire un torretta laser Pew Pew! Come costruire una torretta laser con un ArduinoSei annoiato? Potrebbe anche costruire una torretta laser. Leggi di più che ricorda la sua posizione o quante "munizioni" restano. Potresti usarlo per controlla i tuoi elettrodomestici Controlla le apparecchiature da un Arduino: l'inizio della domoticaL'ultima volta, ti ho mostrato alcuni modi per rendere i tuoi progetti Arduino controllati dal parlato tramite SiriProxy, OS X elementi parlabili integrati e alcuni script di Automator o persino un hardware di riconoscimento vocale dedicato patata fritta. IO... Leggi di più e registra quante volte il tuo dispositivo è stato attivato.
EEPROM è più adatto per cose come impostazioni o punteggi alti. Se vuoi scrivere regolarmente dati complessi, potresti considerare un scudo ethernet Dai al tuo progetto Arduino il proprio mini-webserver, con una protezione EthernetQualche tempo fa, ti ho mostrato come configurare un sistema di controllo Internet per il tuo Arduino, ma è stato necessario rimanere connessi a un computer tramite USB per mantenere la connessione Internet ... Leggi di più (con slot SD incorporato) o a Raspberry Pi Raspberry Pi: The Unofficial TutorialChe tu sia un attuale proprietario Pi che desideri saperne di più o un potenziale proprietario di questo dispositivo di dimensioni di una carta di credito, questa non è una guida che vuoi perdere. Leggi di più .
Leggere e scrivere
Ora che la teoria è fuori strada, diamo un'occhiata a come leggere e scrivere alcuni dati! Innanzitutto, includi la libreria (questa viene fornita con l'IDE Arduino):
#includere
Ora scrivi alcuni dati:
EEPROM.write (0, 12);
Questo scrive il numero 12 nella posizione EEPROM 0. Ogni scrittura richiede 3,3 millisecondi (Signorina, 1000ms = 1 secondo). Nota come non puoi scrivere lettere (carbonizzare), sono ammessi solo i numeri da zero a 255. Questo è il motivo per cui EEPROM è l'ideale per le impostazioni o i punteggi più alti, ma non è così buono per i nomi o le parole dei giocatori. È possibile memorizzare il testo utilizzando questo metodo (è possibile mappare ogni lettera dell'alfabeto su un numero), tuttavia sarà necessario disporre di più posizioni di memoria, una posizione per ogni lettera.
Ecco come leggi questi dati:
EEPROM.read (0);
Zero è l'indirizzo che hai scritto in precedenza. Se non hai mai scritto un indirizzo in precedenza, verrà restituito il valore massimo (255).
Ci sono alcuni metodi leggermente più utili disponibili. Supponi di voler memorizzare una cifra decimale o una stringa:
EEPROM.put (2, "12.67");
Questo scrive i dati in più posizioni - qualcosa che sarebbe facile da scrivere, ma utile comunque. Dovrai comunque tenere traccia di quante posizioni sono state scritte, in modo da non sovrascrivere accidentalmente i tuoi dati! Devi usare il ottenere metodo per recuperare nuovamente questi dati:
float f = 0.00f; EEPROM.get (2, f);
Il valore di get è memorizzato nel float f variabile. Si noti come questo è inizializzato con 0.00f come valore. Il f informa il compilatore che potresti voler memorizzare un numero elevato in questa variabile, quindi imposta alcune configurazioni aggiuntive durante la compilazione.
Il Documentazione EEPROM sul Sito web Arduino ha molti più esempi.
Indossa il livellamento
Il livellamento dell'usura è una tecnica utilizzata per ridurre l'usura e aumentare la durata della EEPROM. Se stai lavorando solo su un piccolo progetto, potresti non doverti preoccupare di questo.
La cosa più semplice che puoi fare per preservare la vita della EEPROM è limitare le tue scritture in un determinato luogo. Puoi farlo leggendo prima l'indirizzo e se il valore che vuoi scrivere è già presente, non è necessario riscriverlo (ricorda, leggere i dati non fa male). Ecco come lo faresti:
int safeWrite (int data, address) {if (EEPROM.read (address)! = data) {EEPROM.write (address, data); } }
Questo è un po 'di semplice codice, tuttavia funziona solo per numeri interi! Invece di reinventare la ruota, usa la funzione integrata nella libreria EEPROM di Arduino:
EEPROM.update (indirizzo, val);
Questo metodo ha esattamente la stessa firma del Scrivi metodo, sebbene possa ridurre drasticamente il numero di scritture necessarie!
Se devi scrivere molti dati e sei preoccupato di consumare il silicio, puoi tenere traccia di quante scritture fai, anche se questo utilizza più dati. Ecco un'implementazione approssimativa in pseudocodice:
indirizzo var = 0. var writeCount = 0 if (writeCount> 75.000) writeCount = 0 indirizzo + = 1 EEPROM.write (indirizzo, dati)
Dovrai archiviare l'indirizzo e writeCount in EEPROM (e writeCount dovrà essere suddiviso tra le posizioni degli indirizzi). Nella maggior parte dei casi, questo livello di protezione non sarà necessario. Anche gli Arduinos sono così economici, quindi potresti trovare più facile acquistare un backup!
Ora dovresti sapere abbastanza per realizzare dei progetti fantastici. Facci sapere se fai qualcosa di bello! Riesci a riconoscere tutti i dispositivi nelle immagini? Lasciaci un commento qui sotto!
Joe è laureato in Informatica presso l'Università di Lincoln, nel Regno Unito. È uno sviluppatore di software professionale e quando non pilota droni o scrive musica, spesso si trova a scattare foto o a produrre video.