**

小ネタ 2006-019

WiiリモコンをPCで使うサンプルソフトを作ってみる


1. 加速度センサを使ってリモコンの傾斜を表示する

 先日、面白そうな記事を見つけた。WiiリモコンをPCに接続してマウスとして動作させるという記事だが、試してみたら、本当に接続できた。

 いろいろとWiiリモコンを使ったソフトを自作すると楽しそうなので、自分でも接続するソフトを試しに作ってみた。 (2006.12.7)

 
[ Wii Remote Test1 (download) ]
[ ソースコード source code (download) ]




2. Wii-Saber

 Mac Saberというソフトを真似して、似たようなソフトを作ってみた。あまり出来が良くないかも。(2006.12.8)

[ Wii Saber (download) ]


 (本家Mac版もWii対応のものが出てたみたいだ。)



3. リモコンを振ってLEDで空中に文字や図形を表示する

 Wiiリモコンに4つ青色のLEDがあるので、試してみたが、あまりうまくできなかった。ソフトを公開できるレベルでなかったりする。
 いちおう試しにやってみて写真を撮ったので、晒しておく。写真もなかなかうまく撮影できなくて困った。(2006.12.9)
 




4. リモコンの十字ボタンをマウス代わりに使ってみる

 十字ボタンを使ったマウスを作ってみた。
 いまさらという気もするが、ソースを使って好きなように作り替えて楽しむというむきには無いよりましか。(2006.12.10)

[ Wii Mice Test1 (download) ]
[ ソースコード (download) ]




5. リモコンに振動マッサージ器のような動作をさせるソフト

 振動機能を使ったソフトということで、こんなJokeソフトを作ってみた。(2006.12.11)

[ Wiibrator Test1 (download) ]


 ヌンチャクによる操作に対応してみた。(2006.12.26)
[ Wiibrator Test2 (download) ]




6. リモコンの落下を検出してみる

 リモコンが手から離れて落ちるときに、自由落下を検出して音を出すテスト用のソフトを作ってみた。(2006.12.13)
 ストラップをつけるとか、クッションを敷く等、注意して使うこと!

[ Wiimote fall detect Test1 (download) ]




7. リモコンの赤外線センサで自作センサーバーの動作テスト

 センサーバーの代用で、赤外発光LEDを2つ点灯させる回路を自作した。作り方は検索して見つけた。材料は、ジャンクのテレビリモコンを2つバラして赤外LEDを取り出したのと、断線した細いUSBケーブルを切ったものを使った。(2006.12.13)

 

 リモコンの赤外線センサで検出した座標出力を画面上にプロットするソフトを作ってみた。(2006.12.17)
 このソフトを使って自作のセンサーバーの2点の光源の間隔を調節したところ、間隔を10cm〜15cmで使ってみるとPCの近くで使いやすかった。任天堂の純正センサーバーだと間隔が広すぎるので、センサーバーを付けたPCからかなり離れないと使用できない。

[ Wii Remote IR-Sensor Test1 (download) ]
[ ソースコード (download) ]


[ Wii Remote IR-Sensor Test2 (download) ] (2007.2.17 修正版)
[ ソースコード (download) ]





(後日加筆 2006.12.30)
 小型のUSB HUBを改造して、自作センサーバーを内蔵したものを作ってみた。HUBとしてもちゃんと使える。ノートPCと一緒に持ち運び用に使ったりする。
 




8. リモコンの赤外線センサをマウス代わりに使ってみる

 センサーバーと組み合わせて、リモコンのポインタ機能を使ってマウスカーソルを動かすためのソフトを作ってみた。(2006.12.18)
 うまく動かない場合、上記のセンサーバーの動作テスト用ソフトで、光源が2点とも1画面内に検出できているか確認すること。

 マウスカーソルをリモコンで動かすのに慣れたら、ブラウザ上でFLASHのブロック崩しゲームとか、こんなのとかを試してみると面白い。

[ Wii Pointer Test1 (download) ]
[ ソースコード (download) ]


[ Wii Pointer Test2 (download) ] (2007.2.17 修正版)
[ ソースコード (download) ]



9. ヌンチャクをマウス代わりに使ってみる

 ヌンチャクのアナログスティックでマウスカーソルを動かすためのソフトを作ってみた。(2006.12.23)
 クラシックコントローラーを接続すると誤動作するので、接続しないこと。

[ Wii Nunchaku Test1 (download) ]
[ ソースコード (download) ]

 ヌンチャクの使い方が分かったので、Wiibratorのヌンチャク対応版を作ろうかなあ。 (後日加筆、対応版を作ってみた。)




