Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
スタックチャンで複数アプリを切り替えるテクニック
Search
Takao Akaki
July 31, 2023
Programming
0
570
スタックチャンで複数アプリを切り替えるテクニック
2023/7/29 スタックチャン お誕生日会 2023のLTで、M5Stack-SD-Updaterの概要を説明した時のスライドです。
Takao Akaki
July 31, 2023
Tweet
Share
More Decks by Takao Akaki
See All by Takao Akaki
スタックチャンに外部スピーカーを接続する方法
mongonta0716
0
190
2022.10.23 メタル #スタックチャン を作ってみた。
mongonta0716
0
1.8k
2022.09.23 メタルスタックチャンを作ってみた
mongonta0716
2
740
2022.7.23 スタックチャン誕生日会
mongonta0716
0
490
Other Decks in Programming
See All in Programming
PHPカンファレンス名古屋2025 タスク分解の試行錯誤〜レビュー負荷を下げるために〜
soichi
1
200
sappoRo.R #12 初心者セッション
kosugitti
0
250
WebDriver BiDiとは何なのか
yotahada3
1
140
color-scheme: light dark; を完全に理解する
uhyo
4
370
クリーンアーキテクチャから見る依存の向きの大切さ
shimabox
2
380
法律の脱レガシーに学ぶフロントエンド刷新
oguemon
5
740
Honoをフロントエンドで使う 3つのやり方
yusukebe
7
3.3k
Flutter × Firebase Genkit で加速する生成 AI アプリ開発
coborinai
0
160
Unity Android XR入門
sakutama_11
0
160
一休.com のログイン体験を支える技術 〜Web Components x Vue.js 活用事例と最適化について〜
atsumim
0
500
DROBEの生成AI活用事例 with AWS
ippey
0
130
Linux && Docker 研修/Linux && Docker training
forrep
24
4.5k
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
Practical Orchestrator
shlominoach
186
10k
Why Our Code Smells
bkeepers
PRO
336
57k
How GitHub (no longer) Works
holman
314
140k
The World Runs on Bad Software
bkeepers
PRO
67
11k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Bash Introduction
62gerente
611
210k
Optimizing for Happiness
mojombo
376
70k
Statistics for Hackers
jakevdp
797
220k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Transcript
スタックチャンで複数アプリを 切り替えるテクニック M5Stack-SD-Updaterの使い方 Arduino-Frameworkで利用できます。 5分なので概要だけです。 2023/7/29 タカオ
自己紹介 名前 タカオ(Twitter: @mongonta555) 職業 スタックチャン職人 M5Stackのドキュメント要員
スタックチャンと出会って2年で26人になりました。 BOOTHでスタックチャン タカオ版組み立てキットを頒布しています。 (見送った人数は 2023/7/29現在 579人) https://mongonta.booth.pm
ESP32上で複数のアプリを切り替えて使うことが 可能になります。 スタックチャンに限りません。 ArduinoFrameworkで利用できます。 相互に切り替えを行うには、各アプリにSD- Updaterの組み込みが必要です。 M5Stack-SD-Updaterとは https://github.com/tobozo/M5Stack-SD-Updater Tobozo Tagada(@TobozoTagada)氏が公開しているArduinoライブラリです。
M5Stack-SD-Updaterを使うメリット 1つのアプリで複数の機能を盛り込んだ場合にありがちな、ヒープメモリ不足 を気にしなくて済む。 複数の機能を同一コード内に持たずに済むので、複雑にならない。 M5Stack-SD-Updaterを使うデメリット SDやSPIFFSからバイナリを読み込むので切り替えには時間がかかる。 →
2つのアプリの切り替えであれば速くするテクニックもある。 プログラムを変更した場合、生成したbinも置き換える必要がある。 → あらかじめ、プログラムにbinを保存する機能を盛り込んでおくと楽
仕組み 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)
簡単に言うと、、、 SDカードやSPIFFS(M5Stack内蔵Flashメ モリの一部)に書き込んだbinファイル を相互に切り替えることが可能です。 AIスタックチャン センサー値の表示 アプリ Bluetoothスピーカー スタックチャン AIStackchan.bin
BTStackchan.bin Sensor.bin ランチャーアプリ(menu.bin) AIスタックチャン BTSPK センサー アプリ
Binの用意の仕方 1.ArduinoIDEでバイナリビルド 2.VSCode+PlatformIOからコピー 3.アプリから書き込む方法
Binの用意の仕方① ArduinoIDEでバイナリコンパイル メニューから「スケッチ」→「コンパイル済みバイナリをエクスポート」 を選ぶとbin形式のファイルを生成することができます。 (Arduino1.8.xでは「コンパイルしたバイナリを出力」)
Binの用意の仕方② VSCode+PlatformIOからコピー Buildを実行すると、 .pio/build/(選択したenv名のフォルダ) の下にfirmware.binとファイルができます。 そのファイルをコピーして名前を変更して ください。
Binの用意の仕方③ アプリに書き込み機能を組み込む 多分これが一番楽です。 下記のようなコードをアプリに組み込みます。 例では、BtnAをダブルクリックをするとSPIFFSに書き込みます。
M5Stack-SD-Updaterの注意事項 binのファイル名は半角英数字のみで短めに。 あまり長すぎると、エラーが出て読み込めません。 SPIFFSを使う場合はフォーマットできてないとエラーになる場合がある。 その場合は一度Eraseしてから書き込んでみましょう。
ご清聴ありがとうございました。