FC2ブログ
C#でWiiリモコン

Wiiリモコン

どうやってC#から使う?

以前から作成を進めているARシューティングゲームのラジコンコントローラとして、Wiiリモコンを採用しました!Wiiリモコンを制御する言語としてC#を採用しました。
最初はProcessingでゲームを作るので、WiiコントローラもProcessingで制御しようとしたのですが、Processing用のライブラリをどこから手に入れたらいいかわからなかったので、まぁまぁ得意なC#で制御することにしました。
C#から取得したWiiリモコンのセンサ値をProcessingで作ったゲームプログラムへHTTPかなんかで飛ばそうかと思っています。

さて、C#からの使い方を以下にまとめておこうと思います。
まずC#の開発環境として私は以下を使っています。
Visual Studio Express 2012 for Windows Desktop
上のページからダウンロード出来ます。インストール後、保存領域が約2GBぐらい消費されるので注意してください。ちなみに製品登録を行えば、無期限、無料で使えます。

続いてWiiリモコンをC#から使うためのライブラリをダウンロードします。以下のページから出来ます。
Wiimotelib
Wiimotelibを解凍したフォルダ内の WiimotLib_1.7\docs 内のヘルプファイルから、Wiimoteのドキュメントへアクセスできます。
また、VC#へのWiimotelibの設定方法についてはこちらのページを参考にさせていただきました。ジャンプ先ページではVC#2008を使っていらっしゃいますが、VC#2012でも同様の設定方法で可能です。

ここまで終われば、WiiリモコンをパソコンとペアリングしてC#でガシガシコードを書いていけばいいです!ということでWiiリモコンの接続に関して次の節で説明したいと思います。

自動接続できない!

WindowsマシンとWiiリモコンの接続自体は、Wiiリモコン側はWiiと接続するときと同様に、赤いボタンを押してペアリングモードにし、PC側ではコントロールパネル→デバイスとプリンター→デバイスの追加とかにすれば出来ます。これは通常のbluetoothデバイスのペアリングと同じです。
 しかし、Wiiリモコン-PC接続特有の問題が発生しました...。なんと、Wiiリモコンの電源を一度切って入れなおしても、PCとの接続を再確立してくれないのです!そこで以下のページを参考に、Wiiリモコンの自動再接続用の設定を行いました。
Wiiリモコン(バランスボード)とWindows PCとの再接続の話
上記ページの作者様が作成された、自動再接続設定用のソフトを用いて、設定を行いました。使用環境の前提条件等書かれていますが、私の環境でも動作しました。ちなみに私の環境は以下のものです。

  • Windows8 64bit
  • Visual Studio Express for Windows Desktop 2012
  • PC内蔵bluetoothアダプタ (何も設定等いじっていない状態で使用。)
  • Wiiリモコン

 先ほどのページの作者様も書かれているとおり、あらかじめビルドされているものを使うと、動作しないような気がします。(試していませんが。) 私はソースコードからビルドして使用しました。使い方は作者様が説明されているとおりに使っていけば、何の問題もないと思います。
 手順がすべて終わったら、私の環境では無事、自動再接続がされるようになりました!大変感謝です。ではまた。

スポンサーサイト



テーマ:電子工作 - ジャンル:コンピュータ

[2013/10/21 21:47] | ARシューティングゲーム | トラックバック(0) | コメント(0) | page top
ARシューティングゲームイメージ図

現在作成しているARシューティングゲームのゲーム画面のイメージ図を作成しました!

ゲーム画面パワポ
ゲーム画面イメージ図 

画面内に映っている敵機は、実際にゲームプログラム側から制御されるラジコンとして制作します。ちなみに以前にも紹介しましたが、ゲーム画面の元となる映像は、wifiから送られてくるUSBカメラ映像です。
こんな感じで、現実とARを組み合わせたシューティングゲームを作っていこうと思っています。
ゲームとしては、ARで敵への攻撃を判別、敵から自機への攻撃は、現実の物理的な攻撃とし、現実とARの両方でゲーム要素が楽しめるようにしていこうと思っています。
今後の投稿を楽しみにしていてください!
それではまた!

[2013/10/10 00:30] | ARシューティングゲーム | トラックバック(0) | コメント(0) | page top
180円mbedの使い方

LPC1114FN28を使ってみよう‼


以前の記事「ARシューティングゲーム」で敵機の制御用マイコンとして、LPC1114というものを紹介しました。これはmbedという非常に使いやすいマイコンと同様に使えます。私は今まで5000円ぐらいするmbedを使っていたのですが、こちらのLPC1114は秋葉原にある千石電商で180円程で購入でき、かつ電子工作ぐらいであれば十分な機能を使用できます。 書き込みの方法を勉強する際にこちらのページを参考にさせていただいたのですが、その際にいくつか調べたこととか、つまづいたことを書いていきます。


書き込み用回路


先ほどのページに以下のような画像があります。


/media/uploads/ytsuboi/lpc1114-isp-blinky.png


 


書き込み用の回路はこの写真と同じものを組めば大丈夫です。ちなみにタクトスイッチの下のほうにある抵抗は10kΩ、dp24に接続してある抵抗は330Ωです。シリアルピン周り以外の回路は、タクトスイッチを押したときにマイコンをリセットするための回路です。写真の右下にあるLEDとそれにつながる抵抗は、LEDを点滅させるサンプルプログラムを実行するためについているだけなので、書き込みの際に特につける必要はありません。写真の左側にそそり立っているものは、USB-Serial変換モジュールです。私は千石電商から1400円ほどで購入しました。パソコン側からのプログラムはここから書き込みます。変換モジュールのTXをマイコンのRXに、変換モジュールのRXをマイコンのTXに繋ぎましょう。また、変換モジュールのVCCはブレッドボードの電源ラインに、変換モジュールのGNDはブレッドボードのGNDラインに繋ぎましょう。


書き込みに必要なもの


こちらのページを参考に、書き込みに必要なソフトウェアを集めました。以下にもそれを載せます。



  • Flash Magic

    • PCからマイコンにプログラムを書き込む際に必要になります。



  • arm-none-eabi-objcopy.exe

    • こちらのページからダウンロードできる、Sourcery CodeBench for ARM Lite Editionの中に含まれています。多分展開したファイル内に入っている時は、「objcopy.exe」という名前だと思います。 arm-2013.05\arm-none-eabi\bin らへんのフォルダに入っているかと。

    • Flash Magicから書き込む際にはソースコードをインテルHEXフォーマットの.hexファイルにコンパイルしたものが必要なのですが、mbedのブラウザ上の開発環境でコンパイルすると、2進数形式でコンパイルされた.binファイルしかダウンロードできません。そのbinファイルをhexファイルに変換するために使います。

    • bin2hexを使えば出来るという記事もありますが、bin2hexは64bitのWindowsだと使えないようで、代替案として採用しました。



  • 書き込み補助ツール

    • 上のarm-none-eabi-objcopy.exeはコマンドラインから呼び出さなければいけないのですが、リンク先のページの著者様が作成した書き込み補助ツールを使えば、簡単にbinからhexファイルに変換できます。

    • 使い方は下の画像のような感じです。(クリックして拡大) 書き込み補助ツールの使い方




書き込み手順


前節までの説明と、リンク先の各サイトを回れば、書き込みに必要な回路とソフトウェアが手に入ったと思います。本節では、それらをどのような手順で使っていけば、180円mbedに書き込めるか書きます。



  1. mbedコンパイラー(ブラウザ上)からソースコードをコンパイル&ダウンロード。

  2. objcopy.exeの設定をした書き込み補助ツールを用いて、binファイルをhexファイルに変換する。

  3. マイコンを書き込み用回路に繋ぐ。

    1. シリアルーUSB変換モジュールのⅤcc、GND、TX、RXを繫ぐ。

    2. dp24とGNDを330Ωの抵抗で繋ぐ。



  4. FlashMagicを使用して書き込む。

    1. 下の画像(クリックして拡大)を参考にして設定してください。flashmagic

    2. Step1では書き込みターゲットをLPC1114/102としてください。(マイコンの表面に同じ型番が書いてあると思います。)

    3. COMポートはUSB-シリアル変換モジュールが認識されているCOMポート番号にしてください。ポート番号はWindowsのデバイスマネージャとかで確認できます。

    4. ボーレートは9600にしてください。インターフェースはISP、オシレータは12MHzにしてください。

    5. Step2ではErase all 何とかって方にチェック入れとけばいいと思い ます。

    6. Step3では書き込みたいhexファイルを選んでください。

    7. Step4のチェックボックスは特にチェックしなくても書き込めます。

    8. Step5でスタート押して書き込んでください。



  5. 書き込み用回路(ブレッドボード)のタクトスイッチを押して、マイコンをリセットしてください。

  6. dp24に繋いだ330Ωの抵抗を外してください。

  7. この時点でプログラムが書き込んだプログラムが動いていなかったら、もう一度リセットボタンを押してみてください。


以上で書き込みができると思います。うまくいかないときは、きちんとマイコンがつながっているか確認してください。

続きを読む

テーマ:電子工作 - ジャンル:コンピュータ

[2013/10/09 22:06] | 電子工作 | トラックバック(0) | コメント(0) | page top
ARシューティングゲーム

プロジェクト始動!


長らく更新してませんでしたが、小規模チームでラジコンを使ったゲームを作ることになりました。
これからは、そこで学んだことをちょいちょい書いていこうと思っています。

そのゲームは、ラジコンとARを組み合わせたシューティングゲームとなる予定です!
まずはARシューティングゲーム関係の投稿第一弾として、以下に構成図を載せていこうと思います。

ARシューティングゲーム概要

ARシューティングゲームのシステムダイアグラムは下の画像のようなものになっています。


ちなみにシステムダイアグラムとは、システム(ここではゲーム全体を意味します。)の構成要素とそれぞれの関係を描くもので、設計のラフスケッチに使用します。
ゲームの構成要素とそれぞれの説明は以下です。
  • ラジコン
    • Wiiリモコンによりコントロールされる。Webカメラを積んでおり、そこからPCに映像を送る。PCは送られてきた映像をもとに、ARゲームを処理する。ラジコン上での処理はラズベリーパイを使用する。
  • 敵機
    • LPC1114FN28というマイコンにより制御される。マイコンにはmbed(mbed.org/)の環境から書き込む。敵機は自由に動き回る。ゲームプログラムとの連携はbluetoothを使用する。
こんな感じです。
敵機のライフは敵機本体に取り付けたARマーカーにより表現したり、フィールド上にアイテムをARでばらまいたりいろいろしたいと思っています。
Wiiリモコンをラジコンのコントローラーとして使用するつもりなので、せっかくならWiiコンを傾けたほうにラジコンが移動するとかもやってみたいと思っています!

今後はラズベリーパイ関係のこととか、LPC1114FN28のこととか(mbedが180円ほどで使える!)、ARプログラミングで使うProcessingのこととか書いていこうと思っています。

ではまた。

テーマ:電子工作 - ジャンル:コンピュータ

[2013/10/06 21:40] | ARシューティングゲーム | トラックバック(0) | コメント(0) | page top
| ホーム |