Kako koristiti Arduino EEPROM za spremanje podataka između ciklusa napajanja

  • Owen Little
  • 0
  • 1435
  • 283
Oglas

Jeste li znali da Arduino može pohraniti podatke kada je isključen? Nije skica pohranjena u flash memoriji. Govorim o promjenjivim podacima u EEPROM-u. Pridružite mi se dok vam pokažem kako čitati i pisati na njemu i što to može učiniti za vaše projekte.

Ako ste novi u Arduino-u, provjerite naš vodič za početnike Upoznavanje s Arduino-om: Vodič za početnike Prvi koraci s Arduinom: Vodič za početnike Arduino je platforma za prototiranje elektronike otvorenog koda koja se temelji na fleksibilnom hardveru koji je jednostavan za korištenje. i softver. Namijenjen je umjetnicima, dizajnerima, hobistima i svima koji su zainteresirani za stvaranje interaktivnih objekata ili okruženja. .

Što je EEPROM?

EEPROM je kratica električno izbrisljiva programirljiva memorija samo za čitanje. To je vrsta nehlapljive memorije. Ne brinite ako ne razumijete što nešto od toga znači. Jednostavno pohranjuje podatke čak i uz uklonjenu struju (za razliku od RAM-a. Brzi i prljavi vodič za RAM: Što trebate znati Brzi i prljavi vodič za RAM: Što trebate znati RAM je bitna komponenta svakog računala, ali može zbunjujuće. Raščlanjujemo ga na jednostavan način shvatljiv, razumjet ćete. kojoj je potrebna električna energija da bi zadržala sve podatke.

EEPROM je ugrađen u bezbroj procesora, kao što je polje programirajući niz vrata (FPGA) koji se koristi u Matrix Creator-u Matrix Creator za Raspberry Pi pregled Matrix Creator za Raspberry Pi pregled Matrix Creator je švicarski nož za vašu piju, sa 15 senzora, paket komunikacijskih protokola, prsten RGB LED-ova, niz mikrofona i još mnogo toga! Pi HAT. Svi Arduinosi imaju na raspolaganju EEPROM, ali kapacitet varira od modela. Obavezno pogledajte naš vodič za kupnju Arduino vodič za kupnju: Koju ploču trebate nabaviti? Vodič za kupnju Arduinoa: Koji odbor trebate dobiti? Postoji toliko mnogo različitih Arduino ploča vani da bi vam bilo oprošteno što ste zbunjeni. Koje biste trebali kupiti za svoj projekt? Pomozite nam s ovim vodičem za kupovinu Arduino-a! za više detalja o svakoj ploči.

Kako radi?

EEPROM se električno briše i programira pomoću Tunel Fowler-Nordheim. Ne morate znati tehničke detalje da biste ih mogli koristiti. Osnovna pretpostavka je da se električna energija koristi za promjenu binarnih podataka (što je binarno? Što je binarno? [Objasnjeno o tehnologiji] Što je binarno? [Objasnjeno o tehnologiji]) S obzirom na to da je binarni sustav tako apsolutno važan za postojanje računala, čini se čudnim da nikad se nismo bavili tom temom - pa bih danas mislio dati kratki pregled onoga što je binarno ...). Može se čitati, brisati i ponovno pisati elektroničkim putem.

Srećom, Arduino jezik olakšava promjenu podataka, bez potrebe za diplomiranjem informatike.

Životni vijek

Iako je EEPROM u Arduinuu jednostavan za korištenje, on ima ograničen život. EEPROM je određen za rukovanje 100 000 ciklusa čitanja / brisanja. To znači da možete 100 000 puta upisati i izbrisati / izbrisati podatke prije nego što EEPROM postane nestabilan. U stvarnosti, Atmel (proizvođači Arduina) “Čip”) poluvodiči mogu podnijeti veći ili manji broj ciklusa, ovisno o tolerancijama svakog procesora.

Jednom kada se lokacija napiše i izbriše previše puta, može postati nepouzdana. Možda neće vratiti točne podatke ili vratiti vrijednost iz susjednog bita.

Ovo možda zvuči kao puno pisanja, ali može se lako dostići ta granica ako se čita i piše programsko (u a petlja, na primjer). Čitanje podataka ne degradira silicij, samo pisanje čini. Možete čitati podatke s EEPROM-a koliko god želite bez straha!

Važno je napomenuti da se ovo ograničenje odnosi na svaku memorijsku lokaciju. Vaš Arduino možda ima 1.000 ili više memorijskih mjesta dostupnih u EEPROM-u, tako da ako previše puta pišete na jednu lokaciju, to utječe samo na tu lokaciju, a ne na bilo koju drugu. Kasnije ću raspravljati izravnavanje trošenja, što može smanjiti trošenje EEPROM-a ravnomjernom raspodjelom podataka - nešto na čemu SSD-ovi Kako procijeniti preostali vijek trajanja vašeg SSD-a Kako procijeniti preostali životni vijek vašeg SSD-a Svi SSD-ovi imaju ograničen vijek trajanja zbog ciklusa pisanja (iako je taj vijek trajanja mnogo duži od vas možda mislite). Evo kako možete procijeniti koliko ste blizu kraju. iskoristiti.

Za što je to korisno?

