ESP-WROOM-32 ( ESP32 ) SPIFFS アップローダープラグインの使い方

記事公開日:2017年10月15日
最終修正日:2017年10月24日

スポンサーリンク

ESP-WROOM-32 ( ESP32 )の SPIFFS について、以下の記事も合わせてご参照ください。
●ESP-WROOM-32 ( ESP32 )の SPIFFS を使って、日本語漢字 美咲フォント を読み込む
●ESP-WROOM-32 ( ESP32 ) SPIFFS メモリサイズを大きくする方法

こんばんは。

いきなり、別話題ですが、ついこの間発売された、トランジスタ技術 2017年11月号を買ってみました。

これ、ESP-WROOM-32 ( ESP32 )の使い方や応用例がいつになく詳細に書かれていますので、お勧めですよ!!
初歩の初歩、Arduino IDE の使い方から突発電流値、高度なセンサー測定など、かなり突っ込んで書かれているので、ESP32好きの方にはたまらないものがあります。
当ブログでリンクを貼らせていただいている ht-deko さんも執筆されているので、ぜひ一読してみてください。

しかし、私もブログを書いていて思うんですが、こういう記事を書くのってホント大変だったろうなぁ・・・、と察してしまいます。
表とか絵とか、独自にかなり詳しく書いていて、校正も念入りにしなきゃいけないし・・・。
ホント、お疲れ様と言いたいです。

さてさて、本題に戻りまして、やっとやっと Arduino core for ESP32 で SPIFFS ( SPI Flash File System ) アップローダープラグインが動作するようになりました。

以前の記事では、アップローダーがまだリリースされていなかったので、micro SDHC カードからアップロードしていました。
でも、今回からはついに micro SD カード要らずで、Arduino IDE プラグインでパソコンから直に ESP-WROOM-32 の Flash に書き込むことができるようになりました!!

しかも、書き込みが早い!!

最近の Espressif Systems 社の Arduino core for ESP32 開発が加速している感があります。
Bluetooth ( BLE ) もようやく UART 通信でスマホとできるようになりましたしね。
いろいろ出来過ぎて困ってしまう、嬉しい悩みですね。
ホントに開発チームの苦労はたいそうなものだったろうとお察しします。
お疲れ様でした!!!

因みに、このアップローダーはまだ version 0.1 です。
ということはまだまだ正式版とは程遠いものかと想像できますが、十分満足いく動作でした。

ということで、ESP-WROOM-32 用 SPIFFS アップローダーの使い方を説明します。
(Windows 10 の場合で説明します)

ht-deko さんの以下の記事では、SPIFFS というものの説明も写真付きで紹介されていて、分かりやすいです。
是非、合わせてご欄ください。
http://ht-deko.com/arduino/esp-wroom-32.html#23

準備するもの

ESPr Developer 32 ( ESP-WROOM-32 開発ボード )

スイッチサイエンスさん販売のもので、ESP32 や USB接続機器の各種保護機能が充実した、超お勧めのボードです。
(※ピンヘッダやピンソケットは別売りです)

もちろん、スイッチサイエンスさんのサイトでも販売されています。

ESPr® Developer 32

また、Espressif Systems 純正の ESP32-DevKitC でもOKです。

その他、パソコン、USBケーブル、ブレッドボード、ジャンパーワイヤー等

Arduino core for ESP32 の最新版をインストールしておく

Arduino IDE は1.8.5 で動作確認しております。

Arduino core for ESP32 は必ず最新版 ( 2017/10/14以降 )のものをインストールしてください。
それ以前のものは動作しませんのでご注意ください。
Arduino core for ESP32 のインストール方法は以下の記事を参照してください。

Arduino core for the ESP32 のインストール方法

Arduino ESP32 filesystem uploader のダウンロード

Arduino ESP32 filesystem uploader ( arduino-esp32fs-plugin ) は、公式というよりか、Arduino core for ESP32 開発チームの me-no-dev さんのGitHub エントリにあります。
これは公式なのかどうかは分かりません。
将来的に Espressif Systems社さんのページに統合されるかもしれませんのでご了承ください。

現在のところ、GitHub の以下のページにソースコードがあります。

https://github.com/me-no-dev/arduino-esp32fs-plugin

このページを開くと下図の様なところに releases page というリンクがあるので、それをクリックしてください。

ESP32_SPIFFS_Uploader01

次に、releases page が開いたら、下図の様なところのZIPファイルをクリックしてダウンロードします。

ESP32_SPIFFS_Uploader02

ダウンロードが終わったら、Windows 10 の場合、PC の ダウンロードフォルダに保存されます。
そこにある、ESP32FS-v0.1.zip ( version 0.1 の場合 )
それを下図の様に右クリックして、解凍します。

ESP32_SPIFFS_Uploader03

