MMJOY2

NEW 2021/10/27~ 製作中

 MMJOY2はarduino用のマイクロコンピュータを使ったジョイスティック自作のためのプログラムです。 このプログラムを使うとarduino IDEで自分でスケッチを書くより非常に簡単に軸の設定やボタンの設定ができます。 サポートされているチップはATMELのat90usb646、at90usb1286、 atmega32u4(5V/16 MHz)です。 arduinoのボードのなかでも小型でbootloaderが組み込まれ取り扱いが容易なsparkfun pro-microというボードが多く使われています。 またこの製品のコピー商品のleonardo PRO MICROがアマゾンなどで最も安く手に入れることができます。 ただし、micro USBのコネクターの取り付け強度が弱いので取扱には注意が必要なのとコピー商品なのでメーカーにより品質にはムラがあるようです。


〇MMJOY2紹介ページ
 MMJOY2
〇使用ボード
 leonardo PRO MICRO ATmega32U4 5V/16MHz
このボードには3.3V/8MHzタイプがあるので購入時は確認すること。


〇MMJOY2のダウンロード
MMJOY2紹介ページからダウンロードできますがバージョンが2015年版(20151118)なので最新版ではありません。
下記のページから"MMJOY2 [v20161101].rar"をダウンロードします。
 ダウンロード・ページ

〇MMJOY2ソフトの解凍
 rarという方式で圧縮されているのでwindows10の標準機能では解凍できないのでrarを解凍できるソフト”Lhaplus”や”7-Zip”が必要です。
〇プログラムのインストール場所
 日本語名やスペースを含んだフォルダーには入れないこと。Cドライブに入れると良い。
〇ショートカットの作成
 起動を簡単にするためMMJOY2フォルダーにあるMMjoySetup.exeのショートカットを作りディスクトップに貼り付ける

〇ファームウェアのアップロード
 ダウンロード・ページにあるプロマイクロ・ファームウェアの手順をダウンロードして読むこと。(バージョンが少し古いですが参考に)
youtubeにもあるので事前に見ると良い
DIY:PART 2 USB CONTROLLER using MMJOY2
leonardo PRO MICROはリセットピンを1回グランドさせるとブートローダーが働きます。(純正sparkfun pro-microは2回グランド)
(注)windows10はpro microを接続すると自動的にドライバーがインストールされ認識されます。他のOSではドライバーのインストールが必要です。

windowsのデバイスマネージャーを開きPRO MICROを接続すると”ポート(COMとPORT)”に"Arduino Leonardo (COMxx)"又は"USB シリアル デバイス(COMxx)"が表示されます。 PRO MICROをリセットすると8秒間ブートローダーが働き"Arduino Leonardo (COMxx)"が消えて、その間ブートローダーのポート"Arduino Leonardo bootloader (COMyy)" 又は "USB シリアル デバイス(COMyy)"が表示されるのでcom番号をメモします。

MMjoySetupプログラムを起動して表示をロシア語から英語に変更します。(topの中央にセレクトタブがあります)
メニュータブからfirmwareを選択します。
1、mmjoy2をインストールしたファームウエアファイルの場所を指定します。
pro microなので“Firmware_lufa_[MMJOY2.ATMEGA32U4].hex”を選びます。
2、チップタイプを選択、“ATMEGA32U4”
3、boot loader typeを選択、“Arduino”
4、Port(arduino)にデバイスマネージャーで確認したCOMポート番号をインプットする。
5、"Auto-start upload firmware when COM port is active"にチェックマークを付ける。
6、pro microのリセットを行いブートローダーが起動すると自動的にfirmwareがアップロードされます。
 コピー製品によっては1回では働かないことがあるのでポートの再設定などを行い再度トライするとうまく働くことがあるのでダメなときは繰り返してやってみると良い。
7、左上部にcom portに接続されている機器の名前が表示されるのでマウスでmmjoy2機器を選びます。 左側のジョイスティックの上部が赤色から青色に変わります。これで選択されたことがわかります。
8、自作した各機器ごとにVID,PID,製品名をセットすること。
9、軸やボタンを設定するまではWINDOWSの機器として表示されない

〇軸の設定
 ポテンショメーター(抵抗)はボードの”AI”と機能表示されているポートに接続します。
MMJOYのポート番号や機能は”互換性のあるベースボード”のsparkfun pro-microを見てください。
MMJOYのポート番号と基盤に書かれているポート番号は異なります。使うのはMMJOYのポート番号です。
メニュータブから”Joysticks axles”を選びます。
下記のような設定になります。
Source(ソース):”IntSensor”
MCUport(MCUポート):接続したポート
Assignment(割り当て):軸を選択します
Precision(精度):10ビットを選択
Invertion(反転):ポテンショメーターの接続を替えなくても軸の増減を反転できます。
Filter(フィルター):スパイクノイズを低減するための値を設定します。なるべく小さな値が良いです
Auto-calbration(自動キャリブレーション):生の値が0から1023なら不要でも良いと思います。自動キャリブレーションを選ぶとフルストローク数回動かすと自動的にキャリブレーションされます。 windowsで調整する必要が無くなります。ただし、pcに接続した時は使用前に毎回、フルストローク動かす必要があります。

〇ボタンの設定
 ボタンマトリクスで設定するのでボタン(SW)はボタンマトリクスになるように配線します。ボードへの接続は”BM”と機能表示されているポートに接続します。 ボタンマトリクスは複数のボタンを同時に押したときに誤作動を防ぐため各ボタン(SW)にはダイオードを接続します。 BM表示のポートならどこに接続しても良いので配線のしやすいところに接続します。

