Jak korzystać z Arduino EEPROM do zapisywania danych między cyklami zasilania

  • Michael Fisher
  • 0
  • 6479
  • 154
Reklama

Czy wiesz, że Arduino może przechowywać dane, gdy jest wyłączone? Nie szkic zapisany w pamięci flash. Mówię o zmiennych danych w EEPROM. Dołącz do mnie, gdy pokażę ci, jak czytać i pisać, oraz co może zrobić dla twoich projektów.

Jeśli dopiero zaczynasz przygodę z Arduino, zapoznaj się z naszym przewodnikiem dla początkujących Pierwsze kroki z Arduino: Przewodnik dla początkujących Pierwsze kroki z Arduino: Przewodnik dla początkujących Arduino to platforma prototypowania elektroniki typu open source oparta na elastycznym, łatwym w użyciu sprzęcie i oprogramowanie. Jest przeznaczony dla artystów, projektantów, hobbystów i wszystkich zainteresowanych tworzeniem interaktywnych obiektów lub środowisk. .

Co to jest EEPROM?

EEPROM oznacza elektrycznie kasowana programowalna pamięć tylko do odczytu. Jest to rodzaj nieulotnej pamięci. Nie martw się, jeśli nie rozumiesz, co to oznacza. Po prostu przechowuje dane nawet po odłączeniu zasilania (w przeciwieństwie do RAM Szybki i brudny przewodnik po pamięci RAM: Co musisz wiedzieć Szybki i brudny przewodnik po pamięci RAM: Co musisz wiedzieć Pamięć RAM jest kluczowym elementem każdego komputera, ale może być mylące. Rozbijamy to na łatwe do zrozumienia warunki, które zrozumiesz., które potrzebują energii elektrycznej, aby zatrzymać wszelkie dane).

EEPROM jest wbudowany w niezliczoną liczbę procesorów, takich jak programowalna macierz bramek (FPGA) używana w Matrix Creator Matrix Creator dla Raspberry Pi Review Matrix Creator dla Raspberry Pi Review Matrix Creator to szwajcarski scyzoryk dla twojego Pi, z 15 czujników, zestaw protokołów komunikacyjnych, pierścień diod LED RGB, zestaw mikrofonów i wiele więcej! Pi HAT. Wszystkie Arduinos mają dostępną pamięć EEPROM, ale pojemność różni się w zależności od modelu. Zapoznaj się z naszym przewodnikiem zakupów Przewodnik zakupu Arduino: Którą deskę powinieneś kupić? Poradnik kupujący Arduino: Którą deskę powinieneś dostać? Jest tak wiele różnych rodzajów tablic Arduino, że wybaczono by ci, że jesteś zdezorientowany. Który powinieneś kupić dla swojego projektu? Pomóż nam, korzystając z tego przewodnika zakupów Arduino! po więcej informacji na temat każdej planszy.

Jak to działa?

EEPROM jest elektrycznie kasowany i programowany za pomocą Tunelowanie Fowler-Nordheim. Nie musisz znać szczegółów technicznych, aby móc z niego korzystać. Podstawową przesłanką jest to, że energia elektryczna jest wykorzystywana do zmiany danych binarnych (co to jest binarny Co to jest binarny? [Objaśnienie technologii] Co to jest binarny? [Objaśnienie technologii]) Biorąc pod uwagę, że binarny jest tak absolutnie fundamentalny dla istnienia komputerów, wydaje się dziwne, że nigdy wcześniej nie zajmowaliśmy się tym tematem - więc dzisiaj pomyślałem, że dam krótki przegląd tego, co binarne…). Można go czytać, usuwać i ponownie zapisywać elektronicznie.

Na szczęście język Arduino ułatwia zmianę danych, wszystko bez konieczności posiadania dyplomu z informatyki.

Długość życia

