M5Cardputer 単体でプログラムの入れ替え

M5Stackでは、らびやんさんLovyanLaunchertobozo さんの M5Stack-SD-Updater を用いることで、端末単体でプログラムファイルの入れ替えを行うことができます。


キーボード&液晶一体型の小型端末 M5Cardputer にこそ、必須のツールだと思うのですが、現状では上記ツールは M5Cardputer 対応されていません。

それらが対応されるまでのつなぎとして、最低限の機能(アプリケーションバイナリファイルを選択して再起動)だけができるプログラムを書いてみました。

プログラムはこちら。

CardputerSimpleLaucher
https://github.com/shikarunochi/CardputerSimpleLaucher

VSCode + PlatformIOでビルドして出来上がった .pio\build\m5cardputer\firmware.bin を、menu.bin 等の任意の名前に変更して、microSDカードのルートにコピーしてください。

動作の様子です。

このメニューを呼び出したいプログラム側では、最初のところで以下のように記載してください。

#include <M5Cardputer.h>
#include <SD.h>
#include <M5StackUpdater.h>
SPIClass SPI2;
void setup() {
    auto cfg = M5.config();
    M5Cardputer.begin(cfg, true);
    SPI2.begin(
      M5.getPin(m5::pin_name_t::sd_spi_sclk),
      M5.getPin(m5::pin_name_t::sd_spi_miso),
      M5.getPin(m5::pin_name_t::sd_spi_mosi),
      M5.getPin(m5::pin_name_t::sd_spi_ss)
    );
    while (false == SD.begin(M5.getPin(m5::pin_name_t::sd_spi_ss),SPI2)) {
      delay(500);
    }
    M5Cardputer.update();
    
    if (M5Cardputer.Keyboard.isKeyPressed('a')) {
      updateFromFS(SD,"/menu.bin"); //"/menu.bin" 以外のファイル名も指定可能です。ファイル名指定しない場合は"/menu.bin"が読み込まれます。
      ESP.restart();
    }
    :
 (以下、アプリ側のsetupプログラムを続ける)
}

[A]を押しながらリセットボタンを押すと、”/menu.bin” を読み込みます。読み込み画面が出るまで[A]を押したままにしておいてください。
起動すると microSD のルートに存在する *.bin ファイルの一覧が表示されますので、カーソルキー上下(Fn を押す必要はないです。[;]と[.]です)で、ファイル選択し、Enterで選択してください。bin ファイルをアプリケーションとして書き込みした後、端末再起動を行います。

最初は、トリガーを右上の [G0] ボタンにしようと思ってたのですが、[G0] + [リセット] だとダウンロードモードに入ってしまうのでした…。

個人用プログラムであれば、[A] を押しながらリセットでプログラムAを起動、[B]を押しながらリセットでプログラムBを起動、みたいな決めうちで作っちゃうのも便利かもしれないですね。

“M5Cardputer 単体でプログラムの入れ替え” への2件の返信

  1. This is amazing work! You should join the Cardputer sub-reddit. We could use your expertise! Thank you very much for your hard work on this project.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です