5.サンプルスケッチdataフォルダ内の確認
下図のようにIDEのファイルメニューのスケッチの例を開きます。
開いたら一度名前を付けて保存しておいてください。
次にサンプルスケッチフォルダを開いてその中のdataフォルダを開きます。
すると、以下のファイルが入っていると思います。
shnm8x16r.bdf (半角東雲フォント) 29KB
shnmk16.bdf (全角ゴシック東雲フォント) 1,110KB
Utf8Sjis.tbl (私の自作、UTF8→Shift_JISコード変換テーブル) 236KB
東雲フォントのオリジナルはefontさんのページにありますが、tar.bz2形式で圧縮されているため、解凍ソフトが必要です。
ですから、予め当方のサンプルスケッチに入れておきました。
6.SPIFFSファイルシステムとOTAでESP8266フラッシュにファイルをアップロードする
予めインストールしてあるSPIFFSファイルシステムアップローダーを使って、スケッチのdataフォルダ内のフォントファイル等をESP-WROOM-02 ( ESP8266 )のフラッシュへアップロードしてみます。
まずはUSBシリアル経由でアップロードしてみます。
すると、このようにエラーになると思います。
どうやら、ボード設定でSPIFFS領域を3MBにしても、1MB以上のデータはUSBシリアルではアップロードできないようです。1MB以下でも1MB近くあるとアップロードできませんでした。これはSPIFFSファイルシステムのバグっぽいですね。
解決策として、OTAという機能を使って、Wi-Fi経由でアップロードしてみますので、その方法を順番に解説していきます。
一度できてしまえば良いのですが、最初はかなりややこしいので、覚悟しておいてください!!
6-1.pythonをインストールする
Arduino OTA機能を使うには汎用プログラミング言語であるpythonをインストールする必要があります。
pythonは以下のページ
https://www.python.org/downloads/
の2.7.12の方をダウンロードしてください。(2016/7/11時点)
下図のような場所にあります。
次にダウンロードしたファイルをダブルクリックしてインストール開始します。
次に、下図のように Install for all users を選びます。
これは、ご自分のPCで他のすべてのユーザーでもpythonが使えるようにする設定です。
次にインストールするフォルダが下図の様で良ければ次へ進みます。
次に、とても重要で、忘れがちな設定をします。私はこの設定を忘れてOTAが使えなくて延々と悩んだことがありますので要注意です。
赤い×が付いているところをクリックして、Add python.exe to Path を設定します。
すると、次の図のような画面が出て、
Will be installed on local hard drive
を選びます。
これは、「ローカルドライブにインストールされます」という意味です。
もし、すべての機能をローカルドライブにインストールしたければ、その下の Entire feature…をクリックします。
そうしたら、次へ進みます。
すると、インストールが始まり、完了したらFinishをクリックしてインストール終了です。
ここで注意!!!
その後、必ずWindowsを再起動してください。
これをしないとOTAが動作しません。これもハマリどころの要注意事項です。
6-2.サンプルスケッチのArduino OTA のBasic OTA を開く
ご自分のルーターのSSID、パスワードに書き換えます。
その後、大事なのは、名前を付けて保存しておきます。
6-3.スケッチのBasicOTAのdataフォルダにフォントファイル等をコピーする
先ほど保存したサンプルスケッチのフォルダを開き、新たにdataフォルダを作成します。
そこに先のOLED_Shinonomeスケッチのdataフォルダ内の3つのファイルをコピーします。
shnm8x16r.bdf (半角東雲フォント) 29KB
shnmk16.bdf (全角ゴシック東雲フォント) 1,110KB
Utf8Sjis.tbl (私の自作、UTF8→Shift_JISコード変換テーブル) 236KB
6-4.BasicOTAをUSBシリアルでコンパイル書き込みする
先ほどのBasicOTAスケッチを普通にUSB経由でコンパイル書き込みします。
終ったら、Arduino IDE を再起動します。
その後、意外と大事なのは、先ほど保存したBasicOTAスケッチを開いてそこからSPIFFSファイルをアップロードするということです。
つまり、他のサンプルスケッチのdataフォルダではなぜかSPIFFSでアップロードできなかったんです。BasicOTAスケッチのdataフォルダからならば何故かできるんです。これはバグですかね?
ということで、BasicOTAスケッチを開くと以下のようにIDEのシリアルポートにご自分のルーターのIPが表示されていると思います。それをクリックして選択します。
6-5.OTAでSPIFFSファイルシステムアップロードする
では、OTA機能を使ってdataフォルダ内のファイルをSPIFFSアップロードします。
アップロードが開始されると、ESP-WROOM-02開発ボードのシリアル送信LEDが高速で点滅します。そうならなければ、設定を再度見直してください。
アップロードに成功するとこんな感じの画面になります。
USBシリアルのアップロードより格段に速いのが良いですね。
6-6.OLED_Shinonomeスケッチをコンパイル書き込みする
それでは、先ほどのOLED_Shinonomeスケッチをコンパイル書き込みします。
ここで注意していただきたいのは、そのままOTAでは書き込みできません。
このやろ!! と思いますよね・・・。
普通はそのまま書き込みできそうなものですが、これはシリアルUSBでしか書き込みできません。
シリアルを選択したら、コンパイル書き込みしてください。
こうするとOTA機能は使えなくなりますのでご了承ください。
書込みが終了してもOLEDに何も表示されない場合はBasicOTAスケッチウィンドウが開いていたりすると、そこのセットアップでシリアル通信命令があるので、Arduino IDEを全て閉じてください。
それでも表示されない場合は一旦USBを抜いて、再度挿してください。
OLEDが初期化されていない可能性があります。
いかがでしょうか?こんな感じで表示されればOKです。
かなり複雑な文字も鮮明ですね。ビックリマークも単なる線でなくスバラシイです。
OTAアップロード手順がかなりややこしいですね。
次のページで東雲フォントの解説や、サンプルスケッチの解説をしてます。
コメント
こんにちは。楽しく参考にさせてもらっています。
まずは全てを真似してみようということでESP-WROOM-02 開発ボードをいくつか購入しIDEのバージョンなど諸々をそろえてやってみました。
ところが、なんと、「6.SPIFFSファイルシステムとOTAでESP8266フラッシュにファイルをアップロードする」がUSB経由で成功しました。
で、確認したところ、ESP-WROOM-02 開発ボードのリビジョンによる違いがあるようです。
「Rev.2」と記されているESP-WROOM-02 開発ボードでは成功しますが、表記の無いものは失敗します。
リビジョンの違いが仕様面でどのような違いがあるのか把握できていませんが、ご参考まで。
隣人さん
当ブログをご覧いただきありがとうございます。
とても有益な情報ですね。
私の方でも、ハードがRev.2と刻印されているものはArduino IDE ver1.6.10で問題なくシリアルUSBでSPIFFSの3Mアップロードできました!!!
どうやらハードの問題だったようですね。
ライブラリの問題かと思って諦めてました。
近いうちに当ブログでもこの情報をアップしたいと思います。
貴重な情報ありがとうございました!!!
こんにちは。楽しく拝見しています。ESPr DeveloperのRev.3とIDE1.6.12で追加ボードマネージャをstagingにして全てUSB経由で実行したところ、上手くできましたのでお知らせ致します。因みに私はWindow7 ,64bitのOSで使っています。
Youtaka7さん
当ブログをご覧いただきありがとうございます。
これって、SPIFFSアップロードの件ということで良いのでしょうか?
SPIFFSならば、当方の環境では、staging版、stable版の両方ともダメでした。
環境は、Windows10, 64bit, です。
Arduino15フォルダを削除してもダメでした。
GPIO 0, 2, 15 を外してもダメでした。
シリアルの転送速度を115200, 921600 で試しましたがダメでした。
スケッチのアップロードは問題なくOKのですが・・・。
Win7 でOKならばWin10でもできると思うのですが、不思議ですね。
何が違うのかサッパリ分かりません。
とりあえず、一手間かかりますが、OTAでアップロードしています。
お世話になっています。もちろんSPIFFSの件です。他のRev.3でも上手くいきました。ただ、無印のものでは、SPIFFS Upload failedになり上手くいきません。なお、私はRev.2は持っていません。Revによる違いは良く分かりません。
Switch sience さんに聞いて見ようと思っています。
なるほど、Rev.3 でもうまくいったというのは不思議ですね。
ESPr Developer の回路図を見ると、トランジスタをうまく使って自動的にGPIO #0 のHIGH LOW を切り替えているようですが、私もそこはあまり詳しく解析していません。
今はOTAでアップロードできるので、無理して解析しなくてもイイかな・・・、と思ってました。
もし、スイッチサイエンスさんに聞いて何か分かりましたら、ぜひ教えていただけると幸いです。
情報ありがとうございます。