Jak používat Arduino EEPROM k ukládání dat mezi výkonovými cykly

  • Joseph Goodman
  • 32
  • 1944
  • 212
reklama

Věděli jste, že Arduino může ukládat data, když je vypnutá? Ne skica uložená v paměti Flash. Mluvím o proměnných datech v EEPROM. Připojte se ke mně, když vám ukážu, jak číst a psát, a co to může udělat pro vaše projekty.

Pokud jste pro Arduino nováčkem, podívejte se na naši příručku pro začátečníky Začínáme s Arduino: Průvodce pro začátečníky Začínáme s Arduino: Průvodce pro začátečníky Arduino je platforma pro prototypování elektroniky s otevřeným zdrojovým kódem založená na flexibilním a snadno použitelném hardwaru. a software. Je určen pro umělce, designéry, fandy a kohokoli, kdo má zájem o vytváření interaktivních objektů nebo prostředí. .

Co je EEPROM?

EEPROM znamená elektricky mazatelná programovatelná paměť jen pro čtení. Je to typ trvalé paměti. Nebojte se, pokud nerozumíte, co to znamená. Jednoduše ukládá data i s odebraným napájením (na rozdíl od paměti RAM Rychlý a špinavý průvodce po paměti RAM: Co potřebujete vědět Rychlý a špinavý průvodce po paměti RAM: Co potřebujete vědět, RAM je klíčová součást každého počítače, ale může být matoucí. Rozdělujeme to snadno pochopitelným způsobem, kterému rozumíte., který potřebuje elektřinu k uchování jakýchkoli dat).

EEPROM je zabudován do nesčetných procesorů, jako je pole programovatelné hradlové pole (FPGA) používané v Matrix Creator Matrix Creator pro Raspberry Pi Recenze Matrix Creator pro Raspberry Pi Recenze Matrix Creator je švýcarský armádní nůž pro váš Pi, s 15 senzorů, sada komunikačních protokolů, prsten RGB LED, mikrofonní pole a další! Pi HAT. Všechny Arduiny mají EEPROM k dispozici, ale kapacita se liší podle modelu. Nezapomeňte se podívat na našeho průvodce nákupem Průvodce nákupem Arduino: Kterou desku byste měli získat? Průvodce nákupem Arduina: Kterou desku byste měli získat? Je tam tolik různých druhů desek Arduino, bylo by vám odpuštěno, že jste zmatení. Které byste si měli koupit pro svůj projekt? Pomozte nám s tímto nákupním průvodcem Arduino! pro více informací o každé desce.

Jak to funguje?

EEPROM je elektricky vymazán a programován pomocí Tunel Fowler-Nordheim. Abyste je mohli používat, nemusíte znát technické podrobnosti. Základní předpoklad je, že elektřina se používá ke změně binárních dat (co je binární Co je binární? [Technologie vysvětleno] Co je binární? [Technologie vysvětleno] Vzhledem k tomu, že binární je tak absolutně zásadní pro existenci počítačů, zdá se zvláštní, že nikdy jsme se tímto tématem nezabývali - tak jsem si dnes myslel, že dám krátký přehled toho, co binární…). Lze jej číst, mazat a přepisovat elektronicky.

Naštěstí Arduino Language usnadňuje výměnu dat, to vše bez nutnosti studia v oboru informatiky.

Délka života

I když je snadné používat EEPROM v Arduinu, má omezenou životnost. EEPROM je určen pro zpracování 100 000 cyklů čtení / mazání. To znamená, že můžete zapsat a poté vymazat / znovu zapsat data 100 000krát, než bude EEPROM nestabilní. Ve skutečnosti Atmel (výrobci Arduina) “Čip”) polovodiče mohou zvládnout vyšší nebo nižší počet cyklů v závislosti na tolerancích každého procesoru.

Jakmile je místo již mnohokrát napsáno a vymazáno, může začít být nespolehlivé. Nemusí vrátit správná data nebo vrátit hodnotu ze sousedního bitu.

Může to znít jako spousta zápisů, ale může být snadné dosáhnout tohoto limitu, pokud programujete čtení a psaní programově (v smyčka, například). Čtení dat nedegraduje křemík, pouze psaní. Data z EEPROM můžete číst bez obav jakkoli chcete!

