2023年11月11日

Web HID API

以前にUSBシリアルI2C変換基板とWebシリアルAPIを用いたツールを紹介しました。今回はWebシリアルAPIを応用してWeb HID APIを使用したツールを開発してみました。

Web HID APIはキーボードやマウス、ゲームパッド等のUSBヒューマンインタフェースと接続するためのAPIです。残念ならが、WebシリアルAPI同様に対応したブラウザはEdgeもしくはChromeのみ対応となっており、23年11月時点ではFirefoxやSafariは対応していません。Web HID APIはUSBヒューマンインタフェースと接続するためのAPIですが、USB-SPIコンバータ、MCP2210USB-I2CコンバータMCP2221等のHID APIに対応したUSBデバイスとWeb HID APIを介して通信することが可能です。

今回はUSB-SPIコンバータ、MCP2210とWeb HID APIでブラウザを介して通信するツールを実装してみました。Web HID APIの仕様に従って下記のようにMCP2210のベンダID、プロダクトIDからnavigator.hid.requestDeviceを実行するとデバイス選択画面が表示され、デバイスを選択できるようになります。


const vendor_id = 0x04D8;//Microchip Technology Inc.
const product_id = 0x00DE;//MCP2210 USB-SPI
[device] = await navigator.hid.requestDevice(
{ filters: [{'vendorId': vendor_id, 'productId': product_id}] }
)

WebHidApi_MCP2210_list.png


デバイス選択後にデバイスを下記のようにOpenし、受信データがあった際にイベント処理を実行するため、addEventListenerinputreportを登録します。
const resOpen = await device.open();
await device.addEventListener("inputreport", handleInputReport);

逆にデータをデバイス側に送信する場合はsendReportを用いてデータを送信します。
await device.sendReport(0, sendArry);


デバイス接続、送受信の他に一通りの機能を実装したツールのリンクはこちらです。MCP2210をお持ちであればブラウザを介して簡単に動作確認が可能です。すべてのコードはhtmlファイル内にまとめていますので、ページ内の右クリックでコードの表示から実装を確認することが可能です。

試しにWeb USB SPI ToolとMCP2210、NOR-SPIフラッシュメモリW25Q128JVを使ってフラッシュメモリの固有コードの読み出しをテストしてみました。コマンド0x90を実行すると0xEF、0x17とW25Q128JVの固有コードを読み出すことができました。

WebHidApi_MCP2210.png

今回はWeb HID APIとMCP2210を用いてフラッシュメモリと通信してみました。今後はWeb HID APIを用いた応用的な機能を開発して順次公開したいと思います。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 組込ソフト | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック