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
840
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スタックチャンで複数アプリを切り替えるテクニック
2023/7/29 スタックチャン お誕生日会 2023のLTで、M5Stack-SD-Updaterの概要を説明した時のスライドです。
Takao Akaki
July 31, 2023
More Decks by Takao Akaki
See All by Takao Akaki
2026.6.27 お誕生日会で配布された透明シェルを交換する際の注意点について
mongonta0716
0
100
2025.5.4 M5Stack スタックチャンの活用方法(2025最新版)
mongonta0716
0
890
スタックチャンに外部スピーカーを接続する方法
mongonta0716
0
680
2022.10.23 メタル #スタックチャン を作ってみた。
mongonta0716
0
2.4k
2022.09.23 メタルスタックチャンを作ってみた
mongonta0716
2
930
2022.7.23 スタックチャン誕生日会
mongonta0716
0
650
Other Decks in Programming
See All in Programming
はてなアカウント基盤 State of the Union
cockscomb
1
850
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
14
7.1k
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.4k
技術記事、 専門家としてのプログラマ、 言語化
mizchi
13
6.5k
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.8k
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
300
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.5k
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
13
6.3k
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
350k
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
190
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
240
Featured
See All Featured
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.6k
Agile that works and the tools we love
rasmusluckow
331
22k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
450
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
620
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
210
Measuring & Analyzing Core Web Vitals
bluesmoon
9
870
Crafting Experiences
bethany
1
190
Embracing the Ebb and Flow
colly
88
5.1k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
280
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してから書き込んでみましょう。
ご清聴ありがとうございました。