For USB Keyboard
MCUとして、ESP32-S3を使っているM5StampS3を利用しました。
ESP32-S3にはUSBデバイス機能があり、USBキーボードとして振る舞うことができます。ファームウェアにはUSBキーボードがさくっと実装できるCircuitPythonを利用しました。
スイッチ自体は、ダイオードを使ったマトリックススイッチの回路を組んであり、さらにRGB LEDをつけてあります。RGB LEDがあると、スイッチの機能が色で識別できて便利です。
For USB Mouse
私は、ポインターデバイスとして、小さなジョイスティックにTrackPointのキャップを被せたデバイスを開発しています(コードネーム StickPoint)。これは同じI2C接続のポインターデバイスPIM447と同じプロトコルで、ポインター機能を提供するものになっています。
SparrowTVにはI2Cポインターモジュール用のGroveポートを内部にもっています。こちらに接続することで、ポインターとして利用できます。
TVリモコン
M5Stackの赤外線送受信ユニットを接続して、TVリモコンとして機能するようにしました。CircuitPythonにもパルスを制御する機能(pulseio)があり、こちらを利用することで簡単に実現できました。
ファームウェア
CircuitPythonを使って、ボタン操作から、USBキーボード、マウス、TVリモコンとして振る舞うようにコードを実装しました。CircuitPythonを使うと容易に実装できました。 ファームウェアのコード自体はGitHub上で公開しています。
https://github.com/74th/tv-side-keyboard-SparrowTV/tree/main/firmware-circuitpython
基板実装面
IRモジュールと、I2Cポインターモジュール用の2つのGroveポートを持つのが特徴です!
使用部品
- M5Stamp S3 https://www.switch-science.com/products/8777
- M5Stack用赤外線送受信ユニット https://www.switch-science.com/products/5699
- RGBLED SK6812MINI-E https://akizukidenshi.com/catalog/g/gI-15478/
- アナログジョイスティック https://akizukidenshi.com/catalog/g/gP-04048/
- ポインターデバイスMCU CH32V003J4M6 https://akizukidenshi.com/catalog/g/gI-18062/