Slide 1

Slide 1 text

スタックチャンで複数アプリを 切り替えるテクニック M5Stack-SD-Updaterの使い方 Arduino-Frameworkで利用できます。 5分なので概要だけです。 2023/7/29 タカオ

Slide 2

Slide 2 text

自己紹介  名前 タカオ(Twitter: @mongonta555)  職業 スタックチャン職人 M5Stackのドキュメント要員  スタックチャンと出会って2年で26人になりました。  BOOTHでスタックチャン タカオ版組み立てキットを頒布しています。 (見送った人数は 2023/7/29現在 579人) https://mongonta.booth.pm

Slide 3

Slide 3 text

ESP32上で複数のアプリを切り替えて使うことが 可能になります。 スタックチャンに限りません。 ArduinoFrameworkで利用できます。 相互に切り替えを行うには、各アプリにSD- Updaterの組み込みが必要です。 M5Stack-SD-Updaterとは https://github.com/tobozo/M5Stack-SD-Updater Tobozo Tagada(@TobozoTagada)氏が公開しているArduinoライブラリです。

Slide 4

Slide 4 text

M5Stack-SD-Updaterを使うメリット  1つのアプリで複数の機能を盛り込んだ場合にありがちな、ヒープメモリ不足 を気にしなくて済む。  複数の機能を同一コード内に持たずに済むので、複雑にならない。 M5Stack-SD-Updaterを使うデメリット  SDやSPIFFSからバイナリを読み込むので切り替えには時間がかかる。 → 2つのアプリの切り替えであれば速くするテクニックもある。  プログラムを変更した場合、生成したbinも置き換える必要がある。 → あらかじめ、プログラムにbinを保存する機能を盛り込んでおくと楽

Slide 5

Slide 5 text

仕組み  ESP32(S3等含む)はOTA(Over The Air)という仕組みを持っていて、ファームウェア(アプリ)を WiFi経由で書き換えることが可能です。  その仕組みを利用してSPIFFSやSD上にあるbinファイルをFlashに読み込んで 動作しているファームウェア(アプリ)を切り替えるという仕組みです。  仕組み上、app0とapp1のそれそれのサイズを超えるアプリは使用することができません。 Name 16MB(Core/2/S3等) 8MB(AtomS3等) 4MB(Atom,StickC等) build_partition default_16MB.csv default_8MB.csv default.csv nvs 5,000 5,000 5,000 otadata 2,000 2,000 2,000 app0 640,000 330,000 140,000 app1 640,000 330,000 140,000 spiffs 360,000 180,000 160,000 coredump 10,000 10,000 10,000 ESP32のFlashメモリのパーティションレイアウト(単位:byte)

Slide 6

Slide 6 text

簡単に言うと、、、 SDカードやSPIFFS(M5Stack内蔵Flashメ モリの一部)に書き込んだbinファイル を相互に切り替えることが可能です。 AIスタックチャン センサー値の表示 アプリ Bluetoothスピーカー スタックチャン AIStackchan.bin BTStackchan.bin Sensor.bin ランチャーアプリ(menu.bin) AIスタックチャン BTSPK センサー アプリ

Slide 7

Slide 7 text

Binの用意の仕方 1.ArduinoIDEでバイナリビルド 2.VSCode+PlatformIOからコピー 3.アプリから書き込む方法

Slide 8

Slide 8 text

Binの用意の仕方① ArduinoIDEでバイナリコンパイル メニューから「スケッチ」→「コンパイル済みバイナリをエクスポート」 を選ぶとbin形式のファイルを生成することができます。 (Arduino1.8.xでは「コンパイルしたバイナリを出力」)

Slide 9

Slide 9 text

Binの用意の仕方② VSCode+PlatformIOからコピー  Buildを実行すると、 .pio/build/(選択したenv名のフォルダ) の下にfirmware.binとファイルができます。 そのファイルをコピーして名前を変更して ください。

Slide 10

Slide 10 text

Binの用意の仕方③ アプリに書き込み機能を組み込む  多分これが一番楽です。  下記のようなコードをアプリに組み込みます。 例では、BtnAをダブルクリックをするとSPIFFSに書き込みます。

Slide 11

Slide 11 text

M5Stack-SD-Updaterの注意事項  binのファイル名は半角英数字のみで短めに。 あまり長すぎると、エラーが出て読み込めません。  SPIFFSを使う場合はフォーマットできてないとエラーになる場合がある。 その場合は一度Eraseしてから書き込んでみましょう。

Slide 12

Slide 12 text

ご清聴ありがとうございました。