PS2コントローラをArduino系ボードで使う

やりたいこと

ワイヤレスのプレステ2コントローラおよびその互換品 (以下、PS2コントローラ) をArduinoマイコンボードにつないで使いたい。たとえばロボットを操縦するコントローラとして。

インターフェース

PS2コントローラはSPIインターフェースで通信できるらしい。GPIOでパタパタして通信してる例も見られる。

とりあえず

上記のArduino-PS2X (PS2Xlib)を、GR-CITRUSで使ってみた。GR-CITRUSはRXマイコンベースのArduinoマイコンボードで、Arduino IDEからフォークした独自のIDE for GRが使用できる。しかし、PS2Xlibのサンプルスケッチをビルドしてみたところ、エラーが発生。アーキテクチャ依存部分のエラーだったので、修正版を本家からフォークした。
github.com
デジットで売ってた「無線コントローラキット」(どう見てもPS2コントローラで、受信器からジャンパ線が引き出されている)をGR-CITRUSに接続して動作を確認。アナログスティックの入力が上手くとれないが、いちおう動いた。
f:id:licheng:20190101165823j:plain:w500

ホビーロボット界隈でよく使われるPS2コントローラ互換品としては、ヴイストンのVS-C3がある。受信器が小型なのでロボットに組み込むには有利。

課題

  • SPIインターフェースを使用したライブラリを自作したい
  • なるべく非同期なAPIにしたい。(待ちを発生させないように)
  • アナログスティックの動作について要調査