ラズパイ3 と Wii リモコンをつなげる

list このエントリーをはてなブックマークに追加

台風が近くまで接近しているので、非常に眠いので眠気覚ましに。

世の中は任天堂スイッチの世界なので、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センサーの値が表示されています。

詳しい使い方は、下記を参照

XWiimote – ArchWiki

どうやって 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 というライブラリがあるそうです。

Siv3DでWiiリモコンを使う – Qiita

カテゴリー: 開発 パーマリンク