解凍すると、ESP32FS-v0.1というフォルダができます。

ESP32FS フォルダごと、toolsフォルダにコピーする

次に、Arduino スケッチを保存しているフォルダを開きます。

Arduino IDE をデフォルト状態で使っていれば、スケッチフォルダは以下のパスになると思います。

C:\Users\UserName\Documents\Arduino

ここに下図の様に tools というフォルダを作成しておきます。

ESP32_SPIFFS_Uploader04

次に、前項でZIP解凍した、ESP32FS-v0.1 フォルダの中の ESP32FS というフォルダをコピーし、
tools フォルダの中に貼り付けします。
これは、ESP8266 SPIFFS アップローダーと同じですね。

ESP32_SPIFFS_Uploader05

Arduino IDE の起動

ESP32FS フォルダごとtools フォルダへコピーできたら、Arduino IDE を起動します。
すると、下図の様に「ツール」メニューに ESP32 Sketch Data Upload という項目が作られているはずです。
そうしたら、無事アップローダープラグインのインストール完了です。

ESP32_SPIFFS_Uploader06

アップロードするデータの前準備

まず、スケッチは何でも良いのですが、ここでは空のスケッチを一旦「名前をつけて保存」します。

その後、その保存されたスケッチフォルダを開いて、下図の様に data フォルダを作成します。

ESP32_SPIFFS_Uploader07

その data フォルダの中にアップロードしたいファイルをコピーして貼り付けます。
例えば、以前の記事で紹介した美咲フォントファイル群を保存するとこんな感じになります。

ESP32_SPIFFS_Uploader08

ファイルのトータルサイズは、ESP-WROOM-32 の場合、1MB 程度しかアップロードできませんので、その範囲に収めてください。
この件は後ほど述べます。

Arduino IDE の ESP32 設定

Arduino IDE を起動し、下図を参考に ESP32 設定をしておきます。
Flash Size は必ず 4MB にしておいてください。
2MB にしてしまうと、保存できるサイズがかなり少なくなってしまいます。

また、Upload Speed は921600 をお勧めします。
早いです。

シリアルポートは各自の環境に合わせて変えてください。

ESP32_SPIFFS_Uploader09

データをSPIFFS フラッシュへアップロードしてみる

では、ESP-WROOM-32 ( ESP32 )を接続して、Arduino IDE 画面の ESP32 Sketch Data Upload をクリックしてください。
するとアップロード開始します。

ESP32_SPIFFS_Uploader10

※ここで注意
シリアルモニターは必ず閉じておいてください。
起動しているとアップロードエラーになります。

シリアルモニターを起動したままアップロード開始してしまうとこんな画面になり、アップロードできません。

ESP32_SPIFFS_Uploader11

serial.serialutil.SerialException: could not open port 'COM4': WindowsError(5, '\x83A\x83N\x83Z\x83X\x82\xaa\x8b\x91\x94\xdb\x82\xb3\x82\xea\x82\xdc\x82\xb5\x82\xbd\x81B')
Failed to execute script esptool
SPIFFS Upload failed!

ということで、シリアルモニターを閉じてアップロード開始が正常に終了するとこんな感じになります。

ESP32_SPIFFS_Uploader12

アップロードされたファイルの確認

確実にアップロードされたかどうかを確かめるには、次のスケッチをコンパイルして確かめてください。
SPIFFS サンプルスケッチのコードをそのまま流用しています。

#include "FS.h"
#include <SPIFFS.h>

//********************************************************************
void setup() {  
  Serial.begin(115200);
  Serial.println("----------------------");

  if (!SPIFFS.begin()) {
    Serial.println("SPIFFS Mount Failed");
    return;
  }

  Serial.printf("Flash Chip Size = %d byte\r\n", ESP.getFlashChipSize());

  delay(100);

  //deleteFile(SPIFFS, "/xxx.txt");

  listDir(SPIFFS, "/", 0); //SPIFFSフラッシュ ルートのファイルリスト表示

  SPIFFS.end();
}
//********************************************************************
void loop() {

}
//********************************************************************
void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
    Serial.printf("Listing directory: %s\n", dirname);

    File root = fs.open(dirname);
    if(!root){
        Serial.println("Failed to open directory");
        return;
    }
    if(!root.isDirectory()){
        Serial.println("Not a directory");
        return;
    }

    File file = root.openNextFile();
    while(file){
        if(file.isDirectory()){
            Serial.print("  DIR : ");
            Serial.println(file.name());
            if(levels){
                listDir(fs, file.name(), levels -1);
            }
        } else {
            Serial.print("  FILE: ");
            Serial.print(file.name());
            Serial.print("  SIZE: ");
            Serial.println(file.size());
        }
        file = root.openNextFile();
    }
}
//********************************************************************
void deleteFile(fs::FS &fs, const char * path) {
  Serial.printf("Deleting file: %s\n", path);
  if (fs.remove(path)) {
    Serial.println("File deleted");
  } else {
    Serial.println("Delete failed");
  }
}

