Penyimpanan data apa saja yang bisa digunakan oleh ESP8266.

Halo semuanya, pada kesempatan kali ini saya akan membahas tentang penyimpanan data apa saja yang bisa digunakan oleh ESP8266.

Terdapat 5 jenis penyimpanan data yang dapat digunakan oleh ESP8266.

  1. Pertama, kita dapat menyimpan data di dalam program, kita menggunakan program PROGMEM. Kekurangannya data tidak dapat diubah selain dengan mengupload ulang programnya.

    const char nama[] PROGMEM = R"=====( data  )=====";

  2. Kedua, kita bisa menyimpan data di EEPROM. Kekurangan EEPROM adalah kapasitasnya yang kecil, hanya 4 KB, artinya hanya mampu menyimpan data maksimal 4092 karakter atau huruf dan Kelebihannya tidak mudah diakses.


  3. Ketiga dan keempat kita bisa menggunakan Little FS atau SPIFFS. Kekurangan Little FS adalah tidak bisa membuka file berukuran besar, namun kelebihannya menurut pencarian Google adalah kecepatan membacanya 10x lebih cepat dibandingkan SPIFFS.



  4. Kelima, kita bisa menggunakan SD Card. Anda pasti sudah tahu tentang SD Card.


Lalu cara menggunakan PROGMEM, EEPROM, Little FS, SPIFFS, dan SD Card pada ESP8266.

Untuk menggunakan PROGMEM Mudah kalian tinggal copy text ini :

const char nama[] PROGMEM = R"=====( data )=====";

lalu ganti nama dan tentu isinya. contoh disini saya mengisi asal saja.

Selanjutnya untuk menggunakan EEPROM, Programnya sperti dibwah ini :

#include <EEPROM.h>
void setup() {
  Serial.begin(115200);
  // deklarasi
  byte value;
  int address = 1;
  EEPROM.begin(512);
  
  //Write
  EEPROM.write(address, 0);
  EEPROM.commit();
  //Reading
  value = EEPROM.read(address);
  Serial.print(address);
  Serial.print("\t");
  Serial.print(value, DEC);
  Serial.println();
}

void loop() {
}

Hal yang perlu di perhatikan dalam menggunakann EEPROM adalah memiliki ukuran dan masa pakai yang terbatas. Sel memori dapat dibaca sebanyak yang diperlukan tetapi jumlah siklus tulis dibatasi hingga 100.000 x.

Selanjutnya untuk menggunakan Little FS, Programnya sperti dibwah ini :
/* Example showing timestamp support in LittleFS */
/* Released into the public domain. */
/* Earle F. Philhower, III <earlephilhower@yahoo.com> */

#include <FS.h>
#include <LittleFS.h>
#include <time.h>
#include <ESP8266WiFi.h>
 "Internet Gratis"
#ifndef STASSID
#define STASSID "your-ssid"
#define STAPSK "your-password"
#endif

const char *ssid = STASSID;
const char *pass = STAPSK;

long timezone = 2;
byte daysavetime = 1;


void listDir(const char *dirname) {
  Serial.printf("Listing directory: %s\n", dirname);

  Dir root = LittleFS.openDir(dirname);

  while (root.next()) {
    File file = root.openFile("r");
    Serial.print("  FILE: ");
    Serial.print(root.fileName());
    Serial.print("  SIZE: ");
    Serial.print(file.size());
    time_t cr = file.getCreationTime();
    time_t lw = file.getLastWrite();
    file.close();
    struct tm *tmstruct = localtime(&cr);
    Serial.printf("    CREATION: %d-%02d-%02d %02d:%02d:%02d\n", (tmstruct->tm_year) + 1900, (tmstruct->tm_mon) + 1, tmstruct->tm_mday, tmstruct->tm_hour, tmstruct->tm_min, tmstruct->tm_sec);
    tmstruct = localtime(&lw);
    Serial.printf("  LAST WRITE: %d-%02d-%02d %02d:%02d:%02d\n", (tmstruct->tm_year) + 1900, (tmstruct->tm_mon) + 1, tmstruct->tm_mday, tmstruct->tm_hour, tmstruct->tm_min, tmstruct->tm_sec);
  }
}


void readFile(const char *path) {
  Serial.printf("Reading file: %s\n", path);

  File file = LittleFS.open(path, "r");
  if (!file) {
    Serial.println("Failed to open file for reading");
    return;
  }

  Serial.print("Read from file: ");
  while (file.available()) { Serial.write(file.read()); }
  file.close();
}

void writeFile(const char *path, const char *message) {
  Serial.printf("Writing file: %s\n", path);

  File file = LittleFS.open(path, "w");
  if (!file) {
    Serial.println("Failed to open file for writing");
    return;
  }
  if (file.print(message)) {
    Serial.println("File written");
  } else {
    Serial.println("Write failed");
  }
  delay(2000);  // Make sure the CREATE and LASTWRITE times are different
  file.close();
}

void appendFile(const char *path, const char *message) {
  Serial.printf("Appending to file: %s\n", path);

  File file = LittleFS.open(path, "a");
  if (!file) {
    Serial.println("Failed to open file for appending");
    return;
  }
  if (file.print(message)) {
    Serial.println("Message appended");
  } else {
    Serial.println("Append failed");
  }
  file.close();
}

void renameFile(const char *path1, const char *path2) {
  Serial.printf("Renaming file %s to %s\n", path1, path2);
  if (LittleFS.rename(path1, path2)) {
    Serial.println("File renamed");
  } else {
    Serial.println("Rename failed");
  }
}

void deleteFile(const char *path) {
  Serial.printf("Deleting file: %s\n", path);
  if (LittleFS.remove(path)) {
    Serial.println("File deleted");
  } else {
    Serial.println("Delete failed");
  }
}

void setup() {
  Serial.begin(115200);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, pass);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.println("Contacting Time Server");
  configTime(3600 * timezone, daysavetime * 3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org");
  struct tm tmstruct;
  delay(2000);
  tmstruct.tm_year = 0;
  getLocalTime(&tmstruct, 5000);
  Serial.printf("\nNow is : %d-%02d-%02d %02d:%02d:%02d\n", (tmstruct.tm_year) + 1900, (tmstruct.tm_mon) + 1, tmstruct.tm_mday, tmstruct.tm_hour, tmstruct.tm_min, tmstruct.tm_sec);
  Serial.println("");
  Serial.println("Formatting LittleFS filesystem");
  LittleFS.format();
  Serial.println("Mount LittleFS");
  if (!LittleFS.begin()) {
    Serial.println("LittleFS mount failed");
    return;
  }
  listDir("/");
  deleteFile("/hello.txt");
  writeFile("/hello.txt", "Hello ");
  appendFile("/hello.txt", "World!\n");
  listDir("/");

  Serial.println("The timestamp should be valid above");

  Serial.println("Now unmount and remount and perform the same operation.");
  Serial.println("Timestamp should be valid, data should be good.");
  LittleFS.end();
  Serial.println("Now mount it");
  if (!LittleFS.begin()) {
    Serial.println("LittleFS mount failed");
    return;
  }
  readFile("/hello.txt");
  listDir("/");
}

void loop() {}


Komentar

Postingan populer dari blog ini

Proyek IoT: Membangun Sistem Pencatatan Data Sederhana Menggunakan ESP32 dan Google Spreadsheet

Ekspos Server Lokal ke Internet dengan Cloudflare Tunneling