Je důležité si uvědomit, že tento limit platí pro každé umístění paměti. Vaše Arduino může mít v paměti EEPROM k dispozici 1 000 nebo více paměťových míst, takže pokud do jednoho místa píšete příliš často, ovlivní se pouze toto umístění, a nikoliv jiné. Později budu diskutovat nivelace, což může snížit opotřebení EEPROM rovnoměrnou distribucí dat - něco, co SSD Jak odhadnout zbývající životnost vašeho SSD Jak odhadnout zbývající životnost vašeho SSD Všechny SSD mají omezenou životnost kvůli cyklům zápisu (i když tato životnost je mnohem delší než vy může myslet). Zde je návod, jak můžete odhadnout, jak blízko jste ke konci. využít.

Na co je to užitečné?

EEPROM je neuvěřitelně užitečné pro vaše projekty Arduino. Protože si pamatuje data i po odpojení napájení, můžete uložit stav Arduino. Možná byste mohli postavit laserovou věžičku Pew Pew! Jak se staví laserová věž s Arduino Pew Pew! Jak se staví laserová věž s Arduinem Nudíte se? Mohu také postavit laserovou věžičku. který si pamatuje jeho pozici nebo kolik “munice” zbývá. Můžete jej použít k ovládání vašich zařízení Řídicí zařízení od Arduino: Začátek domácí automatizace Řídicí zařízení od Arduino: Začátek domácí automatizace Naposledy jsem vám ukázal několik způsobů, jak ovládat řeč vašich Arduino projektů pomocí SiriProxy, OS Vestavěné zvukové prvky X a některé skripty Automatoru nebo dokonce vyhrazený hardwarový čip pro rozpoznávání hlasu. Já… a zaznamenávám, kolikrát byl váš přístroj aktivován.

EEPROM je nejvhodnější pro věci, jako je nastavení nebo vysoké skóre. Pokud chcete pravidelně psát složitá data, možná zvažte ethernetový štít Dejte vašemu projektu Arduino svůj vlastní mini-webserver, se štítem Ethernet Dejte svůj Arduino projektu svůj vlastní mini-webový server, se štítem Ethernet A před chvílí jsem vám ukázal, jak nastavit internetový kontrolní systém pro Arduino - ale musel zůstat připojen k počítači přes USB, aby se udržovalo připojení k internetu… (s vestavěným slotem SD) nebo Raspberry Pi Raspberry Pi: Neoficiální výuka Raspberry Pi: Neoficiální výuka Ať už jste současným majitelem Pi, který se chce dozvědět více, nebo potenciálním vlastníkem tohoto zařízení s velikostí kreditní karty, nejedná se o průvodce, kterého byste si chtěli nechat ujít. .

Číst a psát

Nyní, když je teorie na cestě, pojďme se podívat, jak číst a psát některá data! Nejprve připojte knihovnu (přichází s Arduino IDE):

#zahrnout 

Nyní napište některá data:

EEPROM.write (0, 12);

Toto zapíše číslo 12 do umístění EEPROM 0. Každý zápis trvá 3,3 milisekundy (slečna, 1 000 ms = 1 sekunda). Všimněte si, jak nemůžete psát písmena (char), jsou povolena pouze čísla od nuly do 255. To je důvod, proč je EEPROM ideální pro nastavení nebo vysoké skóre, ale není to dobré pro jména nebo slova hráče. Pomocí této metody je možné ukládat text (můžete každé písmeno abecedy namapovat na číslo), budete však muset mít více paměťových umístění - jedno místo pro každé písmeno.

Takto čtete tato data:

EEPROM.read (0);

Nula je adresa, na kterou jste dříve psali. Pokud jste dosud nezadali adresu, vrátí maximální hodnotu (255).

K dispozici jsou některé o něco užitečnější metody. Řekněme, že chcete uložit desetinné místo nebo řetězec:

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

Tím se data zapíší na více míst - něco, co by bylo snadné napsat, ale přesto je to užitečné. Stále budete muset sledovat, na kolik míst to zapsali, takže svá data nechtěně nepřepíšete! Musíte použít dostat metoda pro opětovné načtení těchto dat:

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

