Storage - czyli przechowywanie danych w urządzeniach

Awatar użytkownika
klew
Posty: 1118
Rejestracja: czw cze 27, 2019 12:16 pm

pt wrz 11, 2020 8:41 pm

Niedawno do biblioteki SuplaDevice na Arduino IDE zostały dodane klasy typu Supla::Storage. Na razie są tam dwie implementacje:

Kod: Zaznacz cały

#include <supla/storage/eeprom.h>
oraz

Kod: Zaznacz cały

#include <supla/storage/fram_spi.h>
Ta pierwsza pracuje na wbudowanej pamięci EEPROM (na Arduino Mega) oraz na pamięci flash (ESP8266, ESP32).
Ta druga wymaga zewnętrznego urządzenia Adafruit FRAM SPI (w google łatwo znaleźć instrukcję podłączenia).
W tej chwili zapis do EEPROM/Flash jest robiony co 10 s, ale zapisuje tylko, gdy jest taka potrzeba. Ten domyślny czas będzie wydłużony (pewnie na 3-5 min). EEPROM/Flash trzeba oszczędzać, bo z reguły działa do około 100 000 zapisów. Dlatego wszystkim polecam doinstalować sobie pamięć FRAM (aktualnie wspieramy Adafruit FRAM SPI - jeśli ktoś ma inną kostkę, to dajcie znać). FRAM jest praktycznie niezniszczalny i bardzo szybki. Dlatego tutaj zapis jest realizowany co 1 s (o ile jest taka potrzeba).

Podstawowa obsługa Storage jest bardzo prosta. Wystarczy dodać odpowiedni include (jeden z dwóch opisanych wyżej) i potem stworzyć instancję odpowiedniej klasy (jedna z poniższych):

Kod: Zaznacz cały

// Hardware SPI
Supla::FramSpi fram(FRAM_CS, SUPLA_STORAGE_OFFSET);
// Software SPI
Supla::FramSpi fram(24, 22, 23, FRAM_CS, SUPLA_STORAGE_OFFSET); // <- sofrware spi, piny (SCK, MISO, MOSI, CS)
// EEPROM / Flash
Supla::Eeprom eeprom(SUPLA_STORAGE_OFFSET);
OFFSET oznacza adres, od którego zaczynamy zapis (domyślnie 0, ale można ustawić inny).

Tak wyposażony program będzie sobie zapisywał różne dane do pamięci trwałej (np. liczniki impulsów - zapiszą ilość impulsów, rolety zapiszą czas otwierania/zamykania oraz pozycję rolety, kolejne rzeczy będą dodane wkrótce).

Obsługa Storage będzie w najbliższym czasie rozbudowywana (np. sprawdzanie CRC, duplikowanie niektórych zapisów, aby się zabezpieczyć przed utratą danych, dodawanie nowych urządzeń przechowujących stan).
ODPOWIEDZ

Wróć do „Arduino IDE”