EEPROM je nevjerojatno koristan za vaše Arduino projekte. Budući da pamti podatke čak i kad nestane struje, mogli biste pohraniti stanje Arduino. Možda biste mogli izgraditi lasersku kupolu Pew Pew! Kako izgraditi lasersku kupolu s klinom Arduino Pew! Kako izgraditi lasersku kupolu s arduinom Da li vam je dosadno? Moglo bi se izgraditi i laserska kupola. koja pamti njegov položaj ili koliko “municija” ostaje. Možete ga koristiti za upravljanje uređajima Arduino upravljanje uređajima: početak upravljanja uređajima za kućnu automatizaciju od Arduinoa: početak kućne automatizacije Posljednji put pokazao sam vam nekoliko načina na koji govor Arduino projekata možete kontrolirati putem SiriProxy, OS X-ovi ugrađeni elementi za razgovor, a neki automatizacijski skripti, ili čak namjenski hardverski čip za prepoznavanje glasa. Ja ... i zabilježite koliko se puta vaš aparat aktivirao.

EEPROM je najprikladniji za stvari poput postavki ili visokih rezultata. Ako želite redovito pisati složene podatke, možda razmislite o ethernet štitu. Dajte svom Arduino projektu vlastiti mini-web-poslužitelj, s ethernet-štitom. Dajte svom projektu Arduino vlastiti mini-web-poslužitelj, s ethernet-štitom prije nekog vremena, pokazao sam vam kako za postavljanje internetskog sustava kontrole za vaš Arduino - ali on je morao biti povezan s računalom putem USB-a da bi održavao internetsku vezu ... (s ugrađenim SD utorom) ili Raspberry Pi Raspberry Pi: Neslužbeni udžbenik Raspberry Pi: Bez obzira na to jeste li trenutni vlasnik Pi-a koji želi naučiti više ili ste potencijalni vlasnik ovog uređaja veličine kreditne kartice, ovo nije vodič koji želite propustiti.. .

Čitati i pisati

Sad kad je teorija na izmaku, pogledajmo kako čitati i zapisati neke podatke! Prvo uključite knjižnicu (ovo dolazi s Arduino IDE):

#include 

Sada napišite neke podatke:

EEPROM.write (0, 12);

Ovo piše broj 12 do lokacije EEPROM 0. Svako pisanje traje 3,3 milisekunde (ms, 1000ms = 1 sekunda). Primjetite kako ne možete pisati pisma (čađ), dopušteni su samo brojevi od nula do 255. Zbog toga je EEPROM idealan za postavke ili visoke rezultate, ali nije toliko dobar za imena ili riječi igrača. Tekst je moguće pohraniti ovom metodom (svako slovo abecede možete preslikati u broj), no morat ćete imati više memorijskih lokacija - po jedno mjesto za svako slovo.

Evo kako čitate te podatke:

EEPROM.read (0);

Nula je adresa o kojoj ste ranije pisali. Ako prethodno niste napisali adresu, vratit će vam maksimalnu vrijednost (255).

Na raspolaganju su neke malo korisnije metode. Recite da želite pohraniti decimalno mjesto ili niz:

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

To zapisuje podatke na više lokacija - nešto što bi bilo lako napisati sami, ali svejedno korisno. I dalje ćete morati pratiti na koliko je lokacija napisano ovo da slučajno ne prepisujete svoje podatke! Morate koristiti dobiti metoda ponovnog dohvaćanja ovih podataka:

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

Vrijednost get se pohranjuje u float f promjenjiva. Primjetite kako se to inicijalizira 0.00f kao vrijednost. f daje sastavljaču da zna da možda želite pohraniti veliki broj u ovu varijablu, pa postavlja neke dodatne konfiguracije tijekom kompilacije.

Dokumentacija EEPROM-a na web stranici Arduino ima puno više primjera.

Nošenje izravnavanje

Izravnavanje trošenja je tehnika koja se koristi za smanjenje trošenja i produljenje vijeka trajanja EEPROM-a. Ako radite samo na malom projektu, možda se neće trebati brinuti zbog toga.

Najjednostavnija stvar koju možete učiniti da sačuvate život EEPROM-a jest ograničiti pisanje na određeno mjesto. To možete učiniti tako da prvo pročitate adresu, a ako je vrijednost koju želite napisati već je prisutna, nema potrebe da je ponovo pišete (zapamtite, čitanje podataka ne šteti). Evo kako biste to učinili:

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

To je prilično jednostavan bitni kod, no radi samo za cijele brojeve! Umjesto ponovnog pronalaska kotača, koristite funkciju ugrađenu u Arduino EEPROM knjižnicu:

Ažuriranje EEPROM-a (adresa, val);

Ova metoda ima točno isti potpis kao i pisati metoda, iako može drastično smanjiti broj potrebnih zapisa!

Ako trebate napisati puno podataka i zabrinuti ste zbog trošenja silicija, možete pratiti koliko napišete, premda za to koristi više podataka. Evo grube implementacije u pseudokodu:

var adresa = 0 var writeCount = 0 ako (writeCount> 75,000) writeCount = 0 adresa + = 1 EEPROM.write (adresa, podaci)

Trebat ćete spremiti adresu i accountCount u EEPROM-u (a writeCount će trebati biti podijeljen na adrese adresa). Većinu vremena ta razina zaštite neće biti potrebna. Arduinovi su također toliko jeftini, pa će vam možda biti lakše kupiti rezervnu kopiju!

Sada biste trebali znati dovoljno da biste napravili neke fantastične projekte. Javite nam ako napravite nešto cool! Možete li prepoznati sve uređaje na slikama? Ostavite nam komentar u nastavku!




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.