2017/08/30

wiiコントローラ(ぱちもん)の USB 化


 ファミコンもどき、スーファミもどきの両ゲームパッドの調子が悪いので、wii 用のぱちもんコントローラを、USB 化した。ノートPCと短いケーブルで使いたかったので、Arduino は、中に埋め込んだ。

 そのものズバリのサンプルがあったので、作業は簡単。市販のコントローラと違って割り当てを自由にプログラムできるのが最大の利点。

 アナログスティックがついているので、スーファミのぱちもんの倍ぐらいの値段(700円くらい)なのも妥当か。プラスチックの支えがあるので、意外とまともに使える気がする。純正のコントローラは、もう買えないみたいだし、最近のゲーム機のコントローラは、無線化していて高いし、微妙なんだよね。



 元のプログラムは、スタンダードな配列と、XBOX的な配列とを、HOMEボタンで、切り替えられるようになっている。Pro Micro 自体には、13番ポートのLED は付いていないので、別途、追加した。点灯したら、特定のゲームに合わせた特殊な配列、無点灯なら、通常コントローラとして機能するよう設定した。

2017/08/17

2.4 GHz 無線モジュール その3「プレステ2のコントーローラ」


 格ゲー用のプレステ・コントローラは、接続に成功したので、次はプレステ2のコントーローラ。2つで700円のジャンクなので、全く認識しなかったらどうしよう、というか、壊れているのか、接続の仕方が間違っているのか、判断つかないから困るわけで、引きが悪いと両方ハズレな可能性もないわけでもないが。

 とりあえず、無線化以前に、Arduino に認識させないといけない。このコントローラを使った Arduino の作例は、ネットに色々とあり、ライブラリも用意されていた。接続は、下記4ピン+電源を繋ぐだけ。DATAピンだけは、プルアップする必要があった。振動機能は、不要なので省略。
GitHub
  madsci1016/Arduino-PS2X PS2 controller Arduino Library

 プレステのと違うのは、アナログのスティックが2つ付いている点だが、元々、アナログのコントローラのゲームとかやったこともないので、どう動くのが正しいのか不明。左スティックは、XYなのは分かるが、右は? 馬鹿正直に、取得したデータをそのまま送ればいいのか? ある程度調整した値を送るのか? この辺は要調査。

 ボタンはキチンと動いているようだし、仕組みとして作成可能なのは分かった。送信、受信と2セット分作業するわけだが、単純にワイヤレス仕様のコントローラをベースにすれば、受信側だけを作ればいい。

 というか、そもそも、新品の無線コントローラが、1000円台で買えるのに、わざわざ面倒なことする必要は無い。これは、あくまでも実験であって、作業してみないことには、本当の意味での勉強にはならないと思うのだよ。本やネットを見ただけで理解したと勘違いしがちなんだ。

※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2017/08/14

2.4 GHz 無線モジュール その2「互換性無しの別物だった」


 基板上に、四角いチップが見えない安い無線モジュールは、SE8R01 とかいうやつみたい。買った時は、nRF24L01 って書いてあったと思ったが、パチモンでも同じように動くのならば問題も無いが、別物では、素人には手も足も出ない。幸いサンプルをネットにあげてくれている人がいて、ゴミにならずに済んだ。
Semitek SE8R01
  SE8R01_DataSheet_v1 - 副本.pdf
Nerd Ralph
  SE8R01 2.4Ghz wireless modules
Arduino Forum
  Finally Working code for se8r01(similar nrf24l01) サンプルプログラム

 送信側、Pro Mini 3.3V を使用。受信側は、davinci 32U を使っているので、3.3Vに下げる必要がある。モジュールとは、SPI通信、適当なピンに割り振ればいい。

 送信側に、プレステのコントローラを接続。無線で入力データを受信側に送り仮想コントローラとして機能させる。簡単に言えば、オリジナルな、ワイヤレスコントローラが作れる。同じように、ワイヤレスな仮想キーボードや、仮想マウスなんかも出来そう。ミソは、これらの入力は、ハードウェアレベルってこと。

※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2017/08/11

2.4 GHz 無線モジュール その1「全く動かず」


 爪サイズの nRF24L01 無線モジュール。433Mhzのは、出力弱すぎて話にならなかったので、2.4 GHz 版。表面実装用じゃない普通のやつは、ESP-01と同じ 4x2列のピンで、扱いにくい。で、一列のやつを入手したのだが、1.27mm ピッチだった。標準は、2.54mm ピッチだから半分か。デジカメだとクッキリだが、実際は、ルーペで見ても良くわからない。

 老眼でよく見えないのは、ともかく。手もプルプルする(笑)ので、問答無用で、クリーム半田。適当に乗っけて、コテを当てるだけでくっつく。

 ゲタ履かせて、ようやく下準備完了。手間を考えると、普通のにするべきだった。最終的な組み込みするときには、コンパクトでいいかもしれないが。

 で、つないでみたが、全く動かず(笑)。Pro Mini 3.3v / 5v / DaVinci32U4 と色々と変えてやってみたが、ピクリともしない。諦めかけて、何気に検索してたら、どうやらnRF24L01 として一般的なものとは、種類がそもそも違うらしい。なんじゃそれ。

※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2017/08/06

digispark clone 赤外線レシーバ

 Atmel の、Attiny85 にUSB接続出来るようにした指先サイズのマイコンボード。Bootloader は、micronucleus が書き込んであった。一応、Arduino IDE からも使える。受光素子を追加して、赤外線入力を、そのままキーボード入力に変換させてみたが、ウチの環境では、少々、不安定。コンパクトかつ、実質USBキーボード扱いであるから Linux 等でも動かせるのは良い。

 ロジクールの無線マウスの USBドングルと、相性悪いようなので、ハブ経由で接続した。元々、書き込み毎に、再接続する必要があるので、digispark の MicroUSB コネクタは、接続ケーブルを繋ぎっぱなしにして、抜き差しは、ハブ側の通常USBコネクタで行う事。Micro USB で、抜き差しを繰り返すと、半田剥がれする可能性大です。
参考リンク
  DIY USB IR Receiver instructables 赤外線リモコン用レシーバ
  Connecting and Programming Your Digispark Digistump Wiki 導入手順