10. 画面の奥行き方向の検出

 リモコンのポインタ機能は、画面上の上下左右のX-Y座標上の2次元の動きだけでなく、奥行き方向(Z軸)についても検出することが可能である。
 2点の光源を検出する際に、リモコンが画面から遠くにある場合には検出した2点の距離が近くなり、リモコンが近づくと2点の距離が遠くなることを利用する。

 この機能を使って、画面にリモコンを近づけたり遠ざけたりすることで、音源の周波数を変化させて楽器演奏させるソフトを作ろうと思ったが、もう既に存在しているようだ、残念。 Wii Remote Theremin , Wii Remote Theremin 2


 あるいは、リモコンと自作センサーバーを机の上に置いて、リモコンを前後左右に動かすことでマウス代わりに使うソフトを作ろうと思った。実際に試してみたが、奥行き方向の分解能があまり細かく取れなかったため、とてもマウスとしては使えるものではなさそうだった。鏡とかを使って何か光学系に仕掛けを追加しないとだめそうだ。 (年末に光学系の仕掛けを考えたので、材料を集めて実験してみる予定。)

(後日加筆) 実験してみた
 




11. リモコンの赤外線センサと太陽を使った応用を考えてみる

 リモコンをロケットの先にくっつけるのを考えてみた。実際には作ったりできないが。
 加速度センサを使って、ロケットの姿勢やモーションを検知できる?
 赤外線センサを使って、熱源(太陽 or 航空機のジェット噴射)の赤外線を検知して追尾するのに利用できる?
 4つのLEDのOn/Offは、制御信号を使って上下左右に舵を切るのに使うことができる?
 (追加 拡張ポートを使って、ジャイロセンサを取り付けることができ、より高精度でモーションを検知できる?)
 

 あるいは、単に野外でPCとリモコンを使うときにセンサーバーの代わりに太陽を光源として使用できるかも。光源1個で動作させるためのソフトを作ってみようと思った。




12. リモコンの赤外線センサで電子工作できるか?

 IRセンサ自体は、I2Cバスで制御できる電子部品なので自作の電子工作にも使えそうだ。IRセンサ部品自体の8ピンの接続方法も大体は判明しているし。そのうち、そういうネタをやってみよう。

 (例えば、ロボットコンテスト関係で、自律式サッカーロボットの赤外線発光式のボールの追尾に使うというのも使えそうだ。ボールのおよその方角と距離を検出することが可能っぽい。)

 この解析ネタについては、こちらのページで続行中。




13. リモコンから音を出せるか?

 Wiiリモコンに内蔵された音源チップについては、皆、解析が難航している。ROHM社のBU7849というICの名前にまでは辿り着けるのだが、その先の情報が見つからない。姉妹品のBU7848FVというICの載っているページは出てくる。他に、BU8844FVというICのニュースリリースにはWiiの名前までが出てくる。ADPCM方式ということしか情報が得られなかった。よくある一般的なADPCMコーデックの方式でエンコードしたのでは音が正しく出ないらしい。なめらかな波形を出すのをあきらめて、三角波や矩形波を出すのならば可能だが、それでは面白くない。

 日本向けの携帯電話の着メロ(着信メロディー)の音源にYAMAHAとかROHMのICが使われていて、やはりADPCMの方式だったりする。着メロを自作する関係を調べると何かわかるかもしれない。




14. Wiiリモコンを自動接続
(後日加筆 2009.6.21)

 最近、Wii Motion Plusを入手したので、解析してソフトを作るためにWiiリモコン用の制御ソフトを作り直している。
その副産物で、Wiiリモコンの自動接続ができたので、こちらでも公開しておく。

[ Wii Remote Connect1 (download) ]
[ ソースコード (download) ]

 1つ制限があり、Microsoft製のBluetoothスタックでしか動作しない。それ以外では動かないので注意。




- Trouble shooting -

・IRセンサが反応しない場合
 IRセンサを初期化する部分のソフトがまだ不安定です。IRセンサにコマンドを送るタイミングのマージンの問題なのか、環境に依存するのかよく分からないですが、何度か起動しなおすとうまく動いたりします。 → 2007.2.17の修正版で改善してみました。良くなったと思います。


・WiiリモコンがWii本体につながらない場合
 PCにつないだ後、Wiiにつながらなくなった場合、再度Wii本体とペアリングする必要があります。Wii本体のSDカードスロットの横の赤色のボタンと、Wiiリモコンの電池のフタの中の赤色のボタンを押すとペアリングできます。


・tiny_hid_dllが何をしているのか分からない
 「USBコンプリート」という本に載っているHID用のサンプルコードの関数をそのまんまDLLに入れて使用しています。詳しくはこの本を参照ください。


・WiiリモコンがPCにつながらなくなった場合
 最初にWiiリモコンを接続するのは割と問題なく動いたりしますが、そのあと2本目のWiiリモコンだとか、色々と試していると、接続できなくなったりします。コントロールパネルのデバイスマネージャーのヒューマンインターフェースのところに表示されるWiiリモコンらしきドライバを一旦すべて削除することで、再接続できることがあります。それでも回復できない場合、あきらめてBluetoothドライバの再インストールからやり直すと再接続できます。 tiny_hid_dllを改良すれば解決すると思うのですが、いまのところは直す見込みがありません。


