台風が近くまで接近しているので、非常に眠いので眠気覚ましに。
世の中は任天堂スイッチの世界なので、Joy-Con で操作することが多いと思うのですが、Joy-Con はちょっと高い。正規版だと 8,000円位しますね。互換機?(バイブレータがないらしい)の場合だと、もうちょっと安いみたいなのですが、まあ、手元に Wii コントローラがあるし、試しにつなげてみようというところです。
以前、ラズパイに Wii コントローラをつなげようとしたとき、古い Wii リモコンだとうまくいくのですが、新しめの Wii リモコンプラスだとペアリングがうまくいきません。Bluetooth 側のプログラムを改変すれば、接続はできるのですが、それがいいのかどうか不明だったので放置状態でした。
bluetoothctl と xwiimote を使う
ラズパイ3 に xwiimote を入れて使います。
ラズパイ3 の Raspbian には既に bluetooth に接続するための bluetoothctl があります。
sudo apt install bluez
した後で
bluetoothctl
を実行します。プロンプトが出るので、
power on
scan on
で接続先の Bluetooth 機器を探します。
このときに、Wii リモコンの裏側の赤いボタンを押して、接続待ち状態にしておくと、Nintendo RVL-CNT-01-TR のデバイス名が出てきます。ここに出てくる ID を使って、
pair 9C:E6:35:04:51:4A
connect 9C:E6:35:04:51:4A
trust 9C:E6:35:04:51:4A
して接続をします。
これで、Bluetooth 接続状態にしておいて、xwiishow コマンドを使います。
sudo apt install xwiimote
してインストールした後に、
xwiishow 1
で Wii リモートの操作画面を表示させます。
A,Bボタンの操作や、加速度センサー、IRセンサーの値が表示されています。
詳しい使い方は、下記を参照
どうやって Wii リモコンの処理ををするのか?
Linux なのでデバイスはファイルとして開かれるので、/sys/bus/hid/devices で調べられるそうです。
pi@raspi3:~ $ ls /sys/bus/hid/devices
0005:057E:0330.0002
pi@raspi3:~ $
たぶん、xwiishow のあたりから API が出てると思うのだけど、これは後で。
コードがここで公開されています。
GitHub – dvdhrm/xwiimote: Open Source Nintendo Wii Remote Linux Device Driver https://github.com/dvdhrm/xwiimote
PC の場合は、WiimoteLib というライブラリがあるそうです。