BlueRetroとは何か
BlueRetroはレトロゲーム機に最新の無線コントローラーをなんでも接続できるようにするオープンソースのプロジェクトのようです。
現代のBTリモコン -> BlueRetro! -> 多様なレトロゲーム機
と接続します。
過去と未来を一点でつなぐ最高のソリューションです。
最初は、通販で買ってドングルみたいに使う便利グッズ...という程度の認識しかなかったのですが、少し調べたら全然違いました。
このリソースを利用できれば自作のロボットや体感ゲームなどのハードウェア開発系のリモコン環境が一気に楽になるかもしれない!ということで、少しだけ導入を試してみます。
準備物・実施環境
- ESP32DevkitC
- Windows10
ファームウェアの準備
まず公式サイトに行ってみます。
BlueRetroのハードウェアはESP32のようで、ESP32DevkitCにファームウェアを書き込んでBlurRetro化することができるようです。
下記のリンク↓から作業を進めていきます。
サポートページの指示に従い、↓でファームウェア本体をDLします。
vx.x.x_hw1.zipというファイルが今回のターゲットです。
hw2というのがありますが、これは強化されたバージョン2的なもののようでうs。
ファームウェアの書き換え
Espressif公式↓からFlash Download ToolsなるものをDLして展開します。
先ほどのサイトのサポートページに戻ります。
下図のように画面の指示に従って4つのファイルを選択し、書き込み設定をします。0x1000などのアドレスを間違わないようにしましょう。
COMポートの選択で迷いがちですが、ESP32DevkitCの接続前に画面下のCOMポートをチラ見しておき、接続後にCOMポートを見た時に増えているポートを選べばOKです。
Startを押してプログレスバーを待てば書き込みが完了です。

いざ接続
ESP32DevkitCに電源が入った状態で、Bootボタンを押します。3秒長押しでペアリングモードのようです。リモコン側のペアリングボタンを押せば接続確立!
...のはずでしたが、どちらのボタンをどういうタイミングで押すとペアリングしやすかのコツがいまいちわかりませんでした。wiiリモコンは接続できたものの、PS4リモコンはなかなか接続が確立せず。
ちなみにリモコンは16個ぐらいまで覚えてくれるそうなので、一回ペアリングできれば次からのペアリングは電源投入のみでいけそうです。
PS4リモコンの接続のために以下の方法に進みました。
設定はブラウザでblueretro.io
ここからがなかなかすごいのですが、ファームウェアアップロード後のもろもの設定はブラウザからBluetooth経由で行うシステムです。
Blueretro.ioというサイトにBluetooth搭載のスマホやPCでアクセスします。自分はMacBookAir+Chromeでアクセスして作業しました。
ファームウェアの書き換えまでBT経由でできるということで、ESP32本来のポテンシャルを十分に引き出したすごい使い方です。
ボタンの出力種類の設定などもいろいろできるようです。
まずはこのサイトを活用してPS4リモコンの接続先の固定に挑戦してみます。
blueretroのBT_MACアドレスを調べる
PS4リモコンの相手となるESP32のBT_MACアドレスが必要になりますが、このサイトで調べられるようです。

適当な項目、たとえばBlueRetro System Managerを選びます。
「Connect BlueRetro」ボタンを押すとESP32がリストにアップされるので選択します。

接続が確立すると画面にBT_MACアドレスが表示されます。これをメモします。
SixaxisPairToolでPS4にアドレスを書き込む
「SixaxisPairTool」というWindows用のツールを使います。ネット検索するとすぐに見つかるのでDLして実行します。PS4リモコンをPCにUSBで接続し、アドレスを書き込みます。
接続のリベンジ
再びEPS32を電源に繋ぎ、PS4リモコンのPSボタンでペアリングします。
今度は双方の電源を入れるだけで接続が確立しました。

普通の使い方
あとはこのリモコン受信機のピンをゲーム用にピンアサインして接続すればレトロゲーム機用の最新コントローラの出来上がりです。アタリや光速船、スーカセなど新しいリモコンで操作を楽しみたいゲーム機がいろいろあります^^
どう使う?
汎用GamePad出力というようなものも用意されているようなので、それをTeensyなどで高速に受信できるようにすればBlueRetro側を無改造のまま使えて便利そうです。
ライブラリさえ見つかれば難しくはなさそうなので、時間を見つけてためそうと思います。