2008/11/18
ラジコンの送信機をジョイスティックの代わりに使えるように
できないかと、調べてみました。
(1)
RC Joy
http://www.gadgetparadise.com/120301/index.htm
PIC18F2455が使われています。
Windows用のSetupソフトがあります
(2)
SIMPIC
http://rcsoaringpictures.free.fr/images2/simpic/index.htm
回路図から、PIC16C645を使っていて、USB接続ができることは
わかりました。
文面がフランス語なので、ちんぷんかんぷんです。
(3)
FMSUSB
http://www.cattopasto.com/Elettronica/FMSUSB/FMSUSB.php
XPのジョイスティックとして認識される回路だそうです。
PIC16C745が使われています。
FMSUSB Managerという設定ツールがあります。
(4)
RC Joystick NG2
http://alessioandrea.altervista.org/projects.html
PIC18F2455/2550が使われています。
テキストファイルに設定を書いておき、専用のプログラムで
PIC内部のEEPROMにUSB経由で書き込みます。
(5)
AVR-USB
http://avrusb.wikidot.com/project:ppm-rc-to-usb-interface
AVRを使っています。
探すとけっこうあるものですね。
国内では製品は見つかりましたが自作されているものは見つけられませんでした。
部品を探していたら、ちょうど良いUSBコネクタつきのPICボードが秋月にありました。
USBマイコンボード 完成品(PIC18F2550)[PIC18F2550-I/SO]
USBminiBコネクタ,PIC18F2550,20MHz発振子を搭載。
基板サイズ40mm×18mmで28ピンICソケットに装着可能。
秋月PICプログラマキットVer.4で書き込み可能。
早速(4)の RC Joystick NG2を試してみました。
RC joystick NG2は、4MHzの発振子を使うようになっていますが、
秋月のボードは20MHzが搭載されています。
PIC用のプログラムを修正して、20MHzでも同じように動作するようにしました。
修正部は次の2箇所です。
rcjoy3.3.4.zip (sources and binaries)
を展開すると、
\rcjoy3.3.4\source\pic\rcjoy.asm
ができます。
このrcjoy.asmの 375ラインと376ラインを修正します。
【オリジナル】
config FOSC = XTPLL_XT ; XT with PLL enabled used by CPU and USB
【20MHz用に修正】
config FOSC = HSPLL_HS ; HS oscillator, PLL enabled, HS used by USB
【オリジナル】
config PLLDIV = 1 ; PLL prescaler set to no prescale: 4 MHz crystal (96MHz PLL needs 4 MHz input from prescaler)
【20MHz用に修正】
config PLLDIV = 5 ; PLL prescaler set to 5 prescale: 20 MHz crystal (96MHz PLL needs 4 MHz input from prescaler)
コードは全てアセンブラで記述されているので、MPLAB IDEでコンパイルできます。
お試しですので、
小さな基板の上にミニジャックとレベル変換回路を実装し、
これをPICボードの上に両面テープで貼り付けてあります。
レベル変換回路は、
送信機のトレーナー信号のパルス幅測定
と同じものです。
USBケーブルとオーディオケーブルをつなげたところです。
USBケーブルをPCに接続すると、PICボードのLEDが点灯します。
送信機のトレーナー出力に接続して信号が認識されると、
RC Joystick NG2のモニターLEDが点灯します。
このLEDは手持ちの超高輝度タイプを使ったので、
ちょっと明るすぎになってしまいました。
下の画面をクリックすると、MP4フォーマットの動画ファイルをダウンロードできます。
コントロールパネルのゲームコントローラのプロパティで、
RC Joystick NG2の動作を見ているところです。
こちらはFMSのキャリブレーション画面です。
RC Joystick NG2は、12chA/D入力、PPM、SanwaPcm(2種類)、FutabaPcm1024、
WalkeraPcmをサポートしているとマニュアルに書かれています。
これらは、zipファイルに含まれているset_assignments.txtの
内容を変えることで選択できます。
私の送信機はJR-PCM9Xですので、PPMモードで動かしました。
Windowsのジョイスティックは、8軸の場合
X、Y、Z、RotX、RotY、RotZ、Dial、Sliderの8種類があります。
これらと送信機の操作の割付けも、set_assignments.txtで定義できます。
テキストファイルに設定を記述したら、zipファイルに含まれている
set_assignments.exeをコマンドプロンプトから実行すると、
設定内容がPIC内部のEEPROMに書き込まれ、設定通りに
動作するようになります。
2008.11.19追記
どうも、zipファイルに含まれているlibusb-win32-filter-bin-20060827.exe
をインストールすると、他のUSBを使うアプリケーションと競合することが
あるようです。
RC Joystick NG2を使った後で、gigabeat(T401S)を接続したところ
認識されなくなっていました。
libusb-win32-filter-bin-20060827.exeをuninstallすると、
gigabeatが正常に認識されるようになりました。
libusb-win32を使うときは、少し注意が必要です。
webを探したら、”libusb-win32-filter-bin-0.1.12.1.exeをインストールしたらUSBがすべて認識されなくなりました” こんなのも見つかりました...