Mimo że EEPROM jest łatwy w użyciu w Arduino, ma on ograniczoną żywotność. Pamięć EEPROM obsługuje 100 000 cykli odczytu / kasowania. Oznacza to, że możesz zapisywać, a następnie kasować / ponownie zapisywać dane 100 000 razy, zanim pamięć EEPROM stanie się niestabilna. W rzeczywistości Atmel (producenci Arduino “Żeton”) półprzewodniki mogą obsługiwać większą lub mniejszą liczbę cykli, w zależności od tolerancji każdego procesora.

Gdy miejsce zostanie zapisane i usunięte zbyt wiele razy, może stać się niewiarygodne. Może nie zwrócić poprawnych danych lub zwrócić wartość z sąsiedniego bitu.

Może to zabrzmieć jak wiele zapisów, ale osiągnięcie tego limitu może być łatwe, jeśli programowo czytasz i piszesz (w pętla, na przykład). Odczyt danych nie powoduje degradacji krzemu, robi tylko pismo. Możesz bez obaw odczytywać dane z EEPROM!

Należy zauważyć, że ten limit dotyczy każdej lokalizacji pamięci. Twoje Arduino może mieć 1000 lub więcej lokalizacji pamięci dostępnych w EEPROM, więc jeśli piszesz zbyt wiele razy w jednej lokalizacji, dotyczy to tylko tej lokalizacji, a nie żadnej innej. Później będę dyskutować poziomowanie zużycia, co może zmniejszyć zużycie pamięci EEPROM przez równomierne rozprowadzanie danych - coś, co SSD Jak oszacować pozostały okres użytkowania dysku SSD Jak oszacować pozostały okres użytkowania dysku SSD Wszystkie dyski SSD mają ograniczoną żywotność z powodu cykli zapisu (chociaż ta żywotność jest znacznie dłuższa niż ty może pomyśleć). Oto jak możesz oszacować, jak blisko jesteś końca. zrobić użytek z.

Do czego to jest przydatne?

EEPROM jest niezwykle przydatny w twoich projektach Arduino. Ponieważ zapamiętuje dane nawet po odłączeniu zasilania, możesz zapisać stan Arduino. Może mógłbyś zbudować wieżyczkę laserową Pew Pew! Jak zbudować wieżyczkę laserową z ławką Pew Arduino! Jak zbudować wieżyczkę laserową z Arduino Czy jesteś znudzony? Równie dobrze może zbudować wieżę laserową. pamięta swoją pozycję lub ile “amunicja” pozostaje. Możesz go użyć do sterowania urządzeniami Sterowania urządzeniami z Arduino: początek automatyki domowej Sterowania urządzeniami z Arduino: początek automatyki domowej Ostatni raz pokazałem kilka sposobów sterowania mową projektami Arduino za pomocą SiriProxy, OS Wbudowane głośne elementy X, niektóre skrypty Automatora, a nawet dedykowany układ sprzętowy do rozpoznawania głosu. Ja… i rejestruję, ile razy urządzenie zostało aktywowane.

EEPROM najlepiej nadaje się do takich ustawień, jak wysokie wyniki. Jeśli chcesz regularnie zapisywać złożone dane, może rozważ osłonę ethernetową Daj projektowi Arduino własny mini-serwer z osłoną Ethernetową Daj projektowi Arduino własny mini-serwer z osłoną Ethernetową Jakiś czas temu pokazałem, jak to zrobić aby skonfigurować system sterowania Internetem dla Arduino - ale musiał on pozostać podłączony do komputera przez USB, aby utrzymać połączenie z Internetem… (z wbudowanym gniazdem SD) lub Raspberry Pi Raspberry Pi: The Unofficial Tutorial Raspberry Pi: Nieoficjalny samouczek Niezależnie od tego, czy jesteś aktualnym właścicielem Pi, który chce dowiedzieć się więcej, czy potencjalnym właścicielem tego urządzenia o wielkości karty kredytowej, nie jest to przewodnik, którego nie możesz przegapić. .

Czytaj i pisz

