Wiiリモコンを使い、Arduino(互換機)をPCと無線接続する実験、、、の予備調査。
本体を持ってないのに、リモコンだけ買っちゃいました(汗
Arduinoの無線化といえば、普通はXBeeなどのパーツを使います。が、今回、面白い作例があったのでチャレンジしてみることに。
参考ページ
- Wiimote as bluetooth transciever for an Arduino(Windmeadow Labs)
作例 「WiiリモコンをArduino用のBluetoothトランシーバーとして使うには」
サンプルスケッチ有り。 PC側のプログラムはLinux用なので、Windowsでは そのままは使えません。 - HOWTO make your own Wiimote peripheral
接続例 Wireライブラリの書き換えが必要、みたいなことが書かれてます
動作クロック8MHzのJapaninoでも接続できる? - Wiimote controlled firefighting robot
wiiリモコン経由でモーターを制御 - WiimotelibとVisual C#を用いてWiiリモコンの制御(KOSAKA LAB)
書籍「WiiRemoteプログラミング」の、多分C#パートの著者のかたのページ。
WiiリモコンをPCから操作するためのプログラムのチュートリアル。
Visuarl C#の代わりにSharpDevelopも使えますが、その場合、サンプルコードを少しだけ書き換える必要があります。
WiiリモコンをPCで認識する
WiiリモコンはBluetoothという規格を介してPCに接続します。
Windowsの場合、「コントロールパネル>>Bluetooth>>ワイヤレスデバイスの追加」で行うことになります。ペアリングは、Wiiリモコンの1ボタン2ボタンを同時に押し、LEDが点滅した状態で行います。
今回の実験用のPCのスペックは
- OS Windows Vista 32bit
- Truemobile 355 Bluetoothアダプタ (本体購入時付属)
- デバイスドライバ PCベンダ付属品 (Dell)
- プロトコルスタック マイクロソフト(OS付属)
うまく認識してくれないときにやることリスト
- Bluetoothコントロールパネルにて、 ペアリング済みのWiiリモコン(Nintendo RVL-CNT-01)を削除 ( 「ワイヤレスデバイスの削除」) して、 ペアリングをやりなおす
- デバイスマネージャーにて、プロトコルスタック (Microsoft Bluetooth Enumrator)を一度無効にして、 再度 有効に。
- PCとWiiリモコンの電源を落として、しばらく待つ。
Wiiリモコンの電池を抜く。 これでもうまくいかないと、ちょっと泣けてきます。
PC側のプログラムを用意
いろいろと調べた結果、今回はC#用のライブラリを使用。今回、実験予定にはありませんが、多分、IronPythonからも使えると思います。
- WiimoteLib v1.8 Beta 1
モーションプラスを使うには、こちらのv1.8ベータが必要です - WiimoteLib
モーションプラスを使わない場合は、v1.7を使うように、とのこと。
今回はC#のプログラミングにVisual C#ではなく、SharpDevelopを使用することに。
理由はサイズがコンパクトだし、動作も軽いので。
Python用のライブラリ Pywiimoteが手元の環境でうまく動かなかったので、今回は不使用。VistaになってHIDまわりの使用が変更になったことが理由みたいですが詳細不明です。
WiiリモコンとArduino (Japanino)を接続
接続用のコネクタは、ヌンチャクをつぶさないとならないみたいです。
というわけで、現在、C#でWiiリモコンと通信するチュートリアルを勉強中。Arduinoとの接続は、まだしばらく先になりそうです。