・Bluetoothアダプタによる接続不良対策
 接続に使用するBluetoothアダプタによっては、つながらないことがあるようです。下記のものは接続を確認できました。
 
 (1)DTECH 55in1 CARD READER w/Bluetooth Dongle (55種類のメディアが読めるカードリーダー Bluetoothドングル付)
  使用上の注意として、付属のドライバCDのBlueSoleilは古いうえに、試用版としてインストールされてしまうためまともに使えないので、最新版をダウンロードして使ってください。BlueSoleilバージョン2.3.0.0を使って動作確認できました。シリアルポートのドライバを沢山インストールされてしまうのが難点ですが、それ以外は普通に使いやすいです。
 (2)HagiwaraSYSCOM DN-UB03
  付属のドライバCDのソフトはBTW3.0というものですが、ちょっと使い方に癖があって接続の操作が面倒。Wiiリモコンを接続するときは、Bluetoothセットアップウィザード→目的のサービスが分かっていて、そのサービスを提供しているBluetoothデバイスを検索する→HID(Human Inferface Device)→Nintendo RVL-CNT-01をクリック→完了ボタンを押すという操作が毎回必要です。

 (3)Princeton PTM-UBT3S (2007.11.10 新たに確認)
  非常に小型なBluetoothドングル。付属ソフトは東芝製のBluetooth Stack Software。一番使いやすいと思います。ただしtosOBEX.exeという変なソフトが常駐するので、PCが不安定になることがあり、実際に2台のPCで試して両方で発生しました。Program filesの中のToshibaフォルダの中にtosOBEX.exeというファイルがあるので、削除するとかリネームしておけば常駐しなくなり、安定しました。何をするための常駐ソフトかは分からないので、削除したことで何か不具合があるかもしれないが、とりあえずBlueoothマウスとWiiリモコンはちゃんと動作しているようです。
 

 (4)Microsoft Windowsの標準Bluetoothを使う場合 (2008.1.19)
  上記のドングルを使う際に付属CDからBluetoothスタックのソフトウェアをインストールせずに、Windowsの標準のBluetoothソフトウェアを使うという人もいる。しかし、この場合このサイトで配布しているソフトが動かないという問題がありました。原因が分からなかったのですが、oga氏という方がバランスWiiボードの解析のblog記事で同様の現象の原因を解明していました。参考にして、とりあえず差し替え用のDLL(tiny_hid_dll)を作ってみました。差し替えて使ってみてください。
 [ tiny_hid_dllの差し替え用 (download) ]


・ソースコード内のReport0x16の処理について
 いろいろと解析した結果、Report0x16や0x17がどういう挙動をするものなのか分かってきました。(2007.1.31)
 このページに置いてあるサンプルはそれなりに動作しますが、Report0x16の処理があまり正確でなかったものもあります。赤外センサ関係は修正する予定です。 → 赤外センサを使用したソフト「Wii Remote IR Sensor Test」と「Wii Pointer Test」を修正しました。(2007.2.17)

 とりあえず、解析したメモをここに貼っておきます。
 

 



- Link -

WiiリモコンでPowerPointを操作できるか
WiinRemote
DarwiinRemote
aka.wiiremote
WiiSaber MacOS
Wii Drum Machine
WiiLi
WiiBrew wiki
WiiModwii
Wii hacks
Hack a Wii
Wii Temple
WiiCade
Wiibrator: Wiimote / Trancevibrator interface
Wii Bottle
WiiBot
Wiimote Theremin with Moog Little Phatty
WMD - Linux driver for Wii Remote
Wii Remote on PS3 Linux
Wiimote via Java
Coding4Fun Managed Library for Nintendo's Wiimote
「PS3上のLinuxをWiiリモコンで操作」---Binary 2.0 カンファレンス2006より
wiiのリモコンでプレイできるFLASHゲームまとめ
インターネットチャンネル向けのウェブページを作りたいのですが…。
COLOCORO - ボールをうまく操ってゴールを目指すゲーム
女医ハック最新版では、Wii リモコンがサイリウムに!
iRemocon - iTuneをiアプリやWiiリモコン等で操作
SqueakでWiiリモコンを使う
Wiiのリモコン対応 3軸加速度測定ソフト「WiiAcc」
Wiiiリモコンの代わりにノートPCを振り回してWiiiを操作「Wiiiiinリモコン」
Wiimote+Roomba=Wiimba!
WiiFitのバランスボードをパソコンにつないでみた
マイクロソフト、「Visual Studio」ではWiiリモコンを使った開発もできると宣伝


- See Also -

Wiiリモコンプラスの新バージョンを調べてみる
Wiiリモコンプラスを調べてみる
Wii MotionPlusの解析
ギターヒーロー3のギター型コントローラーをPCに接続してみる
WiiFitのバランスボードを調べてみる
Wiiクラシックコントローラーとヌンチャクの中身の互換性
Wiiリモコン用の自作周辺機器を作ってみる - その2 ジャイロ
Wiiリモコン用の自作周辺機器を作ってみる - その1 テンキー
Wiiリモコンのポインティング用赤外線センサ部品の解析
Wiiリモコン軽量化 (Wii-remote Smaller Battery mod)
PLAYSTATION3用SIXAXISと、Wii用コントローラーのモーションセンサーを調べてみる
Wiiコントローラー型TVリモコンをファミコンのコントローラーに改造してみる
傾斜入力ゲームパッド「G-Pad Pro Gyroscopic Gamepad」と「SideWinder FreestylePro」