Skip to content

v0.3.2 — Touch Toggle and Scroll Repeat

Latest

Choose a tag to compare

@timit3-github timit3-github released this 14 Oct 15:57

M5Stack StopWatchのR1互換リモコンに、タッチの有効・無効切り替えとdown・タッチの保持中リピートを追加しました。
タッチの設定は電源を切った後も保持します。電源OFF/ON後にバイブが使えなくなる事例に対し、初期化の再試行を追加しました。

プロジェクト版は 0.3.2 です。アプリへ通知する R1_APP_VERSION=2.9.9.9999 は互換用の文字列で、
純正R1ファームウェアを搭載している意味ではありません。

主な変更

  • G1/G2を100ms以内に押し、両方を500ms保持してタッチの有効・無効を切り替え。
  • 無効化時はバイブ1回、有効化時は2回。設定はNVSへ保存し、保存完了時の追加バイブは行わない。
  • 同時押し候補を認めたら通常のボタン・タッチ入力を取り消し、両方を離すまで再切り替えと個別入力を抑止。
  • タッチ無効中はI2C取得を停止。無操作60秒の操作待機からボタンで復帰しても、手動の無効状態を保持。
  • G2短押し後300ms以内に再押下し200ms保持するとdownを送り、そのまま保持中は500msごとにdownをリピート。
  • 上下スワイプ後に接触を保持すると、最初の方向で500msごとにup/downをリピート。方向は指を離すまで固定。
  • 解放、タッチ取得異常、G2切断、同時押しでリピートと送信待ちを取り消し、遅れた回数をまとめて送らない。
  • バイブ初期化を別タスクで最大3回試行。失敗後も処理を維持し、次のタッチ切り替え時に再試行。

G2短押しのdownと通常長押しのupリピート、G1とタッチの各タップ操作は維持しています。
省電力設定、BLE/GATT配置、互換用通知文字列はv0.3.1と同じです。M5Unifiedと画面描画は使用しません。

検証結果

作者実機の環境はM5Stack StopWatch、ESP-IDF 5.5.1、Evenアプリ2.3.2、G2ファームウェア2.3.2.14です。

同じ動作コードの開発版で、同時押しによるタッチ切り替え、バイブ、NVSによる電源OFF/ON後の状態保持、
ボタンとスワイプのリピートを確認しました。バイブの初期化に再試行を追加した後、電源OFF/ON後もバイブが動作することを確認しました。
本リリースはこの動作コードを使い、プロジェクト版を0.3.2へ更新しています。

wire、legacy、inputs、chord、haptic、battery、touch、idle、usb_powerの全ホストテストが通過しました。
WSL2上のESP-IDF 5.5.1でESP32-S3ビルドも成功しています。
ホストテストは実機の電気的動作や長期安定性を検証するものではありません。

詳細は検証範囲と
操作・実機確認手順を参照してください。

既知の制限

  • 追加機能を含む長時間稼働、消費電力、電源OFF/ONを多数回繰り返す試験は未確認です。
  • v0.3.1の約21時間の稼働結果は、追加機能導入前の試験結果です。
  • 再起動後のG2再接続に数分かかる場合があります。原因と長期安定性は未確定です。
  • 待機中のタッチでは復帰しません。有効化・復帰時に接触していた指は、一度離してから操作してください。
  • タッチ取得停止はコントローラーの電源遮断ではありません。
  • バッテリー残量は電圧推定です。EvenアプリとG2の残量表示は確認済みですが、残量精度は未確認、充電中・満充電状態の判定は未実装です。
  • 純正R1とiPhoneアプリの開発環境は使用していません。他のアプリ/G2バージョンとの互換性は未検証です。

配布と更新

ソースのみを配布します。ESP-IDF 5.5.1でビルドしてください。

idf.py -B build/release -D SDKCONFIG=build/release/sdkconfig -DIDF_TARGET=esp32s3 build
idf.py -B build/release -D SDKCONFIG=build/release/sdkconfig -p /dev/ttyACM0 flash
idf.py -B build/release -D SDKCONFIG=build/release/sdkconfig -p /dev/ttyACM0 monitor

ポートは実機に合わせて変更します。WindowsではCOM5などです。
v0.3.1のビルド設定は引き継げます。v0.3.0以前の設定には省電力項目が不足する場合があるため、
ビルド手順に従って新規設定を作成してください。
通常の更新でNVS消去やペアリング解除は不要です。

リピート周期と入力時間はinclude/r1_config.hで変更できます。
R1_NAV_BUTTON_REPEAT_MSまたはR1_TOUCH_REPEAT_MSを0にすると、それぞれのリピートを無効にできます。

独自部分はBSL-1.0、MIT参照実装に基づくファイルはBSL-1.0 AND MITです。
LICENSE、NOTICE.md、LICENSES/をソースとともに保持してください。