レトロでハードな物語

レトロなゲーム機・マイコン・中古デバイスなどをArduinoやAVRで再活用する方法を模索しています。

USB-IO2.0をUSBジョイスティックにしてみる

2020年04月18日 | 電子工作

この前プログラムを書き換えてマイコンボードと化したUSB-IO2.0ですが、HIDデバイスに出来るとのことなので試してみることにしました。
とはいっても、何をどうしていいのかすぐには分かりません。Arduino LeonardoやSparkFun Pro Microのようにライブラリを組み込んでササッとお手軽に作るといったことはできなさそうです。

そこでまずはmicrochip社が提供してくれているライブラリに含まれている、USBジョイスティックプログラムを動かしてみることにしました。
こちらからMLA(Microchip Libraries for Applications) v2018-11-26をダウンロードしてインストールします。
開発はUbuntu環境で行っていますので、他の環境では以下の説明のファイルパス等が異なるかもしれません。必要に応じて読み替えて下さい。

インストールが終わったらMPLAB IDEを起動してMLAをインストールしたフォルダーの中の

microchip/mla/v2018_11_26/apps/usb/device/hid_joystick/firmware/low_pin_count_usb_development_kit_pic18f14k50.x

というプロジェクトファイルを読み込みます。
あとはUSB-IO2.0とPICkitなどのライターを接続して、コンパイル&書き込みを行うだけです。PICkit4の場合、書き込み電圧はデフォルトの3.25Vのままで問題ありませんでした。

このサンプルプログラムは、Playstationのアナログパッドとボタン配置がほぼ同等のジョイスティックを実現してくれます。実行すると○ボタンが押されている状態をエミュレートします。ソースリストは結構なボリュームになっていますが、ジョイスティックの操作に直接関わる部分はわずかしか無いので、ここを少し書き換えるだけでUSBジョイスティックが作れそうです。
残念ながらUSB-IO2.0は5V動作なので、3.3V(実機では3.6Vらしい)で動作させるPlaystationコントローラーを直につなぎたくはありません。そこで、5Vで動作するファミコンジョイスティックをつなげてみることにしました。



このジョイスティックは以前にPro Microにつなげたこともあるので、PICから利用するのは難しくないはずです。

まずは配線ですが、以下のようにしました。

NESコネクタ ←→ PIC18F14K50 (USB-IO2.0 J2)
2 ←→ BR4(0ピン)
3 ←→ BR5(1ピン)
4 ←→ BR6(2ピン)
6 ←→ VCC
8 ←→ GND



プログラムは上記MLAのソースを一部変更します。

microchip/mla/v2018_11_26/apps/usb/device/hid_joystick/firmware/demo_src
の下にある、main.cとapp_device_joystick.cを以下のものと差し替えて下さい。

main.c
app_device_joystick.c

後はMPLAB IDEでコンパイルしてUSB-IO2.0に書き込むだけです。

USB-IO2.0をPCにつないでみると、普通にジョイスティックとして使用できました。それほど使い込んではいませんが、今のところ特になんの問題も起きていません。USB-IO2.0結構いいですね。
とはいえ、USBジョイスティックをつくるならPro Microとかの方が簡単ですしライブラリも豊富なので、わざわざUSB-IO2.0を使う必要はなさそうです。
残念ながらXInput方式のジョイスティックにはなっていないので、前々回までに色々つないでみたPlaystation Classicでは認識してくれませんでした。

今回ダウンロードしたMLAには様々なUSBデバイスのサンプルが入っていました。何か面白そうなデバイスがないか後でよく確認してみましょう。



最新の画像もっと見る

コメントを投稿