IoTLT vol.76 @YouTube https://iotlt.connpass.com/event/213454/
@mascii_kIoTLT vol.76 @YouTubeWebHID APIでリングコンのセンサー値を取得してみた
View Slide
自己紹介ますきー (@mascii_k)(株)ビザスク フロントエンドエンジニア前回登壇はIoTLT vol.33 (2017/11/16)
デモ
デモ● 既にデモは始まっている● ブラウザのコンソールでJSを実行し、リングコンでスライドを操作をしている
デモのコード● Zenn, GitHubで公開中 https://zenn.dev/mascii/articles/ring-con-with-web-hidhttps://github.com/mascii/demo-of-ring-con-with-web-hid
どのように実現したか?
❌ Web Bluetooth API❌ Gamepad API○ ボタン・スティックの入力のみ取得可✅ WebHID API○ Chrome 89 から利用可○ デバイスのすべての機能を利用できる(※ HIDのコマンドがわかっていれば)ブラウザAPIの選定
HIDコマンドわからない問題● Joy-Con(単体)のHIDコマンドは2017年から調べられていた○ WebHID APIでも使える● リングコンを動かすためのHIDコマンドは長い間わかっていなかった…
2021年、リングコンを操った者が現れる● Windows向けの実装を発見○ リングコンの動き→スティックの動きに変換できるもの○ ソースコード(Visual C++)と実行バイナリが配布されていた
WebHID APIでの実装に移植開始● まずは「Lチカ」でWebHID APIに慣れる
Chromeでセンサー値を受信する● Ring-Con Driverのコマンドをトリガーに、Chromeでのセンサー値の受信に成功した
Windowsなしでも動くようにする● デバッグログとC++のソースコードを頼りに、WebHID APIでの実装に移植ができた
IoTに必要なデバッグ術
IoTに必要なデバッグ術● Lチカは慣れるためにマスト● 誰も試していない組み合わせに挑戦するとき○ 確実に動く組み合わせを見つけテストする■ 初期不良の可能性を排除できる■ 正しく動くときの状態を把握できる○ 徐々に理想像に近づけていく■ 一度に多くの変更をしない■ 飛躍しない
IoTに必要なデバッグ術ESP32だと動かない!センサーのライブラリを修正Arduino Unoなら動いた!https://qiita.com/mascii/items/4859767b5204ff70c2c9ESP32でも動いた!
まとめ
まとめ● WebHID APIは、リングコンのようなニッチなHIDデバイスをWeb上で利用可能にする● 誰も試していない組み合わせが動くと楽しい○ 必要なのは着実さであることを再確認