본문 바로가기
  • 재미있는 펌웨어와 코딩
ESP32/기초 및 Tips

ESP32 SPIFFS 사용하기

by 윤재윤호 2023. 9. 25.

ESP32가 아닌 일반적으로 사용하던 ATMega328의 아두이노를 사용했을 때에는
데이터를 저장하기 위해서 내부의 EEPROM을 이용하였습니다.
EEPROM에 간단한 데이터는 저장하기 편리하지만, 파일을 저장할 수 없었는데
ESP32에서는 내부의 플래시 메모리의 일부를 PC의 하드디스크와 같이 파일을
저장하고 읽을 수 있습니다. 단, 메모리의 크기가 한정되어 너무큰 파일은
저장할 수 없습니다.

SPIFFS(Serial Peripheral Interface Flash File System) SPI 버스로 연결된 내부

플래시 메모리에 파일을 저장할 수 있는 시스템 입니다.

 

원하는 저장공간 크기 설정



아두이노 IDE에 파일을 업로드 할 수 있도록 설정합니다.
1. 'ESP32FS-1.1.zip' 파일을 다운로드 합니다.
https://github.com/me-no-dev/arduino-esp32fs-plugin/releases/

 

Releases · me-no-dev/arduino-esp32fs-plugin

Arduino plugin for uploading files to ESP32 file system - me-no-dev/arduino-esp32fs-plugin

github.com

'ESP32FS-1.1.zip' 파일 다운로드


2. 압축을 풀어 'ESP32FS' 폴더를 IDE가 설치된 디렉토리로 이동하여 'tools' 폴더에 붙여넣기 합니다.

    (IDE는 실행하지 않은 상태에서 작업)

아두이노 IDE 디렉토리의 'tools'

 

'tools' 폴더안에 복사됨


3. ino 파일과 같은 위치에 'data' 폴더를 만들고 원하는 파일을 'data' 폴더에 복사합니다.

   (반드시 폴더명은 'data' 이어야 합니다.)

'data' 폴더 생성

 

'data'폴더에 'test.txt' 파일 생성

 

텍스트 파일에 내용 작성


4. 아두이노 IDE를 실행하고  메뉴에서 '툴->ESP32 Sketch Data Upload'를 클릭 합니다.

파일을 정상적으로 복사 했으면 'ESP32 Sketch Data Upload' 메뉴가 만들어짐

 

파일 업로드

 

 

5. 테스트 코드 작성

#include "SPIFFS.h"

void setup() {
  Serial.begin(115200);

  // SPIFFS 초기화
  if (!SPIFFS.begin(true)) {
    Serial.println("Can not mount SPIFFS"); // 초기화 실패
    while (1) ;
  }

  // data/test.txt 파일 열기
  // 'data' 폴더는 경로에 포함하지 않는다.
  File f = SPIFFS.open("/test.txt");
  if (!f) {  // 파일 열기 실패
    Serial.println("Can not open file");
    while (1) ;
  }

  // 파일 내용을 시리얼로 출력
  while (f.available()) {
    Serial.write(f.read());
  }
  Serial.println("");

  f.close(); // 파일 닫기
}

void loop() {
}

 

6. 실행결과

 

웹서버를 만들 때 css, 자바스크립트, html 파일등을 넣어서 만들면 소스코드가 간결해 집니다.

 

'ESP32 > 기초 및 Tips' 카테고리의 다른 글

ESP32 시간설정 NTP  (0) 2023.10.11
ESP32 네트워크 채널 문제  (0) 2023.10.06
ESP32 부팅시 디버깅 메시지 없애기  (0) 2023.10.02
ESP32 고정 IP 만들기  (0) 2023.10.01
아두이노 라이브러리 추가 방법  (0) 2023.09.22