変わりモノがいい!

変わりモノには価値がある・・・ハズ?

Arduino USBホストシールドに無線ゲームパッドが繋がりました。

今回も難航しました。

前の記事でArduino Unoに載せたUSBホストシールドに有線タイプのゲームパッドを繋げてデータをン受信できるようになったと書きました。
次なるステップは無線タイプのゲームパッドをUSBホストシールドに繋げてデータを受信できるようにすることです。
ゲームパッドには色々な種類があり、USBホストシールとのライブラリーには色々なタイプのBluetooth対応のゲームパッド用のコードが準備されています。
普通に考えればPS3PS4用のBluetoothゲームパッドを準備すれば何の問題もないところです。
でも僕はPS3PS4を持っていません。
唯一持っている無線タイプのゲームパッドは、以前、Jetracer Proを買ったときに付いていたもので、今回はそれを使おうと思います。

f:id:ken2017:20211215154819j:plain
でも、このゲームパッド、本体にメーカ名も無ければ型式も書いてありません。
唯一付いているシールは、Jetracer Proの発売元であるWaveshareの名前だけが書いてあるシールのみです。
Bluetoothでの接続だとは思うのですが、ゲームパッドの電源を入れてパソコンで見てもBluetoothの接続先候補として表示されません。
一体どうやって使えばいいんだろう、というところからスタートです。

PS3互換という所から入ってハマってしまいました。

ゲームパッドにはPS3互換機が多いので多分これもそうなんじゃないかなという所から入りました。
結構いい加減な入り方です。
USBホストシールドにゲームパッドに付いていた専用のドングルを付けて電源ON

f:id:ken2017:20211215164201j:plain
ゲームパッドの方は電源を入れると早速ペアリングできたようで下の写真のように赤いLEDが一つ付きました。
f:id:ken2017:20211215164620j:plain
ちなみにペアリングが出来ない状態では、全てのLEDが赤く点滅します。

f:id:ken2017:20211215165447j:plain
そして、Arduino UnoにUSB Host Shield Library2.0の中からPS3BT.inoをインストールして走らせました。
そうするとArduino IDEのシリアルモニタには
PS3 Bluetooth Library Started
と表示されました。
おお、やっぱりPS3で良かったんだと思ってゲームパッドを色々いじりましたが応答なし。
色々やってもダメで、困り果ててWindowsパソコンにゲームパッド専用ドングルを挿してUSBデバイスとして調べてみると以下のような画面になっており、やっぱりPS3でいいんじゃないかと更に困惑してしまいました。
   上の段の右から3つ目が専用ドングルです。
   PC/PS3/AndroidとなっておりPS3で使えるとなっています。

f:id:ken2017:20211215170541p:plain
このPS3で使えるということとPS3ゲームパッド互換は全く意味が違っていることに、この時は気づきませんでした。
ネットを調べまくるうちにゲームパッドの情報をオンラインで調べてくれるサイトを見つけ、そこで調べた結果、僕が持っているゲームパッドは、メーカがShanwanというところのものだということが判りました。
Vendor IDが2563でProduct IDが0575のShanwanPs3PcGamepadとなっていました。
ちなみにVendor IDとProduct IDのリストもありましたのでリンクを添付しておきます。

A list of vendor and product IDs for known USB and Bluetooth gamepad devices · GitHub

Vendor IDとProduct IDが判ったまではいいのですが、そこから前に進めません。
悩んで悩んでネットを調べていると下の記事を見つけました。

kato-h.cocolog-nifty.com

気になった記載がコレ。
USBホストシールドに専用のUSB無線レシーバーを使っているというものです。
これで使えたという記事です。

f:id:ken2017:20211215172357p:plain

光が見えてきました。
この記事には、専用レシーバーの情報を調べるためのツールも載っていました。
それがコレ。

infinitegra.co.jp早速ダウンロードして調べてみました。
その結果、僕のゲームパッドは上の記事にあるゲームパッドのF710と同じHIDデバイスとして定義されているものでした。
調べた結果がコレです。
ShanWan PC/PS3/Android _HIDという記載が見えます。

f:id:ken2017:20211215173025p:plain
より詳しく情報を見ていったものがコレです。

f:id:ken2017:20211215173227p:plain

f:id:ken2017:20211215173316p:plain

HIDとはヒューマンインタフェースデバイスのことで概要は以下の記事にありました。

docs.microsoft.com

そういえばUSB Host Shield Library2.0のライブラリー群の中にHIDフォルダーがありました。
記事によるとHIDフォルダーの中のUSBHIDJoystickが使えそうな感じでした。
DirectInputモードで使えば使えるようなことが書いてあります。
DirectInputモードってなんだ?と思って調べるとモードの切り替え方が書いてありました。

mashigure.hateblo.jp

でも、僕のゲームパッドではDirectInputモードのLED配置にはなりませんでした。
まあいいか、と思い、兎に角繋いでみようと、Arduino UnoにUSBHIDJoystick.inoをインストールして動かしてみました。
するとArduino IDEのシリアルモニタに
Start
の表示は出ましたが、ゲームパッドを動かしても何も変化せず。
これもダメか、とは思いましたが、ひょっとしてと思い、ゲームパッドのHOMEボタンを長押しして赤いLEDが2個つくようにしました。

f:id:ken2017:20211215175957j:plain
そしてゲームパッドを動かしてみると、なんとシリアルモニタにゲームパッドからの情報が表示され始めました。
それがコレ。

f:id:ken2017:20211215180434p:plain
やっと動きました。
いよいよ残りの作業は、Zumo Robotへの搭載です。
今日はココまで。
では、また。

(参考資料)
Jetracer Pro

f:id:ken2017:20211215160036j:plain

www.waveshare.com

 



プライバシーポリシー お問い合わせ