Cum se utilizează Arduino EEPROM pentru a salva date între ciclurile de alimentare

Cum se utilizează Arduino EEPROM pentru a salva date între ciclurile de alimentare / DIY

Știai că Arduino poate stoca date când este oprit? Nu schița stocată în memoria flash. Vorbesc despre date variabile în EEPROM. Alăturați-vă cum îți arăt cum să citești și să-i scriu și ce poate face pentru proiectele tale.

Dacă sunteți nou la Arduino, asigurați-vă că ați verificat ghidul nostru pentru începători Arduino: Un ghid pentru începători Arduino: un ghid pentru începători Arduino este o platformă open-source pentru prototipuri electronice, bazată pe hardware flexibil și ușor de folosit și software-ul. Este destinat artiștilor, designerilor, pasionaților și tuturor celor interesați să creeze obiecte sau medii interactive. Citeste mai mult .

Ce este EEPROM?

EEPROM înseamnă memorie programabilă numai pentru citire, care poate fi șters. Este un tip de memorie nevolatilă. Nu vă faceți griji dacă nu înțelegeți ce înseamnă asta. Este pur și simplu să stocheze datele chiar și cu puterea eliminată (spre deosebire de RAM Un ghid rapid și murdar pentru RAM: Ce trebuie să știți Un ghid rapid și murdar pentru RAM: Ce trebuie să știți RAM este o componentă crucială a fiecărui computer, dar poate fii confuz să înțelegi dacă nu ești un guru tech.În acest post, îl împărțim în termeni ușor de înțeles.Citește mai mult, care are nevoie de electricitate pentru a păstra orice date).

EEPROM este construit într-o multitudine de procesoare, cum ar fi matricea de porți programabile în câmp (FPGA) folosită în Matrix Creator Matrix Creator pentru Raspberry Pi Review Matrix Creator pentru Raspberry Pi Review Creatorul Matrix este un cutit elvetian de armata pentru Pi, cu 15 senzori, o suită de protocoale de comunicații, un inel de LED-uri RGB, o matrice de microfon și multe altele! Read More Pi HAT. Toate modelele Arduinos au EEPROM disponibil, dar capacitatea variază în funcție de model. Asigurați-vă că vă aruncați o privire la ghidul nostru de cumpărare Arduino Ghidul de cumpărare: Care consiliu ar trebui să obțineți? Arduino Ghidul de cumpărare: care ar trebui să obțineți? Există atât de multe feluri de plăci de arduino, acolo vei fi iertat că ești confuz. Care ar trebui să cumpărați pentru proiectul dvs.? Să ne ajute, cu acest ghid de cumpărare Arduino! Citiți mai multe pentru mai multe detalii despre fiecare placă.

Cum functioneazã?

EEPROM este șters și programat electric Tunelul Fowler-Nordheim. Nu aveți nevoie să cunoașteți detaliile tehnice pentru a putea să o utilizați. Premisa de bază este că electricitatea este folosită pentru a schimba datele binare (ceea ce este binar) Ce este binar? [Tehnologie explicată] Ce este binar? [Tehnologie explicată] Având în vedere că binarul este atât de absolut fundamental pentru existența calculatoarelor, pare ciudat că niciodată nu am abordat subiectul anterior - așa că astăzi m-am gândit că voi da o scurtă prezentare a ceea ce este binar ... Citește mai mult). Poate fi citit, șters și redat electronic.

Din fericire, limba Arduino ușurează schimbarea datelor, toate fără a avea nevoie de o diplomă în domeniul informaticii.

Speranța de viață

În timp ce este ușor de utilizat EEPROM în Arduino, are o viață limitată. EEPROM este specificat pentru a manipula 100.000 de cicluri de citire / ștergere. Aceasta înseamnă că puteți scrie și apoi șterge / re-scrie date de 100.000 de ori înainte ca EEPROM să devină instabilă. În realitate, Atmel (producătorii Arduino “Chip”), semiconductorii pot gestiona un număr mai mare sau mai mic de cicluri, în funcție de toleranțele fiecărui procesor.

Odată ce o locație a fost scrisă și șters de prea multe ori, ea poate începe să devină nesigură. Este posibil ca acesta să nu returneze datele corecte sau să returneze valoarea de la un bit vecin.

Acest lucru poate suna ca o mulțime de scrie, dar poate fi ușor să ajungă la această limită dacă citirea și scrierea programabil (în buclă, de exemplu). Citirea datelor nu degradează siliciul, numai scrierea face. Puteți citi datele de pe EEPROM la fel de mult cum vă place fără teamă!

Este important să rețineți că această limită se aplică fiecărei locații de memorie. Arduino-ul dvs. poate avea în EEPROM 1000 sau mai multe locații de memorie, deci dacă scrieți de prea multe ori într-o singură locație, numai acea locație a fost afectată și nu una din celelalte. Mai târziu voi discuta uzură de uzură, care poate reduce uzura EEPROM prin distribuirea uniformă a datelor - ceva ce SSD-uri Cum de estimat durata de viață rămasă a SSD-ului Cum puteți estima durata de viață rămasă a SSD-ului Toate SSD-urile au o durată de viață limitată datorită ciclurilor de scriere (deși această durată de viață este mult mai lungă decât tine ar putea crede). Iată cum puteți estima cât de aproape sunteți până la sfârșit. Citiți mai multe folosiți.

Ce este util pentru?