メニュータブから”Joysticks buttons”を選択します。
1、ボタンオプションの説明に従ってButton matrrix欄の”rows”、”columns"に接続したポート番号を設定します。
2、設定をデバイスに書き込みます。
3、各ボタンを押しハードウェアボタンの応答(赤く点灯)を確認してすべて正しく作動するか確認します。 正常に作動していればマトリクス回路は正しく配線されています。
4、ジョイスティックのHAT SWやボタンにハードウェアボタンをマッピングします。
5、設定をデバイスに書き込んでボタンの作動を再度確認します。

〇デバイスに設定の保存
 軸やボタンの設定ができたらデバイスに書き込みます。上部中央にある”Save sets to device"をクリックすると書き込まれます。 緑色のバーで進行状況が表示され完了すると左上部にあるjoystickの上部が青から赤色に変わります。 comポートに接続されている機器から再度mmjoyの機器を選び直します。 左側のジョイスティックの上部が赤色から青色に変わります。これで再度選択されました。 ジョイスティックの軸やボタンを操作して確認します。

〇デバイスから設定の読み込み
 デバイスを接続したらmmjoyデバイスを選択し”Load sets to Device”をクリックしてデバイスから設定を読み込みます。

〇設定ファイルの保存
 設定ファイルの保存は”Save sets to file”をクリックします。ファイル名を付けて保存します。

〇設定ファイルの読み込み
 設定ファイルの読み込みは”Load sets to file”をクリックして読み込むファイル名が表示されたら使用するファイルを選択します。

〇Windowsで確認
 最下部左側にある”windows joysticks”をクリックするとWindowsのゲームコントローラー設定画面が表示されjoystickの動作確認ができます。

〇デバイスマネージャーを開く
 最下部にある"device management"をクリックするとWindowsのデバイスマネージャーが開きます。

〇PRO MICROボードのジャンパーについて
 SPARKFUN PRO-MICROボードには電源回路にジャンパーがあります。5V用と3V用があるので5V用は半田でショートしています。これによりUSBからの電圧が直接VCCポートに出力されます。 接続しない場合はレギュレーターを通してVCCポートに出力されるので電圧降下により4.6V程度まで降下します。 コピー品のPRO MICROはショートされていません。USBから電源を供給していて負荷が多い場合は純正品のようにショートした方が良いと思います。
正常に作動するには4.5V以上が必要です。


〇ロータリーエンコーダーとボタンを使う
 ロータリーエンコーダーの接続方法を見るとボタンマトリクスと同様に接続できるように図が示されています。 ロータリーエンコーとボタンが同じボタンマトリクスに接続しても使えるのか試してみました。
使用したのはwindows95のPCにセットでついていた11ボタンと1エンコーダーのあるコントローラーを改造してボタンとエンコーダーのみを使えるように配線してみました。


1、マトリクスの順番でボタンが最初になるように配置して次にエンコーダーが来るようにしました。
 最初、すべてを接続して動作確認しましたがボタンを押すと2か所のボタンが作動するボタンがあり正常に配線されてか確認できませんでした。

 正しく働いているのか確認するためエンコーダーの配線を外してボタンのみで確認したところ正常に働きます。
エンコーダーの配線が正しいか確認するためエンコーダーのみを配線し直しエンコーダーのみで設定して見ました。
エンコーダーのみになるのでハードウェアボタンは1と2なのでわかりやすくなりエンコーダーの設定は左回り1、右回り2とし、timerのdelay timeと動作をonと設定しました。
ソフトウェアボタンの設定はボタン1に1、ボタン2に2と入れると自動的にMODEはエンコーダーとなりtimerも自動的にセットされました。
エンコーダーを廻してみましたがハードウェアボタンの表示は全く変化なく点滅しません。 "VKB BUTTON TESTER"を起動してlogにチェックマークを付け操作した時のlogを確認すると左に回すとボタン1がON/OFFし右に回すとボタン2がON/OFFと表示されます。 正常に認識されているようです。
windows joysticksを起動してjoystickの動作確認をするとボタン1、ボタン2が点滅します。ときどき点滅にムラが有ったのでdelay timeを変更したみたところ 1クリックずつでムラなく点滅するようになりました。
これでエンコーダーとボタンの回路が正常なのが確認できたので再度、エンコーダーとボタンを一緒に設定して見ました。

2、マトリクスの順番でエンコーダーが最初になるように配置して次にボタンが来るようにしました。
 すでにエンコーダーは設定されているので”rows”、”columns"にボタンの設定を追加します。
最初のボタンを押すと3番と11番の2個が同時に点灯します。 エンコーダーを廻すと9番、10番、1番、2番などが廻し方によって点滅します。"VKB BUTTON TESTER"を起動して確認すると1個のみが押されたことになっています。 すべてのボタンとエンコーダーのボタン番号は合っているのでソフトウェアボタンにハードウェアボタンをアサインします。押したボタンに対応して正常なハードウェアボタンがアサインされました。 windows joysticksを起動してjoystickの動作確認をすると各ボタンが正常に反応しました。設定は完了です。


エンコーダーの詳しい設定方法が示されていなかったので試行錯誤でなんとか設定できました。
エンコーダーのA,B端子の接続はボタンと一緒にしない方がよく、ボタンよりエンコーダーを最初に持ってくるとボタン番号がわかりやすくなります。
ボタンとエンコーダーを組み合わせたときはハードウエアボタンの表示が正しく表示されないので"VKB BUTTON TESTER"で確認すること。



メインページに戻る