Skip to content

Releases: timit3-github/even-r1-m5stopwatch

v0.3.2 — Touch Toggle and Scroll Repeat

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/をソースとともに保持してください。

v0.3.1 — Power Saving and USB Serial Stability

Choose a tag to compare

@timit3-github timit3-github released this 14 Oct 14:21

M5Stack StopWatchのR1互換リモコンに省電力動作を追加しました。
無操作60秒後にタッチ取得を停止し、ボタンで操作を再開します。USB接続中のシリアルを維持するため、
PM1の入力電圧でLight-sleepを抑止し、USB抜去後は省電力へ戻ります。

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

主な変更

  • DFS 40~160MHz、Bluetooth Modem-sleep、自動Light-sleepを採用。
  • Evenアプリの更新要求を回避するため、R1_APP_VERSIONの既定値を動作確認済みの2.9.9.9999へ変更。
  • 無操作60秒で操作待機へ移行。最初のG1/G2押下で復帰と操作を兼ね、タッチ取得を再開。
  • 待機中のホスト周期処理を1秒、バッテリー電圧取得を30秒へ変更。VINは1秒周期で取得。
  • USB接続中はVINによるNO_LIGHT_SLEEPロックを保持し、抜去確認後に解除。再接続時は再取得。
  • USBコンソールの受信を割り込み方式へ変更し、入力待ちのポーリングを削減。
  • 検証モード・切り替えdefine・VIN検証履歴を削除し、検証済みの動作設定を通常動作に固定。
  • statusに電源・VIN状態と接続診断を追加。pmで電源管理ロックと滞在時間を表示。

通常のG1/G2・タッチ操作と500ms周期のup繰り返し、BLE/GATT配置は維持しています。
コンソール入力はEnterで実行します。起動時のstatus/auto入力は不要です。

検証結果

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

同じ設定のリリース前構成で、無操作60秒後のタッチ停止、ボタン復帰、待機からの最初の二度押しを確認しました。
USB接続中の10分以上の待機で自然切断がなく、抜去後のLight-sleepと再接続時のロック再取得を確認しました。

Evenアプリの低電力モードOFF、G2を途中で充電しない長時間試験では、開始・終了のuptime差で約21時間5分の稼働を確認しました。
G2切断・NimBLEホストリセットは0で、終了時も再接続操作なしでボタン・タッチからG2を操作できました。
試験区間のLight-sleep滞在率は約72%でした。全リンク切断は4回、待機復帰は6回増加しており、完全無操作の試験とは区別します。
開始・終了時のUSB接続での取得時間を含み、稼働時間を秒単位で測定した結果ではありません。

電圧推定残量のEvenアプリ表示と、G2ダッシュボードの電池アイコンが残量に応じて変わることを確認しました。
残量精度、充電中・満充電状態の判定は未確認・未実装です。
実機試験のR1_APP_VERSIONは既定値と同じ2.9.9.9999です。通知文字列が純正R1の現行版より古い場合は、アプリが更新を求めることがあります。
通知文字列の調整方法はREADMEを参照してください。

公開用コードでwire、legacy、inputs、battery、touch、idle、usb_powerの全ホストテストが通過しました。
WSL2上のESP-IDF 5.5.1で、新規sdkconfigからのESP32-S3ビルドも成功しています。
検証用コードを整理したv0.3.1そのものの実機確認は未実施です。
詳細は検証範囲と
省電力動作を参照してください。

既知の制限

  • 再起動後、G2の再接続に数分かかる事例があります。原因と長期安定性は未確定です。
  • 完全無操作での長時間試験、復帰直後の全操作、繰り返し接続と長期安定性は未確認です。
  • タッチ取得停止はタッチコントローラーの電源遮断ではありません。周辺回路の消費電力は残ります。
  • バッテリー残量は電圧推定です。平均電流や残り稼働時間の実測値ではありません。
  • ディスプレイ描画、生体センサー、DFUは未実装です。
  • 純正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などです。
旧sdkconfigには必要な省電力設定が不足する場合があります。build/release/sdkconfigが既存の場合も、
ビルドディレクトリとSDKCONFIGを同じ新しい名前に変更して設定を生成してください。
通常の更新でNVS消去やペアリング解除は不要です。
ビルド手順を参照してください。

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

v0.3.0 — Even R1 Compatible Remote for M5Stack StopWatch

Choose a tag to compare

@timit3-github timit3-github released this 09 Oct 19:26

リリース日: 2026-10-10。

ESP32-S3をiPhoneのEvenアプリへR1互換リモコンとして登録し、Even G2を操作する非公式プロジェクトです。
純正R1ファームウェアは含みません。プロジェクト版は0.3.0、アプリへ通知する互換用文字列は
R1_APP_VERSION=2.3.2.0007です。

0.3.0の変更点

  • 初回公開に向けてライセンス、文書、配布構成を整備。
  • プロジェクト版を0.3.0へ更新。R1_APP_VERSIONは2.3.2.0007を維持。
  • 操作処理とBLE/GATT配置は0.2.9から変更なし。

0.2.9から引き継ぐ機能

  • CST820Bによる画面の任意位置での単タップ・二度タップ・長押し・short→long。
  • 上下60px以上かつ横変位以上のスワイプでup/downを1接触につき1回送信。
    20pxを超える移動でタップ候補を取り消します。
  • M5IOE1によるタッチリセットと、PM1・タッチの共有I2Cバスへの対応。
  • 公開用文書とライセンス表示の整備。旧パッチ・版別文書・古いバイナリを現在の配布ツリーから除去。
    公開用整理による操作処理・BLE/GATT配置の変更はありません。

確認環境と動作

M5Stack StopWatch、ESP-IDF 5.5.1、Evenアプリ2.3.2、G2ファームウェア2.3.2.14。
利用者実機でペアリング、G2操作、全コンソール操作、G1の各タップ操作、G2短押しdown・長押しup・
保持中500ms周期のup繰り返し、各タッチ操作と上下スワイプが確認されています。
コンソールコマンドはEnterで実行します。起動時のstatus/auto入力は不要です。

ホストテストはwire・legacy・inputs・battery・touchの全項目が通過しています。
公開用ソースはWSL2上のESP-IDF 5.5.1でESP32-S3向けビルドも成功しています。
検証範囲はdocs/VALIDATION.mdを参照してください。

既知の制限

  • 再起動後、G2の再接続に数分かかる事例があります。遅延原因と長期安定性は未確定です。
  • バッテリー残量は電圧から推定してアプリ/G2へ通知します。実機での残量表示は未確認です。
  • 充電中・満充電状態の判定、ディスプレイ描画、生体センサー、省電力・スリープ、DFUは未実装です。
  • 純正R1は使用しておらず、iPhoneアプリの開発環境も使用していません。
    他のアプリ/G2バージョンとの互換性は未検証です。

配布とビルド

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

idf.py set-target esp32s3
idf.py build
idf.py -p COM5 flash
idf.py -p COM5 monitor

COM5は実機のポートへ変更します。既存sdkconfigから更新する場合は
docs/BUILD.mdを参照してください。
LICENSE、NOTICE.md、LICENSES/をソースとともに保持してください。
独自部分はBSL-1.0、MIT参照実装に基づくファイルはBSL-1.0 AND MITです。