14行目では、Arduino IDE で設定した SPI Flash のトータルサイズを表示します。
Arduino IDE で 2MB に設定したら 2MB で表示されます。

また、既にあるファイルを削除したい場合は、18行目のコメントを解除して、ファイル名を書き換えてください。

コンパイル書き込み実行すると、シリアルモニターには下図の様に表示されます。

ESP32_SPIFFS_Uploader13

以上、ESP32 の Arduino SPIFFS アップローダープラグインの使い方でした。

これができれば、美咲フォントをフルカラー OLED に表示させた以下の記事を参照して実行させてみてください。
もちろん、micro SDHC カード不要なので、その部分は読み飛ばしてください。

ESP-WROOM-32 ( ESP32 )の SPIFFS を使って、日本語漢字 美咲フォント を読み込む

※アップロードできる最大サイズについて

1.1MB以上アップロードができるようになりました。
Arduino - ESP32 の Partition Table を変更する必要があります。
以下の記事を参照してください。
ESP-WROOM-32 ( ESP32 ) SPIFFS メモリサイズを大きくする方法
(2017/10/24)

2017年10月14日現在流通している、ESP-WROOM-32 内蔵の SPIフラッシュのトータルサイズは 4MB ですが、SPIFFS ファイルシステムでアップロードできるサイズはわずか 1.1MB少々です。
ESP-WROOM-02 ( ESP8266 )のような 3MB 設定は、Arduino core for ESP32 では今のところできません。
今後、パーテーションテーブルの検討によっては容量が増えるかも知れません。

因みに、トータル 1.1MB を超えるサイズでアップロードを行おうとすると、こんな感じでエラーになります。

ESP32_SPIFFS_Uploader14

SPIFFS_write error(-10001): File system is full.
error adding file!
SPIFFS Create Failed!

と表示されます。
16×16ドットの日本語東雲フォントはアップロードできませんでした。
もうちょっと容量が欲しいですね。

まとめ

いかがでしたでしょうか。

これができれば、ESP8266 のように簡単かつシンプルに ESP-WROOM-32 ( ESP32 )を扱うことができますね。

ただ、やはりまだ1MBちょっとしかアップロードでないのが不満ですね。
せめて2MB あれば、東雲フォントがアップロードできるんですが・・・。

1.1MB以上アップロードができるようになりました。
Arduino - ESP32 の Partition Table を変更する必要があります。
以下の記事を参照してください。
ESP-WROOM-32 ( ESP32 ) SPIFFS メモリサイズを大きくする方法
(2017/10/24)

今後の Arduino core for ESP32 開発チームの皆さまに期待するしかないですね。

ということで、今回はここまでです。

ではまた・・・。

ESP-WROOM-32 ( ESP32 )の SPIFFS について、以下の記事も合わせてご参照ください。
●ESP-WROOM-32 ( ESP32 )の SPIFFS を使って、日本語漢字 美咲フォント を読み込む
●ESP-WROOM-32 ( ESP32 ) SPIFFS メモリサイズを大きくする方法
mgo-tec電子工作 関連コンテンツ ( 広告含む )

スポンサーリンク

Amazon.co.jp 当ブログのおすすめ








投稿者:

mgo-tec

Arduino , ESP32 ( ESP-WROOM-32 ) , ESP8266 ( ESP-WROOM-02 )等を使って、主にスマホと連携した電子工作やプログラミング記事を書いてます。ライブラリも作ったりしてます。趣味、独学でやってますので、動作保証はしません。
電子回路やプログラミングの専門家ではありません。
畑違いの仕事をしてます。
でも、少しだけ電気の知識が必要な仕事なので、電気工事士や工事担任者等の資格は持ってます。

「ESP-WROOM-32 ( ESP32 ) SPIFFS アップローダープラグインの使い方」への2件のフィードバック

  1. Hi,

    Sorry that I’m not able to write in Japanese.

    I have found that you can edit the partition table to allow you to download larger files.

    Just edit the “default.csv” located in “YOUR_SKETCH_LOCATION/hardware/espressif/esp32/tools/partitions”.

    I shaved off x40000 of both app0 and app1 partition and added x80000 to spiffs partition. Don’t forget to change the offset values as well to reflect the change.

    I have successfully uploaded the shinonome font files!

    I hope you can understand my instructions.

    Cheers,
    Tom

    1. Great! !
      As you said, after changing the partition table, I could upload the fancy font.
      Thank you very much for the very useful information.

      I introducing this procedure in the following article.

      I am very grateful to you.

コメントを残す

メールアドレスが公開されることはありません。

*画像の文字を入力してください。(スパム防止の為)