Upgrade to Pro — share decks privately, control downloads, hide ads and more …

スタックチャンで複数アプリを切り替えるテクニック

 スタックチャンで複数アプリを切り替えるテクニック

2023/7/29 スタックチャン お誕生日会 2023のLTで、M5Stack-SD-Updaterの概要を説明した時のスライドです。

Takao Akaki

July 31, 2023
Tweet

More Decks by Takao Akaki

Other Decks in Programming

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  5. 仕組み
     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)

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide