M5 AtomS3UにWebUSB経由で設定値を保存する
以前に書いたM5 AtomS3UをUSBフラッシュメモリとして認識させて設定ファイルを保存するのWebUSB版となります。
使用するのは今回もM5 AtomS3Uです。
なお、今回はWebUSBを使うのでPCに挿してもUSBフラッシュメモリのようにはなりません。
仕様
- M5 AtomS3U
- PC - Windows 10 / 11, Mac ※LinuxではWebUSBがうまく動きませんでした。。。
- ネットワーク - PCがインターネットに接続されている必要があります
コンパイル方法
-
ソースコードはgithubに置いてあります。
git clone
してからcloneしたディレクトリに入り、git reset --hard 916a26e806f43db1da689c01a497b7e9b14cdf5f3
で当該コミット(916a26e806f43db1da689c01a497b7e9b14cdf5f3)に移動してください。またVS CodeにPlatformIOをインストールしておいてください。 -
PlatformIOでcloneしたレポジトリ内にある
mscram_and_spiffs_webusb
ディレクトリを開きます。 -
依存ライブラリのインストールなどで数分待つ必要があるかもしれません
-
F1
キーを押し、PlatformIO: Build
を実行してコンパイルします。 -
M5AtomS3UをPCに接続して、リセットボタンを緑色のLEDが光るまで長押しして離し、PlatformIOで
F1
キーを押し、PlatformIO: Upload
を実行してコンパイルしたソースをアップロードします。
※PlatformIOの細かい操作方法は公式のドキュメントなどを参照してください。
使い方
-
M5AtomS3Uの中央のボタンを押したままPC(Windows10 / 11)に接続します
-
しばらく待つと下記のようなポップアップが出ます。※ポップアップが出ない場合はTinyUSB - WebUSB Serial Exampleを直接開いてみてください。
-
クリックするとtinyusbのTinyUSB - WebUSB Serial Exampleというページを開きます。なお、PCにはEdgeかChromeが入っている必要があります。下記のようなページが開きます。右側のReceiver欄に
WebUSB interface connected !!
と表示されて入ればOKです。 -
現在の設定値を確認します。左側のSenderに
get settings
と打ち込んでEnter
を叩いてください。Receiver側にJSONの設定値が出ます。 -
この例で使うキーは
color
もしくはcolors
となります。 -
colors
は配列になっていて値が2つ入っていますが、green
という値を追加してみます。push
と打ってEnter
、colors
と打ってEnter
、green
と打ってEnter
でcolors
配列にgreen
が追加されました。 -
配列から値を取り除く場合は
pop
と打ってEnter
、colors
と打ってEnter
で配列の最後の値が取り除かれます。 -
配列ではなくて
color
文字列を追加もしくは編集したい場合はset
と打ってEnter
、color
と打ってEnter
、red
と打ってEnter
で、color
にred
という値が入ります。 -
削除したいときは
remove
と打ってEnter
、color
と打ってEnter
で、color
が消えます。 -
再度PCに接続、中央ボタンを押すと設定した色に光ります。例では
color
とcolors
が設定されていて、その場合はcolors
が優先されます。ボタンを押すとorange
に光り、次に押すとcyan
となり、もう一度押すと消灯します。
設定値について
今回の例ではcolor
とcolors
キーしか使用しませんが、WebUSBの画面からはほかのキーも追加、削除できますので色々試してみてください。
また、上記のTinyUSB - WebUSB Serial Exampleでreset
と打ってEnter
で設定値を初期値に戻せます。
今後
設定値をUSBフラッシュメモリ的に保存するUSB Key Senderの兄弟プロジェクトとして作成したのですが、キー入力をPCに送る部分がうまく作れず色を変更するだけのものになってしまいました。
また、この例は本来はLinuxでも動くようにしたかったのですがそれもうまくいかずあきらめました。
「PCとUSB接続する」というのは最初想定していたものよりかなり難易度が高かったです。おそらく私の技術力が不足しているのが原因だとは思うのですが1年近く開発していたのでひとまずUSBとPCの接続についての探求は一休みします。
更新ログ
- 2024/8/18
reset
機能を追加したので追記