Teraz, gdy teoria się skończyła, spójrzmy, jak czytać i pisać niektóre dane! Najpierw dołącz bibliotekę (dostarczaną z Arduino IDE):

#zawierać 

Teraz napisz trochę danych:

EEPROM.write (0, 12);

To zapisuje liczbę 12 do lokalizacji EEPROM 0. Każdy zapis zajmuje 3,3 milisekundy (ms, 1000 ms = 1 sekunda). Zauważ, że nie możesz pisać liter (zwęglać), dozwolone są tylko liczby od zera do 255. Dlatego pamięć EEPROM jest idealna do ustawień lub najlepszych wyników, ale nie jest tak dobra do nazw graczy lub słów. Za pomocą tej metody można przechowywać tekst (można zmapować każdą literę alfabetu na liczbę), ale trzeba będzie mieć wiele lokalizacji w pamięci - po jednej dla każdej litery.

Oto jak czytasz te dane:

EEPROM.read (0);

Zero to adres, na który wcześniej napisałeś. Jeśli wcześniej nie napisałeś na adres, zwróci maksymalną wartość (255).

Istnieje kilka nieco bardziej przydatnych metod. Powiedz, że chcesz zapisać miejsce po przecinku lub ciąg znaków:

EEPROM.put (2, „12,67”);

Spowoduje to zapisanie danych w wielu lokalizacjach - coś, co łatwo byłoby napisać samodzielnie, ale mimo to przydatne. Nadal będziesz musiał śledzić, w ilu lokalizacjach to zapisało, aby przypadkowo nie zastąpić danych! Musisz użyć otrzymać metoda ponownego pobrania tych danych:

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

Wartość z get jest przechowywana w zmiennoprzecinkowym fa zmienna. Zauważ, jak to się inicjuje 0,00f jako wartość. The fa informuje kompilator, że możesz chcieć przechowywać dużą liczbę w tej zmiennej, więc konfiguruje dodatkowe konfiguracje podczas kompilacji.

Dokumentacja EEPROM na stronie Arduino zawiera wiele innych przykładów.

Wyrównanie zużycia

Wyrównanie zużycia to technika stosowana w celu zmniejszenia zużycia i zwiększenia żywotności pamięci EEPROM. Jeśli pracujesz tylko nad małym projektem, nie musisz się tym martwić.

Najprostszą rzeczą, jaką możesz zrobić, aby zachować życie pamięci EEPROM, jest ograniczenie liczby zapisów do określonej lokalizacji. Możesz to zrobić, najpierw czytając adres, a jeśli wartość, którą chcesz zapisać, jest już obecna, nie musisz jej ponownie zapisywać (pamiętaj, że odczyt danych nie szkodzi). Oto jak to zrobiłbyś:

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

To dość prosty kod, ale działa tylko na liczby całkowite! Zamiast ponownie wynaleźć koło, użyj funkcji wbudowanej w bibliotekę EEPROM Arduino:

EEPROM.update (adres, val);

Ta metoda ma dokładnie taki sam podpis jak pisać metoda, choć może drastycznie zmniejszyć liczbę potrzebnych zapisów!

Jeśli musisz napisać dużo danych i martwisz się zużyciem krzemu, możesz śledzić, ile zapisów wykonujesz, chociaż zużywa to więcej danych. Oto przybliżona implementacja w pseudokodzie:

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

Będziesz musiał przechowywać adres i writeCount w EEPROM (i writeCount trzeba będzie podzielić na lokalizacje adresów). Przez większość czasu ten poziom ochrony nie będzie konieczny. Arduinos są również tak tanie, więc może być łatwiej kupić kopię zapasową!

Powinieneś teraz wiedzieć wystarczająco dużo, aby tworzyć niesamowite projekty. Daj nam znać, jeśli zrobisz coś fajnego! Czy rozpoznajesz wszystkie urządzenia na zdjęciach? Zostaw nam komentarz poniżej!




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.