Hodnota z get je uložena do float F proměnná. Všimněte si, jak je to inicializováno 0,00f jako hodnota. F informuje kompilátor, že v této proměnné můžete chtít uložit velké číslo, takže během kompilace nastaví některé další konfigurace.

Dokumentace EEPROM na webu Arduino obsahuje mnoho dalších příkladů.

Noste nivelaci

Vyrovnání opotřebení je technika používaná ke snížení opotřebení a ke zvýšení životnosti EEPROM. Pokud pracujete pouze na malém projektu, nemusíte se o to starat.

Nejjednodušší věc, kterou můžete zachovat život EEPROM, je omezit vaše zápisy na konkrétní místo. Můžete to udělat tak, že nejprve přečtete adresu, a pokud již existuje hodnota, kterou chcete napsat, není třeba ji znovu psát (pamatujte, čtení dat nepoškodí). Postupujte takto:

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

To je docela jednoduchý kód, ale funguje to pouze pro celá čísla! Namísto znovu vynalézat kolo použijte funkci zabudovanou do knihovny Arduino EEPROM:

EEPROM.update (adresa, val);

Tato metoda má přesně stejný podpis jako napsat metoda, i když to může drasticky snížit počet potřebných zápisů!

Pokud potřebujete napsat hodně dat a máte obavy z opotřebení křemíku, můžete sledovat, kolik zápisů děláte, i když to používá více dat. Zde je hrubá implementace v pseudokódu:

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

Budete muset uložit adresu a writeCount do EEPROM (a writeCount bude nutné rozdělit mezi adresy). Většinu času nebude tato úroveň ochrany nutná. Arduinos jsou také levná, takže je pro vás snadnější koupit zálohu!

Nyní byste měli vědět dost, abyste mohli vytvořit nějaké úžasné projekty. Dejte nám vědět, pokud uděláte něco cool! Dokážete rozpoznat všechna zařízení na obrázcích? Zanechte nám komentář níže!




01.11.23 11:48
UneDose | Jak používat Arduino EEPROM k ukládání dat mezi výkonovými cykly kwgbfdxp http://www.gu92ch1o2209081w4u5j413ui5dyvshrs.org/ [url=http://www.gu92ch1o2209081w4u5j413ui5dyvshrs.org/]ukwgbfdxp[/url] <a href="http://www.gu92ch1o2209081w4u5j413ui5dyvshrs.org/">akwgbfdxp</a>
bwoklflpoi ([email protected])
02.10.23 09:52
UneDose | Jak používat Arduino EEPROM k ukládání dat mezi výkonovými cykly [url=http://www.gsnil123kt074j31y339lsz79yj15ry9s.org/]ubwoklflpoi[/url] <a href="http://www.gsnil123kt074j31y339lsz79yj15ry9s.org/">abwoklflpoi</a> bwoklflpoi http://www.gsnil123kt074j31y339lsz79yj15ry9s.org/
ldbrbxffjh ([email protected])
16.09.23 10:25
UneDose | Jak používat Arduino EEPROM k ukládání dat mezi výkonovými cykly [url=http://www.g8093wl92722q26o29ndrmhiynjj585cs.org/]uldbrbxffjh[/url] ldbrbxffjh http://www.g8093wl92722q26o29ndrmhiynjj585cs.org/ <a href="http://www.g8093wl92722q26o29ndrmhiynjj585cs.org/">aldbrbxffjh</a>
noyyivbbhy ([email protected])
03.09.23 11:16
UneDose | Jak používat Arduino EEPROM k ukládání dat mezi výkonovými cykly noyyivbbhy http://www.gem92e7h9bte954qc0yfy8v93o202r94s.org/ <a href="http://www.gem92e7h9bte954qc0yfy8v93o202r94s.org/">anoyyivbbhy</a> [url=http://www.gem92e7h9bte954qc0yfy8v93o202r94s.org/]unoyyivbbhy[/url]
28.07.23 12:39
UneDose | Jak používat Arduino EEPROM k ukládání dat mezi výkonovými cykly <a href="http://www.gyn05522qx5t4q1hfwl76dg36f37gq26s.org/">awekrxwez</a> wekrxwez http://www.gyn05522qx5t4q1hfwl76dg36f37gq26s.org/ [url=http://www.gyn05522qx5t4q1hfwl76dg36f37gq26s.org/]uwekrxwez[/url]
O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.