EEPROM este incredibil de util pentru proiectele dvs. Arduino. Pe măsură ce își amintește datele chiar și atunci când puterea este îndepărtată, puteți stoca starea Arduino. Poate ai putea construi un tir cu laser Pew Pew! Cum se construiește o turelă laser cu un arduino Pew Pew! Cum se construiește o turelă laser cu un arduino Sunteți plictisit? Ar putea construi și o turelă cu laser. Citește mai mult care își amintește poziția sau cât de mult “muniții” rămâne. Ați putea să-l utilizați pentru a vă controla aparatele. Aparatura de control de la un Arduino: Startul aparatelor de control de automatizare la domiciliu de la un Arduino: Startul automatizării acasă Ultima dată, v-am arătat câteva moduri de a vă face proiectele Arduino vorbite controlate prin SiriProxy, OS Elemente ale lui X încorporate și unele scripturi automate sau chiar un cip hardware dedicat recunoașterii vocii. Am ... Citiți mai multe și înregistrați de câte ori a fost activat aparatul.

EEPROM este cel mai potrivit pentru lucruri precum setări sau scoruri mari. Dacă doriți să scrieți în mod regulat date complexe, luați în considerare un ecran Ethernet Dați-vă Proiectului Arduino propriul Mini-Webserver, cu un scut Ethernet Dați-vă Proiectului Arduino propriul Mini-Webserver, cu un ecran Ethernet Cu ceva timp în urmă, pentru a configura un sistem de control al internetului pentru Arduino - dar a trebuit să rămână conectat la un computer prin USB pentru a menține conexiunea la internet ... Read More (cu slot SD încorporat) sau o Zmeură Pi Zmeură Pi: Tutorial neoficial Zmeura Pi: Tutorialul Neoficial Indiferent daca sunteti un proprietar actual de Pi care doreste sa invete mai mult sau un potential proprietar al acestui dispozitiv de dimensiune a cartilor de credit, acesta nu este un ghid pe care doriti sa il doriti. Citeste mai mult .

Citeste si scrie

Acum, că teoria este pe drum, să ne uităm la modul de citire și scriere a unor date! Mai întâi, includeți biblioteca (aceasta vine cu ID-ul Arduino):

#include 

Acum scrieți câteva date:

EEPROM.write (0, 12);

Aceasta scrie numărul 12 la locația EEPROM 0. Fiecare scriere durează 3,3 milisecunde (Domnișoară, 1000ms = 1 secundă). Observați cum nu puteți scrie scrisori (carboniza), numai numerele de la zero la 255 sunt permise. Acesta este motivul pentru EEPROM este ideal pentru setări sau scoruri mari, dar nu atât de bun pentru numele jucătorilor sau cuvintele. Este posibil să stocați text utilizând această metodă (ați putea hărți fiecare literă a alfabetului la un număr), totuși va trebui să aveți mai multe locații de memorie - o locație pentru fiecare literă.

Iată cum citiți aceste date:

EEPROM.read (0);

Zero este adresa pe care ați scris-o anterior. Dacă nu ați scris anterior la o adresă, acesta va returna valoarea maximă (255).

Există câteva metode puțin mai utile disponibile. Spuneți că doriți să stocați un zecimal sau șir:

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

Acest lucru scrie datele în mai multe locații - ceva care ar fi ușor de scris, dar la îndemână. Încă veți avea nevoie să urmăriți numărul de locații la care a fost scris acest lucru, astfel încât să nu înlocuiți accidental datele dvs.! Trebuie să utilizați obține pentru a recupera din nou aceste date:

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

Valoarea obținută este stocată în float f variabil. Observați cum este inițializată aceasta 0.00f ca valoare. f permite compilatorului să știe că este posibil să doriți să stocați un număr mare în această variabilă, deci să configurați unele configurații suplimentare în timpul compilării.

Documentația EEPROM de pe site-ul web Arduino are mult mai multe exemple.

Purtați nivelarea

Wear leveling este o tehnică utilizată pentru a reduce uzura și a crește durata de viață a EEPROM-ului. Dacă lucrați doar la un mic proiect, este posibil să nu vă faceți griji în legătură cu acest lucru.

Cel mai simplu lucru pe care îl puteți face pentru a vă păstra viața EEPROM este să vă limitați scrierea la o anumită locație. Puteți face acest lucru citiți mai întâi adresa și dacă valoarea pe care doriți să o scrieți este deja prezentă, nu este nevoie să o scrieți din nou (rețineți că citirea datelor nu face rău). Iată cum ați face acest lucru:

int safeWrite (date int, adresa) if (EEPROM.read (adresa)! = date) EEPROM.write (adresa, date); 

Acesta este un simplu bit de cod, dar funcționează numai pentru numere întregi! În loc să reinventați roata, utilizați funcția încorporată în biblioteca Arduino EEPROM:

EEPROM.update (adresa, val);

Această metodă are exact aceeași semnătură ca și scrie , dar poate reduce drastic numărul de scrieri necesare!

Dacă aveți nevoie să scrieți o mulțime de date și sunteți preocupat de uzarea siliciului, puteți urmări cât de multe scriu, deși acest lucru utilizează mai multe date. Iată o implementare brută în pseudocod:

var adresa = 0 var writeCount = 0 dacă (writeCount> 75.000) writeCount = 0 adresa + = 1 EEPROM.write (adresa, date)

Veți avea nevoie să stocați adresa și writeCount în EEPROM (și writeCount va trebui să fie împărțită între locațiile de adrese). În cea mai mare parte a timpului, acest nivel de protecție nu va fi necesar. Arduinos sunt atât de ieftine, de asemenea, astfel încât puteți găsi mai ușor să cumpărați o copie de rezervă!

Acum trebuie să știți suficient pentru a face niște proiecte minunate. Spuneți-ne dacă faceți ceva rău! Puteți recunoaște toate dispozitivele din imagini? Lăsați-ne un comentariu mai jos!

Aflați mai multe despre: Arduino, Electronics.