FLASHサイズの調べ方は以下の記事を参照してください。
ESP-WROOM-02 ( ESP8266 ) チップ・メモリ・MACアドレス情報確認方法
(2018/06/22)
以下、Windows PC の場合の方法です。
(Windows8.1、Windows10 は動作確認済み)
Arduino IDE にESP8266 core for Arduino のプラグイン
SPIFFS ファイルシステムアップローダーをインストールする方法を紹介します。
使用するボードはスイッチサイエンスさんのESP-WROOM-02開発ボードをお勧めします。
SPIFFSファイルシステムとは、ESP-WROOM-02 ( ESP8266 ) のフラッシュメモリをシステム領域とユーザーDATA領域と分けて、ユーザーDATA領域に自由なファイルを保存しておけて、しかもSDカードやEEPROMのようにArduinoスケッチプログラムから自由に読み書きできるという優れものシステムです。
2016/2/1現在で最大3Mバイトの領域を確保できます。
ここにフォントデータやHTMLファイル、データ等を保存しておけば、外部メディアのSDカードなどに保存しておかなくても大抵のことはできてしまいます。とても便利ですね。
1.SPIFFSファイルシステムアップローダーをインストール
GitHubの Arduino core for ESP8266 コミュニティーのページにプラグインのページがあります。
そこの、こちらのページ を開くと下図のようにインストール方法が英語で掲載されているので、その通りにインストールしていきます。
下図のようにZipファイルのところをクリックしてダウンロードします。
そのファイルを解凍しておきます。
次に、ご自分のPCのArduinoスケッチドキュメントフォルダに tools というフォルダを新たに作成しておきます。
そこに先ほど解凍したフォルダのESP8266FSというフォルダごと、そこにコピー&ペーストします。
その後、ArduinoIDEを再起動すると、ツールメニューにESP8266 Sketch Data Upload という項目が表示されると思います。
こうなったら、Arduino IDEプラグインのSPIFFSファイルシステムアップローダーのインストール完了です。
2.アップローダーを使って、ESP-WROOM-02 のフラッシュにファイルをアップロードする
まず、編集中のスケッチフォルダを下図のようにして開きます。
開くとこんな感じで表示されたら、dataフォルダを開きます。
無ければ新たにdataフォルダを作成してください。
そのdataフォルダにESP-WROOM-02のフラッシュに書き込みたいファイルをコピー&ペーストしておきます。
次に、dataフォルダにある ファイルを ESP-WROOM-02 のフラッシュメモリに書き込みます。
下図のように ESP8266 Sketch Data Upload というところをクリックするとアップロード開始します。
※シリアルモニターは必ず閉じておいてください。シリアルモニターが起動しているとアップロードできません。
こんな感じで白い点々が表示始めればアップロードしているということです。
アップロード終了しても何も表示されませんので、点々の進行が停止するまで待ちます。
Flash Size を 4M ( 1M SPIFFS ) にすると、結構時間がかかります。待てない方はサイズを小さくしても良いと思います。
終ると、点々の進行が停止しますので、それでアップロード完了です。
Arduino IDE 1.6.9では白い点すら出ず、数分たって終了したら赤い点々が一気に出て完了という風になります。進行しているか不安になりますが気長に待ってください。
4M(3M SPIFFS)でアップロードできないときや、 SPIFFS Upload failed! というメッセージが出てアップロードできなくなった方は こちらのページ をご覧ください。その場合のトラブル対処方法があります。(2016/7/11)
3.スケッチ上でのプログラム方法
たとえば、サンプル例として、予め”test”という文字で保存した test.txt ファイルを作成してフラッシュにアップロードしておき、その2番目の文字を読み込むスケッチがこれです。
【ソースコード】 (※無保証 ※PCの場合、ダブルクリックすればコード全体を選択できます)
#include <FS.h> void setup() { SPIFFS.begin(); Serial.begin(115200); File file = SPIFFS.open("/test.txt", "r"); file.seek(2,SeekSet); char c = file.read(); Serial.println(); Serial.println(c); } void loop() { }
●1行目: <FS.h>をインクルードします。
●3行目: SPIFFS開始
●6行目: 先ほどのdataフォルダにあったファイルをアップロードしたものを読み込みオープンします。
ここで、ファイル名の前に必ずスラッシュ(/)を記入しておきます。
“r”は読み取りモード。”W”は書き込みモードです。
●7行目: 読み取り位置を2番目文字にセットします。先頭がゼロ番です。
●8行目: 読み取りSeek位置から1文字(1バイト)読み込みます。
余談ですが、読み取りには readBytes という関数もあります。しかし、SPIFFSファイルシステムver0.1.3の場合はbyte型で読み込み可能だったのですが、ver0.2.0になったらbyte型ではエラーが出て、char型で読み込まないとダメでした。どうしてこういう仕様になったのか分かりません。私が作っているわけではないので、その仕様に従うしかありませんね。
上記のスケッチをコンパイル実行すると、”S” という文字が表示されます。
最初の文字がゼロ番目ですから、3文字目ということになります。
以上、SPIFFSファイルシステムアップローダーについてでした。
Amazon.co.jp 当ブログのおすすめ
コメント
お世話になります。
SPIFFSファイルがdata directoryに格納されているのに、wifiで送られないトラブルで、ebayの香港製の安物esp8266開発ボードでは問題ありませんでした。書き込みはESP8266FS v.0.3でOKでした。
大王怒さん
当ブログをご覧いただき、ありがとうございます。
そうなんですね。
やはり、ハード設計に問題があるのでしょうか・・・。
情報感謝いたします。
いつも楽しみに拝見しています。
私のホームページからリンクさせて戴きたくコメントしています。
宜しくお願い致します。
https://www31.atwiki.jp/gingax/pages/86.html
gingaxxさん
記事をご覧いただき、ありがとうございます。
リンクフリーですので、OKですよ!
ありがとうございます。