ATmega 32U4が搭載されたArudinoはマウスやキーボード、ゲームパッドなどUSBデバイスとしてPCなどのホストに認識させることが出来ます。
またUSBデバイスにはVendor ID(企業固有のID)とProduct ID(製品固有のID)というものが設定されており、ホスト側ではこの値を参照することで特定のデバイスが接続されているかどうかを判定することが出来ます。
今回はVS Codeでのマイコン開発でよく使われるplatform.io環境でこのVID, PIDを変更する方法を紹介します。
1. VID, PIDを設定するPythonファイルを作成する
platform.iniと同じ階層に、VIDとPIDを設定するsetId.py(名前は何でも大丈夫)を作成します。
ProjectDirectory ├─lib ├─src ├─test │ .gitignore │ platform.ini │ setId.py
setId.pyに以下のコードを追加します。
Import("env")
print(env.Dump())
board_config = env.BoardConfig()
# should be array of VID:PID pairs
board_config.update("build.hwids", [
["0xffff", "0x1111"] # VID=0xffff, PID=0x1111の場合
])
2. setId.pyを読み込むようにplatform.iniを修正する
[env:arduboy] platform = atmelavr board = arduboy build_flags = -D USB_SERIAL_HID <-- 追加 framework = arduino extra_scripts = pre:setId.py <-- 追加
※ Arduboy環境で開発をおこなっているため上記のような記述ですが、使用している環境に合わせて適宜変更してください。
3. 書き込みを行い、変更を反映する
手順1,2が完了したらArduinoにプログラムを書き込めば変更が反映されます。
VIDとPIDはplatform.io上のDevicesから確認することができます。
ArduinoのIDEを使用している場合はboards.txtという設定ファイルを編集することでVIDとPIDを設定することが出来ますが、platform.ioではプロジェクトごとにVID,PIDを管理することができるので結構便利ではないでしょうか。
参考ページ
https://community.platformio.org/t/changing-usb-device-vid-pid/3986/23
